CustomBinding 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.
Definiert eine Bindung aus einer Liste mit Bindungselementen.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Vererbung
- Attribute
Beispiele
Das folgende Beispiel zeigt, wie man ein CustomBinding-Objekt unter Verwendung von ReliableSessionBindingElement und HttpTransportBindingElement erstellt.
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// 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();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' 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()
End Using
Hinweise
Verwenden Sie eine benutzerdefinierte Bindung, wenn eine der vom System bereitgestellten Bindungen die Anforderungen für Ihren Dienst nicht erfüllt. Eine benutzerdefinierte Bindung kann beispielsweise verwendet werden, um die Nutzung eines neuen Transports oder eines neuen Encoders an einem Dienstendpunkt zu aktivieren.
Eine benutzerdefinierte Bindung wird durch Verwendung einer der CustomBinding aus einer Sammlung an Bindungselementen erstellt, die in einer spezifischen Reihenfolge "gestapelt" sind:
Oben ist ein optionales TransactionFlowBindingElement, das einen Transaktionsfluss ermöglicht.
Darauf folgt ein optionales ReliableSessionBindingElement, das eine Sitzung und einen Sortiermechanismus bereitstellt, wie es in der WS-ReliableMessaging-Spezifikation definiert ist. Dieses Konzept einer Sitzung kann SOAP und Transportvermittler überqueren.
Darauf folgt ein optionales Sicherheitsbindungselement, das Sicherheitsfunktionen wie Autorisierung, Authentifizierung, Schutz und Vertraulichkeit bereitstellt. Die folgenden Sicherheitsbindungselemente werden von Windows Communication Foundation (WCF) bereitgestellt:
Darauf folgen die optionalen Nachrichtenmuster, die von den Bindungselementen spezifiziert werden:
Darauf folgen die optionalen Transport-Upgrades/unterstützenden Bindungselemente:
Darauf wiederum folgt ein erforderliches, Nachrichten codierendes Bindungselement. Sie können einen eigenen Transport verwenden oder die folgenden Nachrichten codierenden Bindungen:
Am Ende befindet sich ein erforderliches Transportelement. Sie können einen eigenen Transport verwenden oder eines der Transportbindungselemente von Windows Communication Foundation (WCF):
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, Typen der MSMQ, benutzerdefiniert | Ja |
Zusätzlich können Sie Ihre eigenen Bindungselemente definieren und diese zwischen den vorangehenden definierten Ebenen einsetzen.
Eine Diskussion zur Verwendung einer benutzerdefinierten Bindung für das Ändern einer vom System bereitgestellten Bindung finden Sie unter Gewusst wie: Anpassen einer systemseitig bereitgestellten Bindung.
Hinweis
Beim Aufrufen eines WCF-Diensts, der mit .NET Framework 4.0 oder höher erstellt wurde, aus einer WCF-Clientanwendung, die mit .NET Framework 3.5 oder früher erstellt wurde, enthält die konfigurationsdatei, die vom svcutil.exe oder hinzufügen eines Dienstverweises aus Visual Studio generiert wurde, das Gültigkeitsattribut in der Bindungskonfiguration. Dieses Attribut wird von der .NET Framework 3.5-Runtime nicht erkannt, und die Anwendung löst eine mit der Meldung "Gültigkeit des unbekannten Attributs" ausConfigurationErrorsException. Zur Umgehung dieses Problems, entfernen Sie das Gültigkeitsattribut aus der Bindungskonfiguration.
Konstruktoren
CustomBinding() |
Initialisiert eine neue Instanz der CustomBinding-Klasse. |
CustomBinding(Binding) |
Initialisiert eine neue Instanz der CustomBinding-Klasse aus den Werten einer angegebenen Bindung. |
CustomBinding(BindingElement[]) |
Initialisiert eine neue Instanz der CustomBinding-Klasse aus einem Array von Bindungselementen. |
CustomBinding(IEnumerable<BindingElement>) |
Initialisiert eine neue Instanz der CustomBinding-Klasse mit den Bindungselementen aus einem vollständigen Kanalstapel. |
CustomBinding(String) |
Initialisiert eine neue Instanz der CustomBinding-Klasse. |
CustomBinding(String, String, BindingElement[]) |
Initialisiert eine neue Instanz der CustomBinding-Klasse aus einem Array an Bindungselementen mit einem spezifischen Namen und Namespace. |
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. (Geerbt von Binding) |
Elements |
Ruft die Bindungselemente aus der benutzerdefinierten Bindung ab. |
MessageVersion |
Ruft die Nachrichtenversion ab, die von den Clients und Diensten verwendet wird, die mit der Bindung konfiguriert wurden. (Geerbt von Binding) |
Name |
Ruft den Namen der Bindung ab oder legt diesen fest. (Geerbt von Binding) |
Namespace |
Ruft den XML-Namespace einer Bindung ab oder legt diesen fest. (Geerbt von 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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
Scheme |
Ruft das URI-Schema für den Transport ab, das von der benutzerdefinierten Bindung verwendet wird. |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
BuildChannelListener<TChannel>(Uri, String, Object[]) |
Erstellt den Kanallistener auf dem Dienst, der einen festgelegten Kanaltyp akzeptiert und der die festgelegten Funktionen erfüllt. (Geerbt von Binding) |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
CreateBindingElements() |
Gibt eine generische Auflistung der Bindungselemente von der benutzerdefinierten Bindung zurück. |
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. (Geerbt von Binding) |
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. (Geerbt von Binding) |
ShouldSerializeNamespace() |
Gibt einen Wert zurück, der angibt, ob der Namespace der Bindung serialisiert werden soll. (Geerbt von Binding) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |