(0) exportieren Drucken
Alle erweitern

Service Bus-Bindungen

Letzte Aktualisierung: Juni 2014

Das SDK enthält eine Sammlung von WCF-Bindungen, die die Integration Ihrer WCF-Dienste und -Clients in den von Microsoft Azure Service Bus bereitgestellten Relaydienst automatisieren.In den meisten Fällen müssen Sie nur die aktuell verwendete WCF-Bindung durch eine der Servicebus-Bindungen des Typs "Relay" ersetzen.

Die folgende Tabelle listet alle Servicebus WCF-Bindungen sowie die WCF-Standardbindungen auf, denen sie entsprechen.Die am häufigsten verwendeten WCF-Bindungen, z. B. System.ServiceModel.BasicHttpBinding, WebHttpBinding, System.ServiceModel.WS2007HttpBinding, und System.ServiceModel.NetTcpBinding, verfügen alle über eine entsprechende Servicebus-Bindung mit einem sehr ähnlichen Namen (fügen Sie einfach "Relay" vor "Binding" ein).Es gibt nur wenige neue Relaybindungen – Microsoft.ServiceBus.NetOnewayRelayBinding und Microsoft.ServiceBus.NetEventRelayBinding –, für die keine entsprechende WCF-Bindung vorhanden ist.

 

WCF-Standardbindung Entsprechende Relaybindung

System.ServiceModel.BasicHttpBinding

Microsoft.ServiceBus.BasicHttpRelayBinding

System.ServiceModel.WebHttpBinding

Microsoft.ServiceBus.WebHttpRelayBinding

System.ServiceModel.WS2007HttpBinding

Microsoft.ServiceBus.WS2007HttpRelayBinding

System.ServiceModel.NetTcpBinding

Microsoft.ServiceBus.NetTcpRelayBinding

Nicht verfügbar

Microsoft.ServiceBus.NetOnewayRelayBinding

Nicht verfügbar

Microsoft.ServiceBus.NetEventRelayBinding

Die Relaybindungen funktionieren auf ähnliche Weise wie die WCF-Standardbindungen.Sie unterstützen z. B. die verschiedenen WCF-Nachrichtenversionen (SOAP 1.1, SOAP 1.2 und Keine), die verschiedenen WS-*-Sicherheitsszenarien, zuverlässiges Messaging, Streaming, Metadatenaustausch, das Webprogrammiermodell (z. B. [WebGet] und [WebInvoke]) sowie zahlreiche weitere WCF-Standardfunktionen.Nur wenige WCF-Funktionen werden nicht unterstützt, z. B. atomarischer Transaktionsfluss und Authentifizierung auf Transportebene.

Wenn Sie mit der Funktionsweise von WCF vertraut sind, interessiert Sie ggf., wie die neuen Bindungen (die weiter oben in diesem Thema genannt wurden) den zugrunde liegenden WCF-Transportbindungselementen zugeordnet sind.Die folgende Tabelle gibt das jeweilige Transportbindungselement für jede Relaybindung an.Wie Sie sehen können, enthält das SDK mehrere neue WCF-Transportbindungselemente, z. B. Microsoft.ServiceBus.HttpRelayTransportBindingElement, Microsoft.ServiceBus.HttpsRelayTransportBindingElement, Microsoft.ServiceBus.TcpRelayTransportBindingElement und Microsoft.ServiceBus.RelayedOnewayTransportBindingElement.

 

Relaybindung Transportbindungselement

Microsoft.ServiceBus.BasicHttpRelayBinding

Microsoft.ServiceBus.HttpRelayTransportBindingElement

Microsoft.ServiceBus.HttpsRelayTransportBindingElement

Microsoft.ServiceBus.WebHttpRelayBinding

Microsoft.ServiceBus.HttpRelayTransportBindingElement

Microsoft.ServiceBus.HttpsRelayTransportBindingElement

Microsoft.ServiceBus.WS2007HttpRelayBinding

Microsoft.ServiceBus.HttpRelayTransportBindingElement

Microsoft.ServiceBus.HttpsRelayTransportBindingElement

Microsoft.ServiceBus.NetTcpRelayBinding

Microsoft.ServiceBus.TcpRelayTransportBindingElement

Microsoft.ServiceBus.NetOnewayRelayBinding

Microsoft.ServiceBus.RelayedOnewayTransportBindingElement

Microsoft.ServiceBus.NetEventRelayBinding

Microsoft.ServiceBus.RelayedOnewayTransportBindingElement

Diese neuen WCF-Primitiven stellen letztlich die Kanalintegration auf niedriger Ebene zur Verfügung, während der Relaydienst im Hintergrund ausgeführt wird. Diese Details bleiben jedoch hinter der Bindung verborgen.In den folgenden Abschnitten werden die Details der WCF-Relayhauptbindungen und deren Verwendung erläutert.

NetMessagingBinding

Die Bindung NetMessagingBinding kann von für WCF aktivierten Anwendungen zum Senden und Empfangen von Nachrichten über Warteschlangen, Themen und Abonnements verwendet werden.Weitere Informationen finden Sie unter NetMessagingBinding.

NetOnewayRelayBinding

NetOnewayRelayBinding ist die eingeschränkteste aller Relaybindungen, weil sie nur unidirektionale Nachrichten unterstützt.Sie ist jedoch auch für dieses Szenario besonders optimiert.Standardmäßig verwendet die Bindung NetOnewayRelayBinding SOAP 1.2 über TCP zusammen mit einer binären Codierung der Nachrichten, obwohl diese Kommunikationseinstellungen über die Bindungskonfigurations-Standardtechniken konfigurierbar sind.Dienste, die diese Bindung verwenden, müssen immer das Protokollschema "sb" verwenden.

Wenn diese Bindung in der Standardkonfiguration verwendet wird, versucht der lokale WCF-Dienst, eine ausgehende Verbindung mit dem Relaydienst herzustellen, um einen bidirektionalen Socket zu erstellen.In diesem Fall wird immer eine sichere TCP/SSL-Verbindung über den ausgehenden Port 9351 hergestellt. Während des Verbindungsvorgangs führt der WCF-Dienst die Authentifizierung aus (durch Bereitstellen eines von Zugriffssteuerung abgerufenen Tokens), gibt den Namen an, für den die Überwachung im Relaydienst ausgeführt wird, und informiert den Relaydienst, welcher Typ von Listener erstellt werden soll.Wenn ein WCF-Client diese Bindung in der Standardkonfiguration verwendet, wird abhängig von der Bindungskonfiguration eine TCP-Verbindung mit dem Relay über den Port 9350 (TCP) oder 9351 (TCP/SSL) hergestellt.Während des Verbindungsvorgangs muss die Authentifizierung mit dem Relay durch Bereitstellen eines von Zugriffssteuerung abgerufenen Tokens ausgeführt werden.Nachdem der Client erfolgreich eine Verbindung hergestellt hat, kann er mit dem Senden unidirektionaler Nachrichten an Servicebus beginnen, die mittels "Relay" an den lokalen Dienst über seine TCP-Verbindung weitergeleitet werden.

Wenn Sie die Bindungssicherheitsmodus-Eigenschaft NetOnewayRelayBinding auf Transport festlegen, erfordert der Kanal SSL-Schutz.In diesem Fall wird der gesamte Datenverkehr, der an dem und vom Relaydienst gesendet wird, über SSL geschützt. Es muss jedoch unbedingt beachtet werden, dass die Nachricht den Relaydienst unverschlüsselt durchläuft.Wenn Sie vollständigen Datenschutz sicherstellen möchten, sollten Sie den Message-Sicherheitsmodus verwenden. In diesem Fall können Sie alles mit Ausnahme der Adressinformationen in der Nachricht verschlüsseln, die den Relaydienst durchläuft.

Die Bindung NetOnewayRelayBinding erfordert, dass alle Vorgänge für den Dienstvertrag als unidirektionale Vorgänge markiert werden (IsOneWay=true).Wenn dies der Fall ist und Sie diese WCF-Bindung verwenden möchten, geben Sie sie für Ihre Endpunktdefinitionen an und stellen die erforderlichen Anmeldeinformationen zur Verfügung.

Systemverbindungsmodus

Wenn die Bindung NetOnewayRelayBinding verwendet wird, stellt der lokale WCF-Dienst standardmäßig über TCP eine Verbindung mit dem Relaydienst her.Wenn Sie in einer Netzwerkumgebung arbeiten, die keine ausgehenden TCP-Verbindungen über HTTP(s) hinaus ermöglicht, können Sie die verschiedenen Relaybindungen so konfigurieren, dass ein aggressiverer Verbindungsmodus verwendet wird, um diese Einschränkungen zu umgehen.Dies wird durch das Konfigurieren des lokalen WCF-Diensts zum Herstellen einer HTTP-Verbindung mit dem Relaydienst ermöglicht (anstelle einer TCP-Verbindung). Servicebus bietet eine systemweite ConnectivityMode-Einstellung, die Sie mit einem der folgenden drei Werte konfigurieren können:Tcp, Http und AutoDetect (weitere Informationen finden Sie in der folgenden Tabelle).Wenn Sie sicherstellen möchten, dass Ihre Dienste Verbindungen über HTTP herstellen, legen Sie diese Eigenschaft auf Http fest.

 

ConnectivityMode Beschreibung

Tcp

Dienste stellen TCP-Verbindungen mit dem Relaydienst über den Port 9351 (SSL) her.

Http

Dienste stellen eine HTTP-Verbindung mit dem Relaydienst her, die es vereinfacht, die Einschränkungen des TCP-Ports zu umgehen.

AutoDetect (Standardeinstellung)

Dieser Modus wählt basierend auf einem automatischen Erkennungsmechanismus, der prüft, ob beide Verbindungsoptionen für das aktuelle Netzwerk verfügbar sind, und Tcp bevorzugt, automatisch zwischen den Modi Tcp und Http aus.

AutoDetect ist der Standardmodus. Dies bedeutet, dass die Relaybindungen automatisch ermitteln, ob TCP oder HTTP für das Herstellen einer Verbindung zwischen dem lokalen Dienst und dem Relaydienst verwendet wird.Wenn TCP für die vorliegende Netzwerkkonfiguration möglich ist, wird dieser Modus standardmäßig verwendet (es wird also versucht, TCP zu verwenden, indem eine PING-Nachricht an eine Verbindungen erkennende URL gesendet wird).Wenn für die TCP ein Fehler auftritt, wird automatisch in den HTTP-Modus gewechselt.In den meisten Fällen müssen Sie diese Eigenschaft daher nicht ausdrücklich festlegen, weil das Standardverhalten "automatische Erkennung" das Verhalten für Sie festlegt.Sie müssen diese Eigenschaft nur dann ausdrücklich festlegen, wenn Sie TCP oder HTTP durchsetzen möchten.

Sie können den Verbindungsmodus auf Anwendungsdomänenebene über die statische Klasse ServiceBusEnvironment festlegen.Sie stellt eine Eigenschaft SystemConnectivity zur Verfügung, in der einer der drei weiter oben in diesem Abschnitt genannten ConnectivityMode-Werte angegeben werden kann.Der folgende Code zeigt, wie eine Anwendung so geändert wird, dass der HTTP-Verbindungsmodus verwendet wird:

...
ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;
ServiceHost host = new ServiceHost(typeof(OnewayService), address);
host.Open();
...

Die Einstellungen für den Systemverbindungsmodus werden für alle Relaybindungen wirksam.

NetEventRelayBinding

NetEventRelayBinding ist der Bindung NetOnewayRelayBinding in der Art ihrer Implementierung sehr ähnlich.Die Standardeinstellungen und Sicherheitsoptionen der Bindung sind mit denen für NetOnewayRelayBinding identisch.Außerdem stimmen die Interaktionsmechanismen zwischen Clients und Diensten und dem Relaydienst grundsätzlich überein.Tatsächlich wird die Klasse NetEventRelayBinding von NetOnewayRelayBinding abgeleitet.

Der Hauptunterschied in der Bindung NetEventRelayBinding besteht darin, dass mit ihr mehrere WCF-Dienste mit der gleichen Servicebus-Adresse registriert werden können.Wenn ein Client eine Nachricht an eine solche Adresse sendet, übermittelt der Relaydienst die Nachricht mithilfe von Multicast an alle lokalen WCF-Dienste, die diese Adresse zurzeit abonniert haben.

Die Bindung NetEventRelayBinding unterstützt die gleichen SystemConnectivity-Optionen wie NetEventRelayBinding.Wenn Sie die Eigenschaft SystemConnectivity für die Klasse ServiceBusEnvironment konfigurieren, wird sie für alle Endpunkte wirksam.Daher können Sie den aggressiven HTTP-Verbindungsmodus für alle Ihre lokalen NetEventRelayBinding-Endpunkte verwenden, wenn diese in einer gesperrten Netzwerkumgebung gehostet werden, die ausgehende TCP-Verbindungen blockiert.

NetTcpRelayBinding

Die Bindung NetTcpRelayBinding unterstützt bidirektionale Messagingsemantik und lehnt sich eng an WCF-Standardbindung NetTcpBinding an – der Hauptunterschied besteht darin, dass NetTcpRelayBinding einen öffentlich erreichbaren TCP-Endpunkt im Relaydienst erstellt.

Die Bindung NetTcpRelayBinding unterstützt standardmäßig SOAP 1.2 über TCP und verwendet aus Effizienzgründen binäre Serialisierung.Ihre Konfiguration ähnelt stark der Konfiguration von NetTcpBinding, die zugrunde liegenden TCP-Socketschichten unterscheiden sich jedoch und sind daher nicht direkt miteinander kompatibel.Dies bedeutet, dass Clientanwendungen auch für die Verwendung von NetTcpRelayBinding konfiguriert sein müssen, damit die Integration erfolgen kann.

Zuerst stellt der lokale WCF-Dienst eine sichere ausgehende TCP-Verbindung mit dem Relaydienst her.Während dieses Vorgangs muss die Authentifizierung erfolgen sowie eine zu überwachende Adresse und der Typ des im Relay zu erstellenden Listeners angegeben werden.Bis zu diesem Punkt ähnelt die Bindung sehr der Bindung NetOnewayRelayBinding.Wenn eine Nachricht auf einem der Front-End-Knoten eingeht, wird eine Steuerungsnachricht an den lokalen WCF-Dienst weitergeleitet, die angibt, wie eine Rendezvousverbindung zurück zum Front-End-Knoten des Clients erstellt wird.Auf diese Weise wird eine direkte Socket-zu-Socket-Weiterleitung für die Weiterleitung von TCP-Nachrichten mittels Relay eingerichtet.

Die Bindung NetTcpRelayBinding unterstützt zwei Verbindungsmodi (siehe TcpRelayConnectionMode), die steuern, wie der Client und der Dienst miteinander über den Relaydienst kommunizieren (siehe folgende Tabelle).

 

TcpConnectionMode Beschreibung

Relayed (Standardeinstellung)

Dies gesamte Kommunikation wird durch den Relaydienst mittels Relay weitergeleitet.Die durch SSL geschützte Steuerungsverbindung wird zum Verhandeln einer Relay-End-to-End-Socketverbindung verwendet, die die gesamte Kommunikation durchläuft.Sobald die Verbindung eingerichtet wurde, verhält sich der Relaydienst als Socketweiterleitungsproxy, der einen bidirektionalen Bytedatenstrom mittels Relay weiterleitet.

Hybrid

Die anfängliche Kommunikation wird durch die Infrastruktur des Relaydiensts mittels Relay weitergeleitet, während der Client und der Dienst eine direkte Socketverbindung untereinander verhandeln.Die Koordination dieser direkten Verbindung obliegt dem Relaydienst.Der Algorithmus für direkte Socketverbindungen kann direkte Verbindungen zwischen zwei Parteien einrichten, die sich hinter gegenüberliegenden Firewalls und NAT-Geräten befinden.Der Algorithmus verwendet nur ausgehende Verbindungen für Firewallausnahmen und stützt sich auf einen gegenseitigen Portvorhersagealgorithmus für NAT-Ausnahmen.Sobald eine direkte Verbindung hergestellt werden kann, wird die Relayverbindung automatisch ohne Nachrichten- oder Datenverluste in eine direkte Verbindung aktualisiert.Wenn keine direkte Verbindung hergestellt werden kann, durchlaufen die Daten weiterhin wie gewohnt den Relaydienst.

