Binding Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Enthält die Bindungselemente, die die Protokolle, Transporte und Nachrichtenencoder enthalten, die für die Kommunikation zwischen Clients und Diensten verwendet werden.
public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements 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. Eine Bindung enthält eine Sammlung an Bindungselementen, die Protokollkanälen, Transportkanälen und Nachrichtenencodern entsprechen. Die Anzahl an Bindungselementen für Protokollkanäle ist beliebig. Für jeden Transport und jeden Nachrichtenencoder gibt es jedoch nur ein Bindungselement. Es gibt üblicherweise sechs Ebenen von Bindungselementen in einer Bindung. Nur die Transport- und Codierungsbindungselemente im unteren Teil des Stapels sind erforderlich. Da für jede Bindung eine Codierung erforderlich ist, fügt Ihnen Windows Communication Foundation (WCF) eine Standardcodierung hinzu, wenn keine Codierung angegeben wird. Der Standard ist Text/XML für die HTTP- und HTTPS-Transporte und binär für andere Transporte.
In der folgenden Tabelle werden die Optionen für jede Ebene zusammengefasst.
Ebene | Tastatur | Erforderlich |
---|---|---|
Transaktionsfluss | TransactionFlowBindingElement | Nein |
Zuverlässigkeit | ReliableSessionBindingElement | Nein |
Sicherheit | Symmetrisch, asymmetrisch, auf Transportebene | Nein |
Formänderung | CompositeDuplexBindingElement | Nein |
Transport-Upgrades | SSL-Stream, Windows-Stream, Peerresolver | Nein |
Codierung | Text, Binärdatei, MTOM, benutzerdefiniert | Ja |
Transport | TCP, Named Pipes, HTTP, HTTPS, MSMQ, benutzerdefiniert | Ja |
Jedes Bindungselement stellt die Spezifikation für die Erstellung einer Kanalfactory auf dem Client und eines Kanallistener auf dem Dienst bereit. Wenn der Kanalfactorystapel erstellt wird, ist beispielsweise nur eine Kanalfactory für jedes Bindungselement in der Bindung vorhanden. Diese Art von Zuordnung gilt für Kanallistener im Stapel des Diensts. Konsistenz auf dem Client und dem Dienst ist für die Erstellung der kanalbasierten Verbindung zwischen diesen Endpunkten entscheidend. 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.
Jede Instanz von Binding hat eine Name und eine Namespace, die zusammen eine eindeutige Identifizierung in den Metadaten des Diensts ergeben. Wenn kein Name oder Namespace angegeben ist, fügt WCF einen Standardwert für Sie hinzu. Der Standardname ist null
, und der Standardnamespace ist http://tempuri.org/
. Dieser Benutzername für die Bindung unterscheidet sich von der Spezifikation des Protokollnamens, der durch die Scheme-Eigenschaft festgelegt wird. 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. Es gibt keine inhärente Anwendung oder Rechnerverteilung auf Grundlage von Scheme. So vermeiden Sie das übliche Problem, keine zusätzlichen Handler für bekannte Protokolle registrieren zu können. Durch die Vergabe eines anderen Namens für jede Version können Sie leicht mit mehreren Versionen einer Bindung gleichzeitig arbeiten.
Die Binding-Klasse implementiert die IDefaultCommunicationTimeouts-Schnittstelle zur Schwächung von Denial-of-Service-Angriffen (DOS), die Ressourcen für längere Zeitintervalle binden. 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. Die für das Abrufen und Einrichten dieser Timeouts verwendeten Eigenschaften und ihre Vorgänge mit Standardwerten werden in der folgenden Tabelle zusammengefasst.
Timeouteigenschaft | Standardwert |
---|---|
OpenTimeout | 1 Minute |
CloseTimeout | 1 Minute |
SendTimeout | 1 Minute |
ReceiveTimeout | 10 Minuten |
Wenn Sie eine Bindung erstellen, indem Sie von Binding erben, müssen Sie CreateBindingElements überschreiben.
Zusätzlich können Sie Ihre eigenen Bindungselemente definieren und diese zwischen den in der vorherigen Tabelle definierten Ebenen einsetzen. Weitere Informationen finden Sie in den Ausführungen zur CustomBinding-Klasse.
Konstruktoren
Binding() |
Initialisiert eine neue Instanz der Binding-Klasse mit einem Standardnamen und -Namespace. |
Binding(String, String) |
Initialisiert eine neue Instanz in der Binding-Klasse aus einer festgelegten Bindung des Diensts. |
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. |
MessageVersion |
Ruft die Nachrichtenversion ab, die von den Clients und Diensten verwendet wird, die mit der Bindung konfiguriert wurden. |
Name |
Ruft den Namen der Bindung ab oder legt diesen fest. |
Namespace |
Ruft den XML-Namespace einer Bindung ab oder legt diesen fest. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
BuildChannelListener<TChannel>(Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
BuildChannelListener<TChannel>(Uri, String, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. |
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. |
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. |
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. |
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. |
CreateBindingElements() |
Wenn dieser in einer abgeleiteten Klasse überschrieben wird, wird eine Auflistung mit Bindungselementen erstellt, die zur aktuellen Bindung gehören. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetProperty<T>(BindingParameterCollection) |
Gibt ggf. ein angefordertes typisiertes Objekt von der entsprechenden Ebene im Bindungsstapel zurück. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ShouldSerializeName() |
Gibt einen Wert zurück, der angibt, ob der Name der Bindung serialisiert werden soll. |
ShouldSerializeNamespace() |
Gibt einen Wert zurück, der angibt, ob der Namespace der Bindung serialisiert werden soll. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |