Bindungen und BindungselementeBindings and Binding Elements

Bindungen sind Sammlungen spezieller Konfigurationselemente, die Namen Bindungselemente, die von der Service-Laufzeit, wenn ein Client ausgewertet werden oder Dienstendpunkt erstellt wird.Bindings are collections of special configuration elements, called binding elements, which are evaluated by the service runtime whenever a client or service endpoint is being constructed. Der Typ und die Reihenfolge der Bindungselemente in einer Bindung bestimmen die Auswahl und Stapelreihenfolge des Protokolls und der Transportkanäle in einem Endpunkt-Kanalstapel.The type and order of the binding elements within a binding determines the selection and stacking order of the protocol and transport channels in an endpoint's channel stack.

Bindungen, vor allem solche, die vom System bereitgestellt werden, weisen normalerweise auch mehrere Konfigurationseigenschaften auf, die die am häufigsten bearbeiteten Eigenschaften der gekapselten Bindungselemente widerspiegeln.Bindings, especially the system-provided bindings, usually also have a number of configuration properties that reflect the most commonly modified properties of the encapsulated binding elements.

Eine Bindung muss genau ein Transportbindungselement enthalten.A binding must contain exactly one transport binding element. Jedes Transportbindungselement weist auf ein Standardnachrichten-Codierungsbindungselement hin, das durch das Hinzufügen von maximal einem Nachrichten codierenden Bindungselement zur Bindung überschrieben werden kann.Each transport binding element implies a default message encoding binding element, which can be overridden by adding at most one message encoding binding element to the binding. Neben den Transportbindungselementen und Encoderbindungselementen kann die Bindung auch eine beliebige Anzahl an Protokollbindungselementen enthalten, die zusammen die für den Dienst benötigten Funktionen implementieren, und eine SOAP-Nachricht von einem Endpunkt zum nächsten senden.In addition to the transport and encoder binding elements, the binding may contain any number of protocol binding elements that together implement the functionality needed to service and send a SOAP message from one endpoint to another. Weitere Informationen finden Sie unter Verwendung von Bindungen zum Konfigurieren von Diensten und Clients.For details, see Using Bindings to Configure Services and Clients.

Erweitern von Bindungen und BindungselementenExtending Bindings and Binding Elements

Windows Communication Foundation (WCF) umfasst vom System bereitgestellten Bindungen, die eine Vielzahl von Szenarien abdecken.Windows Communication Foundation (WCF) includes system-provided bindings that cover a wide range of scenarios. (Weitere Informationen finden Sie unter System-provided Bindings.) Gibt es möglicherweise Zeiten, allerdings beim müssen Sie zum Erstellen und verwenden eine Bindung, die nicht in WCF enthalten ist.(For more, see System-Provided Bindings.) There may be times, however, when you need to create and use a binding that is not included in WCF. Bei den folgenden Szenarien muss eine neue Bindung erstellt werden:The following scenarios require the creation of a new binding.

  • Um ein neues Bindungselement zu verwenden (z. B. ein neues Transport-, Codierungs- oder Protokollbindungselement), müssen Sie eine neue Bindung erstellen, die dieses Bindungselemente enthält.To use a new binding element (such as a new transport, encoding, or protocol binding element), you must create a new binding that includes that binding element. Wenn Sie beispielsweise ein benutzerdefiniertes UdpTransportBindingElement für den UDP-Transport hinzufügen, müssen Sie eine neue Bindung erstellen, damit Sie das Element verwenden können.For example, if you added a custom UdpTransportBindingElement for UDP transport, you would need to create a new binding to make use of it. Weitere Informationen zum Ausführen dieses Verhalten mithilfe der System.ServiceModel.Channels.CustomBinding finden Sie unter benutzerdefinierte Bindungen.For information about performing this behavior using the System.ServiceModel.Channels.CustomBinding type, see Custom Bindings.

  • Zum Konfigurieren vorhandener Bindungselemente, sodass die vom System bereitgestellten Bindungen nicht auf öffentlichen Eigenschaften verfügbar gemacht werden.To configure existing binding elements in a way that the system-provided bindings to not expose on public properties. Sie müssen beispielsweise eine neue Bindung erstellen, um die Reihenfolge zu ändern, in der Signatur- und Verschlüsselungsvorgänge durchgeführt werden.For example, you must create a new binding to change the order in which signing and encryption operations are performed. Informationen zum Durchführen dieses Verhaltens finden Sie unter wie: Anpassen einer System-provided Bindung.For information about performing this behavior, see How to: Customize a System-Provided Binding.

  • Zum Einrichten von unternehmensweiten Standardbindungen, die nur bestimmte Konfigurationsoptionen verfügbar machen.To establish corporate standard bindings that expose only specific configuration options. Wenn Sie beispielsweise für Ihr Unternehmen eine Variante der WSHttpBinding erstellen, in der Sicherheit nicht deaktiviert werden kann, erstellen Sie eine neue Bindung, die das gleiche Verhalten hat wie die WSHttpBinding, allerdings ist die Sicherheit immer aktiviert.For example, to create for your company a variant of the WSHttpBinding for your company in which security cannot be disabled, create a new binding that behaves like the WSHttpBinding, but with security always on. Weitere Informationen finden Sie unter Erstellen benutzerdefinierter Bindungen.For details, see Creating User-Defined Bindings.

  • Zum Durchführen von Metadatenanpassungen, normalerweise zum Konfigurieren oder Verwenden von benutzerdefinierten Bindungselementen.To perform some customization of metadata, typically but not necessarily to configure or use some custom binding element. Weitere Informationen zum Bereitstellen von metadatenunterstützung für Bindungen und Bindungselementen finden Sie unter Konfiguration und Metadatenunterstützung.For more information about providing metadata support to bindings and binding elements, see Configuration and Metadata Support.

