BindingElement Klasse

Definition

Die Bindungselemente, die Kanalfactorys und Kanallistener für verschiedene Kanaltypen erstellen, die notwendig sind, um ausgehende und eingehende Nachrichten zu verarbeiten.

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

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie ein Transportbindungselement zu einer benutzerdefinierten Bindung 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 einer geordneten Menge Bindungselemente, die von dieser abstrakten Basisklasse erben. Die TransportBindingElement-Klasse erbt von der BindingElement-Klasse.

Das Erstellen einer Bindung und eines Bindungselements für den Transport ist optional, wenn Sie nur das Kanalmodell verwenden. Es ist möglich, alles Nötige über die Kanalfactory und den Listener zu erledigen, solange sie öffentlich gemacht werden.

Das Windows Communication Foundation (WCF)-Dienstmodell verwendet ein Fabrikmuster, in dem die Bindung zum Erstellen des Kanalstapels verwendet wird. Wenn Sie das WCF-Dienstmodell verwenden möchten, ist die Verwendung eines Transportbindungselements erforderlich. Es ist von Vorteil, wenn Sie dieses Bindungselement in eine Bindung einfügen, da Benutzer dann keine eigene benutzerdefinierte Bindung für den Transport erstellen müssen. Sie sollten sowohl eine Bindung als auch ein Bindungselement erstellen und Kanalfactory und -listener in der Assembly verstecken.

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

Auf der Empfängerseite wird genauso eine Bindung verwendet, um einen IChannelListener zu erstellen, der eingehende Nachrichten überwacht. Der IChannelListener stellt der überwachenden Anwendung Nachrichten zur Verfügung, indem ein Kanalstapel erstellt und der Anwendungsverweis an den oberen Kanal übergeben wird. Die Anwendung verwendet diesen Kanal dann zum Empfangen eingehender Nachrichten.

Hinweis

Falls Sie Nachrichtenheader hinzufügen, die verschlüsselt werden müssen, müssen Sie eine ChannelProtectionRequirements-Instanz mit Ihren Anforderungen an die GetProperty<T>(BindingContext)-Methode zurückgeben, wenn Sie nach ChannelProtectionRequirements gefragt werden.

Konstruktoren

BindingElement()

Initialisiert eine neue Instanz der BindingElement-Klasse.

BindingElement(BindingElement)

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

Methoden

BuildChannelFactory<TChannel>(BindingContext)

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

BuildChannelListener<TChannel>(BindingContext)

Initialisiert einen Kanallistener, der Kanäle eines bestimmten Typs aus dem Bindungskontext annimmt.

CanBuildChannelFactory<TChannel>(BindingContext)

Gibt einen Wert zurück, der angibt, ob das Bindungselement eine Kanalfactory für einen bestimmten Typ von Kanälen erstellen kann.

CanBuildChannelListener<TChannel>(BindingContext)

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

Clone()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Kopie des Bindungselementobjekts 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>(BindingContext)

Gibt beim Überschreiben in einer abgeleiteten Klasse 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)
ToString()

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

(Geerbt von Object)

Gilt für