Binding Class

Definition

Enthält die Bindungselemente, die die Protokolle, Transporte und Nachrichtenencoder enthalten, die für die Kommunikation zwischen Clients und Diensten verwendet werden. Contains the binding elements that specify the protocols, transports, and message encoders used for communication between clients and services.

public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
Vererbung
Binding
Abgeleitet
Implementiert

Beispiele

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

Hinweise

Stellt eine Sammlung an Bindungselemente dar, von denen jedes einzelne einen Aspekt darüber beschreibt, wie ein Endpunkt mit anderen Endpunkten kommuniziert, und die konsistent in eine Kanalfactory auf dem Client und in einen Kanallistener im Dienst eingebaut sind.Represents a collection of binding elements, each of which describes an aspect of how an endpoint communicates with other endpoints and that are built, consistently, into a channel factory on the client and into a channel listener on the service. Eine Bindung enthält eine Sammlung an Bindungselementen, die Protokollkanälen, Transportkanälen und Nachrichtenencodern entsprechen.A binding contains a collection of binding elements that correspond to protocol channels, transport channels, and message encoders. Die Anzahl an Bindungselementen für Protokollkanäle ist beliebig. Für jeden Transport und jeden Nachrichtenencoder gibt es jedoch nur ein Bindungselement.There can be any number of binding elements for protocol channels but one and only one binding element for each the transport and message encoder. Es gibt üblicherweise sechs Ebenen von Bindungselementen in einer Bindung.There are commonly six layers of binding elements in a binding. Nur die Transport- und Codierungsbindungselemente im unteren Teil des Stapels sind erforderlich.Only the transport and encoding binding elements at the bottom of the stack are required. Da eine Codierung für jede Bindung erforderlich ist, wenn keine Codierung angegeben ist, fügt Windows Communication Foundation (WCF) eine standardcodierung für Sie.Because an encoding is required for each binding, if an encoding is not specified, Windows Communication Foundation (WCF) adds a default encoding for you. Der Standard ist Text/XML für die HTTP- und HTTPS-Transporte und binär für andere Transporte.The default is Text/XML for the HTTP and HTTPS transports, and Binary for other transports.

In der folgenden Tabelle werden die Optionen für jede Ebene zusammengefasst.The following table summarizes the options for each layer.

EbeneLayer OptionenOptions ErforderlichRequired
TransaktionsflussTransaction Flow TransactionFlowBindingElement NeinNo
ZuverlässigkeitReliability ReliableSessionBindingElement NeinNo
SicherheitSecurity Symmetrisch, asymmetrisch, auf TransportebeneSymmetric, Asymmetric, Transport-Level NeinNo
FormänderungShape Change CompositeDuplexBindingElement NeinNo
Transport-UpgradesTransport Upgrades SSL-Stream, Windows-Stream, PeerresolverSSL stream, Windows stream, Peer Resolver NeinNo
CodierungEncoding Text, Binärdatei, MTOM, benutzerdefiniertText, Binary, MTOM, Custom JaYes
TransportTransport TCP, Named Pipes, HTTP, HTTPS, MSMQ, benutzerdefiniertTCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom JaYes

Jedes Bindungselement stellt die Spezifikation für die Erstellung einer Kanalfactory auf dem Client und eines Kanallistener auf dem Dienst bereit.Each binding element provides the specification for building a channel factory on the client and a channel listener on the service. Wenn der Kanalfactorystapel erstellt wird, ist beispielsweise nur eine Kanalfactory für jedes Bindungselement in der Bindung vorhanden.When the channel factory stack is constructed, for example, there is one channel factory in the stack for each binding element in the binding. Diese Art von Zuordnung gilt für Kanallistener im Stapel des Diensts.The same sort of mapping applies to the channel listeners in the stack on the service. Konsistenz auf dem Client und dem Dienst ist für die Erstellung der kanalbasierten Verbindung zwischen diesen Endpunkten entscheidend.Consistency on the client and service is critical for establishing the channel-based connection between these endpoints. Jede Factory und jeder Listener verarbeitet das Senden und Annehmen der entsprechenden Kanäle im Kanalstapel, mit dem eine Verbindung besteht, und diese Kanäle können dann Kommunikationsnachrichten senden und empfangen.Each factory and listener, in turn, processes the sending and accepting of the corresponding channels in the channel stack that connects them, and these channels can then send and receive the messages used to communicate.

