2009-05-06 5 views
5

Ich frage mich, ob jemand dies versucht hat, um Ereignisse vom Server auf den Client zu bekommen. Ich habe eine Umgebung, die Unix-basierte Server verwendet und WCF-Duplex-/Callbacks etc. nicht verwenden kann.WCF Self-Hosting auf dem Client? Gut oder schlecht

Die Idee ist, dass meine Clients Windows-Boxen sind, die eine dicke .net-App laufen lassen, einen WCF-Selbst-Host hochfahren und ihren registrieren Self-Host-URL auf dem Server für diese Sitzung. Sie würden einen sehr einfachen Vertrag haben und der Server würde, wenn er ein Update hat, den Client-Server anrufen, der darauf hinweist, dass ein Update auf dem Server darauf wartet und der Client es dann usw. bekommt.

Ich versuche es immer noch Ich bin nicht sicher, ob dies ein guter Weg ist. Gibt es irgendwelche Sicherheitsimplikationen, um die ich mich kümmern sollte? Gibt es Möglichkeiten, die Duplex-Aufrufe plattformübergreifend zu nutzen?

Ich habe etwas Ähnliches vor der Verwendung von Sockets getan, oder vielleicht wäre eine plattformübergreifende Nachrichtenwarteschlange sowieso ein besserer Weg, dies zu tun.

Dank

76mel

Antwort

1

Am allerwenigsten, die wie es sich anhört sollte, arbeiten, obwohl ich Sie würde vermuten, als auch in IIS hosten könnte die * nix-Server konnte seitdem nur eine Web machen ruf an, oder? Ich bin nicht sicher, welches Selbsthosting Sie gewinnen würde, obwohl es gut funktionieren sollte, aber könnte ein bisschen mehr ein Schmerz im Ansatz sein, usw. zu konfigurieren

Bitte aktualisieren Sie hier, wenn Sie eine Entscheidung getroffen haben denn es klingt nach einer interessanten Herausforderung und einige von uns würden gerne sehen, wie du dich bemerkst.

+0

Ja, ich habe darüber nachgedacht, eine IIS-Mid-Tier ist eine großartige Idee. Mein Gedanke ist jedoch, dass wir 10.000 Clients haben und 1/3 davon gleichzeitig und so unterstützend, dass ein bisschen in IIS-Boxen kosten würde. Ich werde einen Proof of Concept aufarbeiten und werde Sie auf dem Laufenden halten, aber ich wäre dankbar, wenn jemand mehr Gedanken, Einsichten und Bedenken darüber hat, ob das eine gute Sache ist, wie TCP-Listener zu spinnen, warum nicht WCF Dienstleistungen. – 76mel

+0

Ok ich habe es versucht und alles funktioniert. Ich denke, das würde sehr gut für Projekte funktionieren, die sich innerhalb der Firewall befinden. Wenn Sie die Firewall überspannen möchten, ist die Verwendung eines Busses/Queue der bessere Weg, wenn Sie sich auf einer niedrigeren Ebene verbinden. Was ich hier gemacht habe, war ein einfacher Event-Vertrag, von dem der Unix-Server wusste. Ich habe den WCF-Dienst in einem Windows-Dienst ausgeführt, der sich zuerst beim Server mit seinem Endpunkt registriert. Der Server kann dann Ereignisse an meinem Endpunkt auslösen, und ich kann auf diese reagieren, indem ich Daten vom Server abrufe. – 76mel

+0

Ausgezeichnet! Das klingt nach einem coolen Blog-Artikel. –

1

Wir verwenden selbst gehosteten WCF für ein ähnliches Szenario. Wir wollten auch vermeiden, dass unsere Client-Anwendung von IIS abhängig gemacht wird, um Probleme bei der Lizenzierung und Bereitstellung zu vermeiden.

Es funktioniert ziemlich gut für uns, obwohl WCF für das, was Sie brauchen, übertrieben sein könnte. Da Sie HTTP verwenden, können Sie einen einfachen Webdienst erstellen, der direkt auf Http.sys basiert.

+0

Wäre der einfache Webservice auf http.sys einfacher zu schreiben und zu pflegen als mit WCF? Ich bezweifle das. –

+0

Ich habe nicht versucht, einen Webservice auf http.sys selbst zu implementieren, also kann ich nicht sicher sagen. Aber ich arbeite seit einiger Zeit mit WCF und fand es viel weniger flexibel als ich es mir gewünscht hätte. – dthrasher

+0

Haben Sie den Cassini-Webserver ausprobiert? – 76mel

1

Eine andere Möglichkeit, ähnliche Ergebnisse zu erhalten, könnte darin bestehen, den Client abfragen zu lassen. Dies hängt stark davon ab, welche Anforderungen es gibt. Wenn Sie ein Fast-Real-Time-Update benötigen, funktioniert das natürlich nicht, da Sie dazu viele Umfragen haben müssten. Wenn es jedoch in Ordnung ist, eine Minute oder länger zu warten, um Updates für den Client zu erhalten, ist die Abfrage möglicherweise einfach die Antwort.

Verwandte Themen