Kanäle, Bindungen und BindungselementeChannels, Bindings, and Binding Elements

Bindungen und Bindungselemente sind das Bindeglied zwischen dem Anwendungsprogrammiermodell, das die Attribute und Verhalten enthält, und dem Kanalmodell, das Factorys und Listeners, Nachrichtenencoder sowie Transport- und Protokollimplementierungen enthält.Bindings and binding elements are the connection between the application programming model, which includes the attributes and behaviors, and the channel model, which includes the factories and listeners, message encoders, and transport and protocol implementations. Normalerweise werden Bindungselemente und Bindungen implementiert, um Kanäle zu aktivieren, damit sie von der Anwendungsschicht verwendet werden.Typically, binding elements and bindings are implemented to enable channels to be used by the application layer.

Die Kanalschicht sendet oder empfängt Nachrichten von und an die Dienstschicht und transportiert diese Nachrichten zwischen den Endpunkten.The channel layer hands off or receives messages to and from the service layer and transports those messages between endpoints. Auf einem Client besteht die Kanalschicht aus einem Stapel an Kanalfactorys, die Kanäle zu einem Netzwerkendpunkt erstellen.On a client, the channel layer is a stack of channel factories that create channels to a network endpoint. Auf einem Dienst besteht die Kanalschicht aus einem Stapel an Kanallisteners, die die an einem Netzwerkendpunkt eingehenden Kanäle akzeptieren.On a service, the channel layer is a stack of channel listeners that accept channels received at a network endpoint.

Es gibt zwei allgemeine Arten von Kanälen: Protokollkanäle und Transportkanäle.There are two general types of channels: protocol channels and transport channels. Transportkanäle sind verantwortlich für die eigentliche Übertragung einer Nachricht von einem Netzwerkendpunkt zum nächsten.Transport channels are responsible for the actual transmission of a message from one network endpoint to another. Transportkanäle benötigen einen Standardnachrichtenencoder und sollten auch den durch das Nachrichtenencoder-Bindungselement bereitgestellten alternativen Nachrichtenencoder verwenden können.Transport channels must have a default message encoder and should be able to use an alternate message encoder supplied through a message encoder binding element. Mit einen Nachrichtenencoder verwandeln Sie eine System.ServiceModel.Channels.Message in eine Übertragungsdarstellung und umgekehrt.A message encoder is responsible for turning a System.ServiceModel.Channels.Message into a wire representation and vice-versa. Mit Protokollkanälen werden Protokolle auf SOAP-Ebene (z. B. WS-Sicherheit oder WS-ReliableMessaging) implementiert.Protocol channels are responsible for implementing SOAP-level protocols (for example, WS-Security or WS-ReliableMessaging).

Die grundlegende Anforderung an Transportkanäle und Protokollkanäle besteht darin, die erforderlichen Kanalschnittstellen zu implementieren.The primary requirement for transport and protocol channels is that they implement the required channel interfaces. Um eine funktionsfähige Kanalschicht zu erstellen, müssen ihnen Factorys und Listeners usw. zugewiesen sein.To create a working channel layer they must have associated factories and listeners, and so on. Um die kanalimplementierungen von WCF verwenden, es ein zugewiesenes Bindungselement muss, abgeleitet BindingElement für jeden Kanal, und es muss ein entsprechendes bindungserweiterungselement für die Aufnahme in Konfigurationsdateien, die von abgeleitetBindingElementExtensionElement.To use the channel implementations from WCF there needs to be an associated binding elements derived from BindingElement for each channel and there should be a related binding extension element for inclusion into configuration files that derives from BindingElementExtensionElement.

Wie zuvor erwähnt können Bindungselemente für Nachrichtenencoder, Protokollkanalimplementierungen und Transportkanalimplementierungen zu einem Kanalstapel zusammengefasst werden. Zum Aufreihen in einem geordneten Satz wird die Bindung verwendet.As mentioned earlier, binding elements for message encoders, protocol, and transport channel implementations can be stacked to form a channel stack and the mechanism to line them up into an ordered set is the binding. Bindungen und Bindungselemente verbinden das Anwendungsprogrammiermodell mit dem Kanalmodell.Bindings and binding elements connect the application programming model to the channel model. 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.You can use your channel implementations from code directly, but unless encoders, transports, and protocols are implemented as binding elements they cannot be used from the service layer programming model.

Weitere Informationen zum Entwickeln von Kanälen und ihren Bindungselementen finden Sie unter Erweitern der Kanalschicht.For details about developing channels and their binding elements, see Extending the Channel Layer.