Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bindungen sind Sammlungen spezieller Konfigurationselemente, die als Bindungselemente bezeichnet werden, die von der Dienstlaufzeit ausgewertet werden, wenn ein Client- oder Dienstendpunkt erstellt wird. Der Typ und die Reihenfolge der Bindungselemente innerhalb einer Bindung bestimmt die Auswahl- und Stapelreihenfolge des Protokoll- und Transportkanäles im Kanalstapel eines Endpunkts.
Bindungen, insbesondere die vom System bereitgestellten Bindungen, weisen in der Regel auch eine Reihe von Konfigurationseigenschaften auf, die die am häufigsten geänderten Eigenschaften der gekapselten Bindungselemente widerspiegeln.
Eine Bindung muss genau ein Transportbindungselement enthalten. Jedes Transportbindungselement impliziert ein Standardmäßiges Nachrichtencodierungsbindungselement, das überschrieben werden kann, indem der Bindung höchstens ein Nachrichtencodierungsbindungselement hinzugefügt wird. Zusätzlich zu den Transport- und Encoderbindungselementen kann die Bindung eine beliebige Anzahl von Protokollbindungselementen enthalten, die die für den Dienst erforderliche Funktionalität implementieren und eine SOAP-Nachricht von einem Endpunkt an einen anderen senden. Ausführliche Informationen finden Sie unter Verwenden von Bindungen zum Konfigurieren von Diensten und Clients.
Erweiterung von Bindungen und Bindungselementen
Windows Communication Foundation (WCF) enthält vom System bereitgestellte Bindungen, die eine vielzahl von Szenarien abdecken. (Weitere Informationen finden Sie unter System-Provided Bindungen.) Es kann jedoch vorkommen, dass Sie eine Bindung erstellen und verwenden müssen, die nicht in WCF enthalten ist. In den folgenden Szenarien ist die Erstellung einer neuen Bindung erforderlich.
Um ein neues Bindungselement (z. B. ein neues Transport-, Codierungs- oder Protokollbindungselement) zu verwenden, müssen Sie eine neue Bindung erstellen, die dieses Bindungselement enthält. Wenn Sie beispielsweise einen benutzerdefinierten
UdpTransportBindingElement
UDP-Transport hinzugefügt haben, müssen Sie eine neue Bindung erstellen, um sie zu verwenden. Informationen zum Ausführen dieses Verhaltens mithilfe des System.ServiceModel.Channels.CustomBinding Typs finden Sie unter "Benutzerdefinierte Bindungen".Zum Konfigurieren vorhandener Bindungselemente, sodass die vom System bereitgestellten Bindungen nicht auf öffentlichen Eigenschaften verfügbar gemacht werden. Sie müssen beispielsweise eine neue Bindung erstellen, um die Reihenfolge zu ändern, in der Signier- und Verschlüsselungsvorgänge ausgeführt werden. Informationen zum Durchführen dieses Verhaltens finden Sie unter: Vorgehensweise: Anpassen einer vom System bereitgestellten Bindung.
So richten Sie Unternehmensstandardbindungen ein, die nur bestimmte Konfigurationsoptionen verfügbar machen. Wenn Sie beispielsweise für Ihr Unternehmen eine Variante der WSHttpBinding Für Ihr Unternehmen erstellen möchten, bei der sicherheit nicht deaktiviert werden kann, erstellen Sie eine neue Bindung, die sich wie die WSHttpBindingverhält, aber mit Sicherheit immer aktiviert ist. Ausführliche Informationen finden Sie unter Creating User-Defined Bindings.
Zum Ausführen einiger Anpassungen von Metadaten, in der Regel jedoch nicht unbedingt zum Konfigurieren oder Verwenden eines benutzerdefinierten Bindungselements. Weitere Informationen zum Bereitstellen von Metadatenunterstützung für Bindungen und Bindungselemente finden Sie unter Konfigurations- und Metadatenunterstützung.
Kanäle, Bindungen und Bindungselemente
Bindungen und Bindungselemente sind die Verbindung zwischen dem Anwendungsprogrammiermodell, das die Attribute und Verhaltensweisen enthält, und dem Kanalmodell, das die Fabriken und Listener, Nachrichtenkodierer sowie Transport- und Protokollimplementierungen umfasst. In der Regel werden Bindungselemente und Bindungen implementiert, damit Kanäle von der Anwendungsschicht verwendet werden können.
Die Kanalschicht übergibt nachrichten an und von der Dienstschicht und transportiert diese Nachrichten zwischen Endpunkten. Auf einem Client ist die Kanalschicht ein Stapel von Kanalfabriken, die Kanäle zu einem Netzwerkendpunkt erstellen. Bei einem Dienst handelt es sich bei der Kanalebene um einen Stapel von Kanallistenern, die kanäle akzeptieren, die an einem Netzwerkendpunkt empfangen wurden.
Es gibt zwei allgemeine Arten von Kanälen: Protokollkanäle und Transportkanäle. Transportkanäle sind für die tatsächliche Übertragung einer Nachricht von einem Netzwerkendpunkt zu einem anderen verantwortlich. Transportkanäle müssen über einen Standardnachrichten-Encoder verfügen und einen alternativen Nachrichten-Encoder verwenden können, der über ein Nachrichtengeberbindungselement bereitgestellt wird. Mit einen Nachrichtenencoder verwandeln Sie eine System.ServiceModel.Channels.Message in eine Übertragungsdarstellung und umgekehrt. Protokollkanäle sind für die Implementierung von SOAP-Protokollen (z. B. WS-Security oder WS-ReliableMessaging) verantwortlich.
Die hauptanforderung für Transport- und Protokollkanäle besteht darin, dass sie die erforderlichen Kanalschnittstellen implementieren. Um eine funktionsfähige Kanalschicht zu erstellen, müssen ihnen Factorys und Listeners usw. zugewiesen sein. Um die Kanalimplementierungen aus WCF zu verwenden, muss es ein zugeordnetes Bindungselement geben, das von BindingElement jedem Kanal abgeleitet wird, und es sollte ein zugehöriges Bindungserweiterungselement für die Aufnahme in Konfigurationsdateien vorhanden sein, von BindingElementExtensionElementdenen abgeleitet wird.
Wie bereits erwähnt, können Bindungselemente für Nachrichtengeber, Protokoll- und Transportkanalimplementierungen gestapelt werden, um einen Kanalstapel zu bilden, und der Mechanismus zum Anordnen in einen sortierten Satz ist die Bindung. Bindungen und Bindungselemente verbinden das Anwendungsprogrammiermodell mit dem Kanalmodell. Sie können die Kanalimplementierungen direkt aus dem Code verwenden, aber erst nachdem Encoder, Transporte und Protokolle als Bindungselemente implementiert wurden, können sie aus dem Dienstschichtprogrammiermodell heraus verwendet werden.
Ausführliche Informationen zum Entwickeln von Kanälen und deren Bindungselementen finden Sie unter Erweitern der Kanalebene.