(0) exportieren Drucken
Alle erweitern

Binding-Klasse

Aktualisiert: November 2007

Enthält die Bindungselemente, die die Protokolle, Transporte und Nachrichtenencoder enthalten, die für die Kommunikation zwischen Clients und Diensten verwendet werden.

Namespace:  System.ServiceModel.Channels
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public abstract class Binding : IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts

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 notwendig ist, kann über Windows Communication Foundation (WCF) eine Standardcodierung hinzugefügt werden, wenn keine Codierung festgelegt ist. 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

Optionen

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 hinzu. Der Standardname lautet null und der Standard-Namespace 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 unter der CustomBinding-Klasse.

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();
}


Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0

.NET Compact Framework

Unterstützt in: 3.5

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft