Frage

Möchten mit WSDualHttpBinding für Duplex-Rückrufe in realen Szenarien arbeiten? Sagen Sie, ich habe eine .NET-Anwendung, die einen zufälligen Port verwendet, würde der Dienst der Lage sein, die Client-Basis-Adressen und Port für Rückrufe zu lösen?

War es hilfreich?

Lösung

Eine vollständige Antwort auf Ihre Frage ist abhängig von dem „realen Szenario“ entweder ein Intranet oder ein Internet-Szenario zu sein. Obwohl WSDualHttpBinding in beiden Szenarien funktioniert gibt es Besonderheiten bewusst sein:

Intranet

WSDualHttpBinding arbeiten mit Ihrer .NET-Anwendung eines vorkonfigurierten benutzerdefiniert Port in einem Intranet-Szenario mit und „Ja“, wird der Dienst der Lage sein, die Client-Basis-Adressen und Port für Rückrufe zu beheben: genau, wie unten erläutert wird. Der Grund, es zu erklären ist unten ist, dass WSDualHttpBinding wird in erster Linie über das Internet verwendet wird entwickelt, um.

Duplex-Rückrufe in einem Intranet-Szenario, wenn Sie Client und Server auf WCF verwenden können, wird am besten durch die Verwendung NetTcpBinding oder NetNamedPipeBinding erreicht. Diese Bindungen verwenden TCP und ICP jeweils als Transport (statt HTTP) und eine benutzerdefinierte binäre Codierung, weshalb WCF auf beiden Seiten erforderlich ist. Für Anrufe, zurück an den Client verwendet die gleichen Kanal auf den Dienst über die Bindung an eine Verbindung wiederverwendet wird, ohne einen neuen Port erforderlich geöffnet werden.

Internet

In einem Internet-Szenario gültigen HTTP-Anfragen und Antworten nur in eine Richtung bewegen, HTTP ist als ein One-Way-Protokoll. Wenn daher die WSDualHttpBinding WCF Verwendung erzeugt einen separaten Kanal für HTTP Rückrufe. In Antwort auf Ihre zweite Frage: die Zieladresse für diesen Rückruf an den Client der Client-Maschine Hostnamen zusammengesetzt und standardmäßig Port 80. Wenn der Kunde eine Entwicklungsmaschine zum Beispiel ist und IIS installiert ist, wird Port 80 ausschließlich in einigen Szenarien reserviert, die Konflikte mit dem Prototyp-Anwendung verursacht. Dies ist, was dieses Blog-Post eine Lösung präsentiert und was die ClientBaseAddress Eigenschaft ist so konzipiert, mit zu helfen. Unabhängig davon, welche Port Sie gehen mit -. Standard oder ein eigenen, müssen Sie sicherstellen, dass alle Firewalls und Router auf beiden Seiten richtig konfiguriert sind, damit sowohl der abgehende Kanal und der separate Callback-Kanal festgelegt werden

Eine .NET-Anwendung kann auch eine Silverlight-Anwendung bezeichnen. Aufgrund der Tatsache, dass eine Silverlight-Anwendung in einem Browser ausgeführt wird nicht neu eingehende HTTP-Verbindungen annehmen kann, WSDualHttpBinding mit seinem separaten Rückkanal wird nicht funktionieren. Daher wurde PollingDuplexHttpBinding erstellt zunächst in Silverlight 2, die als klug ‚Trick‘ dachte sich um die Tatsache erhalten werden kann, dass HTTP, indem die Anforderungskanal offen für eine lange Zeit (lange Polling) und dessen Verwendung als Rückkanal unidirektional ist für an den Client ruft zurück. Dies hat eine Reihe von Auswirkungen sowohl auf der Client- und Server-Seite besonders relevant für die Skalierung, für weitere Einzelheiten finden Sie unter dieser Beitrag aus meinem Blog .

Mit einer Vorstellung von Ihrer speziellen „real-world-Szenario“ und Ihre Anwendungsfälle hoffentlich dies wird Ihnen helfen, arbeiten die richtige Bindung für Duplex-Rückrufe zu verwenden.

Andere Tipps

Wenn es eine Anwendung hinter einer Firewall ist, theoretisch ja. Es hängt davon ab, was Sie unter „realen Welt“ bedeuten; wenn durch, dass Sie „High Performance“ bedeutet vielleicht NetTcpBinding ist eine bessere appraoch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top