Jede Instanz von Binding hat eine Name und eine Namespace, die zusammen eine eindeutige Identifizierung in den Metadaten des Diensts ergeben.Each instance of a Binding has a Name and Namespace that together uniquely identify it in the metadata of the service. Wenn kein Name oder Namespace angegeben wird, fügt WCF einen Standardwerte für Sie.If no name or namespace is specified, WCF adds a default values for you. Der Standardname lautet null und der Standardnamespace ist http://tempuri.org/.The default name is null and the default namespace is http://tempuri.org/. Dieser Benutzername für die Bindung unterscheidet sich von der Spezifikation des Protokollnamens, der durch die Scheme-Eigenschaft festgelegt wird.This user name for the binding is distinct from the specification of the protocol name, which is specified by the Scheme property. Wenn Sie weitere HTTP-Bindungen hinzufügen möchten, können Sie z. B. diese benennen, wie Sie möchten, und alle ihre Schemas auf „http“ setzen.If you want to add more HTTP bindings, for example, you can name them whatever you want and set all of their schemes to "http". Es gibt keine inhärente Anwendung oder Rechnerverteilung auf Grundlage von Scheme.There is no inherent application or machine dispatch based on the Scheme. So vermeiden Sie das übliche Problem, keine zusätzlichen Handler für bekannte Protokolle registrieren zu können.So you avoid the common problem of being unable to register additional handlers for well-known protocols. Durch die Vergabe eines anderen Namens für jede Version können Sie leicht mit mehreren Versionen einer Bindung gleichzeitig arbeiten.You can also easily work with multiple versions of a binding side-by-side by giving each version a different name.

Die Binding-Klasse implementiert die IDefaultCommunicationTimeouts-Schnittstelle zur Schwächung von Denial-of-Service-Angriffen (DOS), die Ressourcen für längere Zeitintervalle binden.The Binding class implements the IDefaultCommunicationTimeouts interface to mitigate Denial of Service (DOS) attacks that rely on tying up resources for extended intervals of time. Die Implementierung legt die Werte für Kommunikations-Timeouts für das Öffnen und Schließen von Verbindungen und für das Lesen und Schreiben von Vorgängen im Zusammenhang mit dem Nachrichtenempfang und -versand fest.The implementation specifies the communication timeouts values for opening and closing connections and for the reading and writing operations associated with receiving and sending messages. Die für das Abrufen und Einrichten dieser Timeouts verwendeten Eigenschaften und ihre Vorgänge mit Standardwerten werden in der folgenden Tabelle zusammengefasst.The properties used to get and set these timeouts and their default values operations are summarized in the following table.

TimeouteigenschaftTimeout Property StandardwertDefault Value
OpenTimeout 1 Minute1 minute
CloseTimeout 1 Minute1 minute
SendTimeout 1 Minute1 minute
ReceiveTimeout 10 Minuten10 minutes

Wenn Sie eine Bindung erstellen, indem Sie von Binding erben, müssen Sie CreateBindingElements überschreiben.When you create a binding by inheriting from Binding, you must override CreateBindingElements.

Zusätzlich können Sie Ihre eigenen Bindungselemente definieren und diese zwischen den in der vorherigen Tabelle definierten Ebenen einsetzen.In addition, you can define your own binding elements and insert them between any of the defined layers in the preceding table. Weitere Informationen finden Sie in den Ausführungen zur CustomBinding-Klasse.For more information, see the CustomBinding class.

Konstruktoren

Binding()

Initialisiert eine neue Instanz der Binding-Klasse mit einem Standardnamen und -Namespace. Initializes a new instance of the Binding class with a default name and namespace.

Binding(String, String)

Initialisiert eine neue Instanz der Binding-Klasse aus einer festgelegten Bindung des Diensts. Initializes a new instance of the Binding class from a specified binding of the service.

Eigenschaften

CloseTimeout

Ruft das Zeitintervall ab, das für eine Verbindung eingerichtet ist, die geschlossen wird, bevor ein Transport eine Ausnahme auslöst, oder legt dieses fest. Gets or sets the interval of time provided for a connection to close before the transport raises an exception.

MessageVersion

Ruft die Nachrichtenversion ab, die von den Clients und Diensten verwendet wird, die mit der Bindung konfiguriert wurden. Gets the message version used by clients and services configured with the binding.

Name

Ruft den Namen der Bindung ab oder legt diesen fest. Gets or sets the name of the binding.

