BindingElement Klasse

Definition

Die Elemente der Bindungen, die die Kanalfabriken und Kanallistener für verschiedene Arten von Kanälen erstellen, die zum Verarbeiten ausgehender und eingehender Nachrichten verwendet werden.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Vererbung
BindingElement
Abgeleitet

Beispiele

Das folgende Beispiel zeigt, wie Sie einer benutzerdefinierten Bindung ein Transportbindungselement hinzufügen und dann einen Kanallistener erstellen, der eingehende Nachrichten akzeptieren kann.

CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
BindingParameterCollection paramCollection = new BindingParameterCollection();
IChannelListener<IReplyChannel> listener = binding.BuildChannelListener<IReplyChannel>
    (new Uri("http://localhost:8000/ChannelApp"), paramCollection);

listener.Open();
IReplyChannel channel = listener.AcceptChannel();
Console.WriteLine("Listening for messages");
channel.Open();
RequestContext request = channel.ReceiveRequest();
Message msg = request.RequestMessage;
Console.WriteLine("Message Received");
Console.WriteLine("Message Action: {0}", msg.Headers.Action);

if (msg.Headers.Action == "hello")
{
    Message reply = Message.CreateMessage(MessageVersion.Default, "wcf");
    request.Reply(reply);
}

msg.Close();
channel.Close();
listener.Close();
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
Dim paramCollection As New BindingParameterCollection()

Dim listener As IChannelListener(Of IReplyChannel)
listener = binding.BuildChannelListener(Of IReplyChannel)(New Uri("http://localhost/channelApp"), paramCollection)

listener.Open()
Dim channel As IReplyChannel = listener.AcceptChannel()
Console.WriteLine("Listening for messages")
channel.Open()
Dim request As RequestContext = channel.ReceiveRequest()
Dim msg As Message = request.RequestMessage
Console.WriteLine("Message Received")
Console.WriteLine("Message Action: {0}", msg.Headers.Action)

If (msg.Headers.Action = "hello") Then

    Dim reply As Message = Message.CreateMessage(MessageVersion.Default, "wcf")
    request.Reply(reply)
End If

msg.Close()
channel.Close()
listener.Close()

Hinweise

Eine Bindung besteht aus einem sortierten Satz von Bindungselementen, die von dieser abstrakten Basisklasse erben. Die TransportBindingElement Klasse erbt von der BindingElement Klasse.

Das Erstellen eines Bindungs- und Bindungselements für Den Transport ist optional, wenn Sie nur das Kanalmodell verwenden. Es ist möglich, alles zu tun, was Sie über die Kanalfactory und den Listener benötigen, solange sie öffentlich gemacht werden.

Das Windows Communication Foundation (WCF)-Dienstmodell verwendet ein Factorymuster, in dem die Bindung zum Erstellen des Kanalstapels verwendet wird. Wenn Sie das WCF-Dienstmodell verwenden möchten, ist die Verwendung eines Transportbindungselements erforderlich. Das Platzieren dieses Bindungselements in eine Bindung ist eine bewährte Methode, da es die Anforderung für Benutzer zum Erstellen einer eigenen benutzerdefinierten Bindung für Ihren Transport entfernt. Es empfiehlt sich, sowohl ein Bindungs- als auch ein Bindungselement zu erstellen und die Kanalfactory und den Listener innerhalb der Assembly auszublenden.

Auf der sendenden Seite wird eine Bindung verwendet, um eine IChannelFactory, die wiederum einen Kanalstapel erstellt und einen Verweis auf den oberen Kanal im Stapel zurückgibt. Die Anwendung kann dann diesen Kanal verwenden, um Nachrichten zu senden.

Ebenso wird auf der empfangenden Seite eine Bindung verwendet, um eine IChannelListenerBindung zu erstellen, die auf eingehende Nachrichten lauscht. Die IChannelListener Stellt Nachrichten für die Überwachungsanwendung bereit, indem Kanalstapel erstellt und die Anwendung einen Verweis auf den oberen Kanal übergeben. Die Anwendung verwendet dann diesen Kanal, um eingehende Nachrichten zu empfangen.

Note

Wenn Sie Nachrichtenkopfzeilen hinzufügen, die verschlüsselt werden müssen, müssen Sie eine ChannelProtectionRequirements Instanz mit Ihren Anforderungen aus der GetProperty<T>(BindingContext) Methode zurückgeben, wenn Sie gefragt ChannelProtectionRequirementswerden.

Konstruktoren

Name Beschreibung
BindingElement()

Initialisiert eine neue Instanz der BindingElement-Klasse.

BindingElement(BindingElement)

Initialisiert eine neue Instanz der BindingElement Klasse aus einem angegebenen Bindungselement.

Methoden

Name Beschreibung
BuildChannelFactory<TChannel>(BindingContext)

Initialisiert eine Kanalfactory zum Erstellen von Kanälen eines bestimmten Typs aus dem Bindungskontext.

BuildChannelListener<TChannel>(BindingContext)

Initialisiert einen Kanallistener, um Kanäle eines bestimmten Typs aus dem Bindungskontext zu akzeptieren.

CanBuildChannelFactory<TChannel>(BindingContext)

Gibt einen Wert zurück, der angibt, ob das Bindungselement eine Kanalfactory für einen bestimmten Kanaltyp erstellen kann.

CanBuildChannelListener<TChannel>(BindingContext)

Gibt einen Wert zurück, der angibt, ob das Bindungselement einen Listener für einen bestimmten Kanaltyp erstellen kann.

Clone()

Wenn eine abgeleitete Klasse überschrieben wird, wird eine Kopie des Bindungselementobjekts zurückgegeben.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetProperty<T>(BindingContext)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein eingegebenes Objekt zurückgegeben, das( falls vorhanden) von 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)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: