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 Nachrichtengeber angeben, 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 Auflistung von Bindungselementen dar, von denen jeder einen Aspekt der Kommunikation eines Endpunkts mit anderen Endpunkten beschreibt und die konsistent in eine Kanalfactory auf dem Client und in einen Kanallistener im Dienst integriert sind. Eine Bindung enthält eine Sammlung von Bindungselementen, die Protokollkanälen, Transportkanälen und Nachrichtengebern entsprechen. Es kann eine beliebige Anzahl von Bindungselementen für Protokollkanäle, aber nur ein Bindungselement für jeden Transport- und Nachrichten-Encoder geben. Es gibt in der Regel sechs Ebenen von Bindungselementen in einer Bindung. Nur die Transport- und Codierungsbindungselemente am unteren Rand des Stapels sind erforderlich. Da für jede Bindung eine Codierung erforderlich ist, fügt Windows Communication Foundation (WCF) eine Standardcodierung für Sie hinzu, wenn keine Codierung angegeben ist. Der Standardwert ist Text/XML für die HTTP- und HTTPS-Transporte und binär für andere Transporte.
In der folgenden Tabelle sind die Optionen für jede Ebene zusammengefasst.
| Ebene | Options | Erforderlich |
|---|---|---|
| Transaktionsfluss | TransactionFlowBindingElement | No |
| Zuverlässigkeit | ReliableSessionBindingElement | No |
| Sicherheit | Symmetrisch, asymmetrisch, Transport-Level | No |
| Formänderung | CompositeDuplexBindingElement | No |
| Transportupgrades | SSL-Stream, Windows-Stream, Peer Resolver | No |
| Codieren | Text, Binärdatei, MTOM, benutzerdefiniert | Ja |
| Transport | TCP, Named Pipes, HTTP, HTTPS, MSMQ, Benutzerdefiniert | Ja |
Jedes Bindungselement stellt die Spezifikation zum Erstellen einer Kanalfactory auf dem Client und einem Kanallistener auf dem Dienst bereit. Wenn der Kanalfactorystapel erstellt wird, z. B. gibt es eine Kanalfactory im Stapel für jedes Bindungselement in der Bindung. Die gleiche Art von Zuordnung gilt für die Kanallistener im Stapel des Diensts. Konsistenz auf dem Client und Dienst ist für die Einrichtung der kanalbasierten Verbindung zwischen diesen Endpunkten von entscheidender Bedeutung. Jede Factory und jeder Listener verarbeitet wiederum das Senden und Akzeptieren der entsprechenden Kanäle im Kanalstapel, die sie verbindet, und diese Kanäle können dann die für die Kommunikation verwendeten Nachrichten senden und empfangen.
Jede Instanz einer Instanz verfügt Binding über eine Name und Namespace die sie in den Metadaten des Diensts eindeutig identifizieren. Wenn kein Name oder Namespace angegeben ist, fügt WCF einen Standardwert für Sie hinzu. Der Standardname ist null und der Standardnamespace lautet http://tempuri.org/. Dieser Benutzername für die Bindung unterscheidet sich von der Spezifikation des Protokollnamens, der durch die Scheme Eigenschaft angegeben wird. Wenn Sie z. B. weitere HTTP-Bindungen hinzufügen möchten, können Sie sie beliebig benennen und alle zugehörigen Schemas auf "http" festlegen. Es gibt keine inhärente Anwendung oder Maschinenversand basierend auf dem Scheme. Daher vermeiden Sie das häufige Problem, dass sie keine zusätzlichen Handler für bekannte Protokolle registrieren können. Sie können auch problemlos mit mehreren Versionen einer Bindung nebeneinander arbeiten, indem Sie jeder Version einen anderen Namen geben.
Die Binding Klasse implementiert die IDefaultCommunicationTimeouts Schnittstelle, um Denial of Service (DOS)-Angriffe zu mindern, die darauf basieren, Ressourcen für längere Zeitintervalle zu binden. Die Implementierung gibt die Kommunikationstimeoutswerte für das Öffnen und Schließen von Verbindungen sowie für die Lese- und Schreibvorgänge an, die mit dem Empfangen und Senden von Nachrichten verbunden sind. Die Eigenschaften zum Abrufen und Festlegen dieser Timeouts und deren Standardwertvorgänge werden in der folgenden Tabelle zusammengefasst.
| Timeout-Eigenschaft | Standardwert |
|---|---|
| OpenTimeout | 1 Minute |
| CloseTimeout | 1 Minute |
| SendTimeout | 1 Minute |
| ReceiveTimeout | 10 Minuten |
Wenn Sie eine Bindung durch Vererbung Bindingerstellen, müssen Sie diese außer Kraft setzen CreateBindingElements.
Darüber hinaus können Sie eigene Bindungselemente definieren und zwischen einer der definierten Ebenen in der vorherigen Tabelle einfügen. Weitere Informationen finden Sie in der CustomBinding Klasse.
Konstruktoren
| Name | Beschreibung |
|---|---|
| Binding() |
Initialisiert eine neue Instanz der Binding Klasse mit einem Standardnamen und Namespace. |
| Binding(String, String) |
Initialisiert eine neue Instanz der Binding Klasse aus einer angegebenen Bindung des Diensts. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| CloseTimeout |
Dient zum Abrufen oder Festlegen des Zeitintervalls, das für eine Verbindung bereitgestellt wird, die geschlossen werden soll, bevor der Transport eine Ausnahme auslöst. |
| MessageVersion |
Ruft die Nachrichtenversion ab, die von Clients und Diensten verwendet wird, die mit der Bindung konfiguriert sind. |
| Name |
Dient zum Abrufen oder Festlegen des Namens der Bindung. |
| Namespace |
Dient zum Abrufen oder Festlegen des XML-Namespace der Bindung. |
| OpenTimeout |
Dient zum Abrufen oder Festlegen des Zeitintervalls, das für eine Verbindung bereitgestellt wird, die geöffnet werden soll, bevor der Transport eine Ausnahme auslöst. |
| ReceiveTimeout |
Ruft ab oder legt das Zeitintervall fest, in dem eine Verbindung inaktiv bleiben kann, während der keine Anwendungsnachrichten empfangen werden, bevor sie gelöscht wird. |
| Scheme |
Wenn sie in einer abgeleiteten Klasse implementiert wird, wird das URI-Schema festgelegt, das den Transport angibt, der von den Kanälen und Listener-Fabriken verwendet wird, die von den Bindungen erstellt werden. |
| SendTimeout |
Dient zum Abrufen oder Festlegen des Zeitintervalls, das für einen Schreibvorgang bereitgestellt wird, der abgeschlossen werden soll, bevor der Transport eine Ausnahme auslöst. |
Methoden
| Name | Beschreibung |
|---|---|
| BuildChannelFactory<TChannel>(BindingParameterCollection) |
Erstellt den Kanalfactorystapel auf dem Client, der einen bestimmten Kanaltyp erstellt und die durch eine Sammlung von Bindungsparametern angegebenen Features erfüllt. |
| BuildChannelFactory<TChannel>(Object[]) |
Erstellt den Kanalfactorystapel auf dem Client, der einen bestimmten Kanaltyp erstellt und die von einem Objektarray angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die durch eine Sammlung von Bindungsparametern angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features erfüllt. |
| BuildChannelListener<TChannel>(Uri, String, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen bestimmten Kanaltyp akzeptiert und die angegebenen Features 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 der angegebenen 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 angegebenen 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 der angegebenen 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 Array von Objekten angegebenen Kriterien erfüllt. |
| CreateBindingElements() |
Wenn eine abgeleitete Klasse überschrieben wird, wird eine Auflistung erstellt, die die Bindungselemente enthält, die Teil der aktuellen Bindung sind. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetProperty<T>(BindingParameterCollection) |
Gibt ein typiertes Objekt zurück, das ( falls vorhanden) aus der entsprechenden Ebene im Bindungsstapel angefordert wird. |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ShouldSerializeName() |
Gibt zurück, ob der Name der Bindung serialisiert werden soll. |
| ShouldSerializeNamespace() |
Gibt zurück, ob der Namespace der Bindung serialisiert werden soll. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |