2017-02-16 3 views
1

Derzeit arbeite ich an einem alten Projekt zu migrieren, die WCF-Dienst implementiert und über Silverlight-Client konsumieren. Dieser WCF-Dienst verwendet die Duplex-Abfragemethode, die Silverlight automatisch versteht und mit der es umgehen kann. Daher wird ein neuer HTML-Client diesen Silverlight-Client ersetzen.Verwenden von SignalR mit einem Self-Host WCF und konsumieren den Hub-Proxy über HTML-Client

Nachdem ich einige Nachforschungen angestellt hatte, fand ich einige funktionierende Lösungen: die Verwendung von Long Polling Web API oder ähnliches, Unterstützung für WebSocket in der WCF durch .NET WebSocket Implementierung und die Verwendung von SignalR. Bis jetzt lehne ich mich mehr an SignalR, da ich die Änderungen an der WCF so weit wie möglich minimieren möchte.

Also wenn mein Verständnis korrekt ist, wenn es SignalR verwendet, wird es einen Hub-Proxy erstellen, der zwischen dem Dienst im Server und dem Client kommuniziert. Außerdem wird es den Transport für die Kommunikation übernehmen, in dem es WebSocket standardmäßig verwenden und auf andere Protokolle zurückgreifen kann, wenn WebSocket nicht im Browser unterstützt wird, und dies ohne die Implementierung des Protokolls im Dienst tun kann .

Meine Frage ist, dass, wenn ich SignalR mit meinem aktuellen WCF-Dienst verwenden möchte, was wären die Schritte, damit es funktioniert? Der WCF-Dienst ist ein Selbsthost, der als Windows-Dienst auf einem Server ausgeführt wird. Innerhalb des WCF-Dienstes habe ich verschiedene Endpunkte für Unterdienste sowie den aktuellen Endpunkt für den Silverlight-Client. Bis jetzt war ich in der Lage, Self-Host-SignalR mit dem WCF-Service-Projekt hinzuzufügen, und es läuft, aber ich bin mir nicht sicher, was der nächste Schritt wäre. Muss ich einen separaten Endpunkt für den SignalR-Hub hinzufügen?

Eine andere Frage ist, muss ich einige Änderungen an den Duplex-Diensten vornehmen, damit es mit SignalR funktioniert? Kann das Clientprojekt innerhalb des WCF-Dienstprojekts vom SignalR getrennt werden? Und schließlich, zu vergleichen, für WebSocket im WCF-Dienst zwischen dem Hinzufügen Unterstützung und Umsetzung nur SignalR, was man einen besseren Vorteil langfristig haben würde.

Danke.

Antwort

1

Net 4,5 hat NetHttpbinding in WCF eingeführt, die automatisch für WebSockets duplex Nachrichtenmuster verwendet und HTTP-Anfrage für Antwortnachricht Muster.

Mehr auf Nethttpbinding hier - https://msdn.microsoft.com/en-us/library/hh674273(v=vs.110).aspx

+0

ich nicht wusste ... –

+0

Ich weiß, dass sie die Unterstützung für WebSocket in neuester Version von .Net haben. Ich weiß nur nicht, ob es große Änderungen am aktuellen Code geben würde, um das zu unterstützen. Irgendwelche Ideen, wie man das macht? – Spincel

Verwandte Themen