Namespace

Ruft den XML-Namespace einer Bindung ab oder legt diesen fest. Gets or sets the XML namespace of the binding.

OpenTimeout

Ruft das Zeitintervall ab, das für eine Verbindung eingerichtet ist, die geöffnet wird, bevor ein Transport eine Ausnahme auslöst, oder legt dieses fest. Gets or sets the interval of time provided for a connection to open before the transport raises an exception.

ReceiveTimeout

Ruft ein Zeitintervall ab oder legt ein Zeitintervall fest, während dessen eine Verbindung inaktiv bleiben kann und keine Anwendungsnachrichten empfangen werden, bevor sie verworfen werden. Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.

Scheme

Bei Implementierung in einer abgeleiteten Klasse richtet dieser Wert das URI-Schema ein, das den Transport festlegt, der von den Kanal- und Listenerfactorys verwendet wird, die von den Bindungen erstellt werden. When implemented in a derived class, sets the URI scheme that specifies the transport used by the channel and listener factories that are built by the bindings.

SendTimeout

Ruft das Zeitintervall ab, das für einen Schreibvorgang eingerichtet ist, der abgeschlossen wird, bevor ein Transport eine Ausnahme auslöst, oder legt dieses fest. Gets or sets the interval of time provided for a write operation to complete before the transport raises an exception.

Methoden

BuildChannelFactory<TChannel>(BindingParameterCollection)

Erstellt den Kanalfactorystapel auf dem Client, der einen festgelegten Kanaltyp erstellt und der die Funktionen erfüllt, die von einer Auflistung von Bindungsparametern festgelegt werden. Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelFactory<TChannel>(Object[])

Erstellt den Kanalfactorystapel auf dem Client, der einen festgelegten Kanaltyp erstellt und der die Funktionen erfüllt, die von einem Objektarray festgelegt werden. Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by an object array.

BuildChannelListener<TChannel>(BindingParameterCollection)

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die Funktionen erfüllt, die von einer Auflistung von Bindungsparametern festgelegt werden. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelListener<TChannel>(Object[])

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, Object[])

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, Object[])

Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Gibt einen Wert zurück, der angibt, ob die aktuelle Bindung einen Kanalfactorystapel auf dem Client erstellen kann, der die Auflistung festgelegter Bindungsparameter erfüllt. Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the collection of binding parameters specified.

CanBuildChannelFactory<TChannel>(Object[])

Gibt einen Wert zurück, der angibt, ob die aktuelle Bindung einen Kanalfactorystapel auf dem Client erstellen kann, der die von einem Objektarray festgelegten Anforderungen erfüllt. Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the requirements specified by an object array.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Gibt einen Wert zurück, der angibt, ob die aktuelle Bindung einen Kanallistenerstapel auf dem Dienst erstellen kann, der die Auflistung festgelegter Bindungsparameter erfüllt. Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the collection of binding parameters specified.

CanBuildChannelListener<TChannel>(Object[])

Gibt einen Wert zurück, der angibt, ob die aktuelle Bindung einen Kanallistenerstapel auf dem Dienst erstellen kann, der die in einem Objektarray festgelegten Kriterien erfüllt. Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the criteria specified in an array of objects.

CreateBindingElements()

Wenn dieser in einer abgeleiteten Klasse überschrieben wird, wird eine Auflistung mit Bindungselementen erstellt, die zur aktuellen Bindung gehören. When overridden in a derived class, creates a collection that contains the binding elements that are part of the current binding.

Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Fungiert als die Standardhashfunktion. Serves as the default hash function.

(Inherited from Object)
GetProperty<T>(BindingParameterCollection)

Gibt ggf. ein angefordertes typisiertes Objekt von der entsprechenden Ebene im Bindungsstapel zurück. Returns a typed object requested, if present, from the appropriate layer in the binding stack.

GetType()

Ruft den Type der aktuellen Instanz ab. Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object. Creates a shallow copy of the current Object.

(Inherited from Object)
ShouldSerializeName()

Gibt einen Wert zurück, der angibt, ob der Name der Bindung serialisiert werden soll. Returns whether the name of the binding should be serialized.

ShouldSerializeNamespace()

Gibt einen Wert zurück, der angibt, ob der Namespace der Bindung serialisiert werden soll. Returns whether the namespace of the binding should be serialized.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. Returns a string that represents the current object.

(Inherited from Object)

Gilt für: