2017-02-10 3 views
0

Ich habe System wie folgt aus:WCF Duplex-Kanal für die Kommunikation zwischen Prozessen

Windows-Dienst (WCF, Daten/Ereignisse) < -> Web App < -> Web-Client

muss ich gleichzeitige Antwort für Kunden Anfragen. Ich habe einige Ereignisse vom Service für Klienten auch. Also Duplex-Kanal ist der Weg zu gehen. Aber ich brauche einen hohen Durchsatz, weil Clients gleichzeitig anrufen.

Request/Reply-Ansatz

Um Kanalanforderungen nicht zu serialisiert ich mehr Kanäle für die parallele Anrufe müssen, nicht wahr? Aber wie behandelt man den Callback-Kanal dann? Hält man es noch offen für den Empfang von Events, auch bei Kanalfehlern?

OneWay Ansatz

Auf Kanal sollte genug sein (keine für die Datenaufbereitung warten), aber, wie die Daten zu verknüpfen geschickt mit Original-Anfrage Rückruf zu können Antwort für die Kunden komponieren?

Wie ist der Weg zu gehen? Vielen Dank.

Antwort

0

Wenn ein Webclient eine Anforderung an die Webanwendung sendet und die Webanwendung (möglicherweise) eine Anforderung an den WCF-Dienst sendet, ist eine Duplexbindung nicht erforderlich.

Wie für Ereignisse, ausgelöst durch den Dienst in Web-Client ausgelöst werden, würde ich vorschlagen, eine message broker zu verwenden, die WebSockets unterstützt - zum Beispiel RabbitMQ. Es hat eine plugin kompatibel mit WebSockets und WCF binding.

Zusammengesetzt kann man einen RabbitMQ-Server erstellen, der Nachrichten vom WCF-Dienst annimmt und an den Web-Client sendet, der den Ereignis-Feed von Javascript abonniert.

+0

Es scheint mir ähnlich wäre, zweiten WCF-Dienst in der Web-Anwendung nur für den Empfang von Ereignissen von Windows-Dienst zu haben, sie an Clients mit SignalR (bereits in meiner Lösung verwendet). Keine schlechte Idee. :-) – Fanda

Verwandte Themen