Der Relayed-Modus ist die Standardeinstellung, während der Modus Hybrid den Relaydienst anweist, eine direkte Verbindung zwischen dem Client und den Dienstanwendungen herzustellen.Aus diesem Grund müssen keine Daten das Relay durchlaufen.Dieser Modus wird als "hybrider" Modus betrachtet, weil er beginnt, Informationen mittels Relay über das Relay weiterzuleiten, während eine Aktualisierung auf eine direkte Verbindung versucht wird.Bei Erfolg wird ohne Datenverluste zu einer direkten Verbindung gewechselt.Kann keine direkte Verbindung eingerichtet werden, wird weiterhin der Relaydienst verwendet.Die Bindung NetTcpRelayBinding unterstützt außerdem die Funktion SystemConnectivity, wenn Sie den lokalen Dienst für das Herstellen einer Verbindung mit dem Relaydienst über HTTP konfigurieren müssen.Wenn Sie die Eigenschaft SystemConnectivity konfigurieren, wird sie für alle Endpunkte wirksam.Daher können Sie den aggressiven HTTP-Verbindungsmodus für alle Ihre lokalen NetTcpRelayBinding-Endpunkte verwenden, wenn diese in einer gesperrten Netzwerkumgebung gehostet werden, die ausgehende TCP-Verbindungen blockiert.

HTTP-Relaybindungen

Alle bisher beschriebenen Bindungen erfordern, dass die Clients WCF auf der Clientseite der Interaktion verwenden.Wenn Nicht-WCF-Clients in Ihre Servicebus-Endpunkte integriert werden müssen, können Sie die Relayweiterleitung von auf HTTP basierenden Nachrichten unterstützen, indem Sie eine der zahlreichen HTTP-Relaybindungen auswählen.

Servicebus stellt mehrere HTTP-Bindungen zur Verfügung – WebHttpRelayBinding, BasicHttpRelayBinding und WS2007HttpRelayBinding.Diese HTTP-Bindungen bieten eine größere Reichweite und umfangreichere Interoperabilität, weil sie jeden Client unterstützen können, der weiß, wie die Standardprotokolle verwendet werden, die von jeder dieser Bindungen unterstützt werden. WebHttpRelayBinding und BasicHttpRelayBinding bieten die größte Reichweite, auf HTTP/REST bzw. grundlegendem SOAP basieren.Die Bindung WS2007HttpRelayBinding kann zusätzliche Funktionsschichten über die WS-*-Protokolle bereitstellen.Wenn die Bindung WS2007HttpRelayBinding verwendet wird, müssen Clients die gleiche Suite der WS-*-Protokolle unterstützen, die für den Endpunkt aktiviert ist.

Unabhängig davon, welche HTTP-Relaybindung Sie verwenden, sind die Mechanismen der Vorgänge im Relaydienst weitgehend identisch.Der lokale WCF-Dienst aktiviert abhängig von der verwendeten ConnectivityMode-Einstellung zuerst eine TCP- oder HTTP-Verbindung mit dem Relaydienst.Der Modus ConnectivityMode funktioniert für alle HTTP-Relaybindungen auf die gleiche Weise.Clients beginnen dann mit dem Senden von Nachrichten an den HTTP-Endpunkt, der durch den Relaydienst bereitgestellt wird.Dies bedeutet, dass WCF auf dem Client nicht mehr erforderlich ist – jede mit HTTP/SOAP kompatible Bibliothek ist ausreichend. Wenn eine Nachricht auf einem der Front-End-Knoten eingeht, wird eine Steuerungsnachricht an den Dienst weitergeleitet, die angibt, wie eine Rendezvousverbindung zurück zum Front-End-Knoten des Clients erstellt wird.Auf diese Weise wird eine direkte HTTP-zu-Socket-Weiterleitung für die Weiterleitung der HTTP-Nachrichten mittels Relay eingerichtet.

Der Relaydienst weiß, wie SOAP 1.1-, SOAP 1.2- und unformatierte HTTP-Nachrichten (REST) transparent weitergeleitet werden.Sie steuern das Messagingverfahren und die verschiedenen WS-*-Protokolle, die verwendet werden sollen, indem Sie eine der HTTP-Relaybindungen so wie jede andere WCF-Bindung konfigurieren.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft