BindingElement BindingElement BindingElement BindingElement Class

Definition

Die Bindungselemente, die Kanalfactorys und Kanallistener für verschiedene Kanaltypen erstellen, die notwendig sind, um ausgehende und eingehende Nachrichten zu verarbeiten.The elements of the bindings that build the channel factories and channel listeners for various types of channels that are used to process outgoing and incoming messages.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Vererbung
BindingElementBindingElementBindingElementBindingElement
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.The following example shows how to add a transport binding element to a custom binding and then build a channel listener that can accept incoming messages.

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.A binding consists of an ordered set of binding elements that inherit from this abstract base class. Die TransportBindingElement-Klasse erbt von der BindingElement-Klasse.The TransportBindingElement class inherits from the BindingElement class.

Das Erstellen einer Bindung und eines Bindungselements für den Transport ist optional, wenn Sie nur das Kanalmodell verwenden.Creating a binding and binding element for your transport is optional if you are just using the channel model. Es ist möglich, alles Nötige über die Kanalfactory und den Listener zu erledigen, solange sie öffentlich gemacht werden.It is possible to do everything you need through the channel factory and listener as long as they are made public.

Das Windows Communication Foundation (WCF)-Dienstmodell verwendet ein Factorymuster, in dem die Bindung verwendet wird, um den Kanal Stapel zu erstellen.The Windows Communication Foundation (WCF) service model uses a factory pattern where the binding is used to create the channel stack. Wenn Sie das WCF-Dienstmodell verwenden möchten, ist die Verwendung eines Transport Bindungs Elements erforderlich.If you want to use the WCF service model, then using a transport binding element is required. 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.Placing this binding element into a binding is a good practice because it removes the requirement for users to create their own custom binding for your transport. Sie sollten sowohl eine Bindung als auch ein Bindungselement erstellen und Kanalfactory und -listener in der Assembly verstecken.It is best to create both a binding and binding element, and hide the channel factory and listener inside the assembly.

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.On the sending side, a binding is used to build a IChannelFactory, which in turn builds a channel stack and returns a reference to the top channel in the stack. Die Anwendung kann dann diesen Kanal verwenden, um Nachrichten zu senden.The application can then use this channel to send messages.

Auf der Empfängerseite wird genauso eine Bindung verwendet, um einen IChannelListener zu erstellen, der eingehende Nachrichten überwacht.Similarly, on the receiving side a binding is used to build a IChannelListener, which listens for incoming messages. Der IChannelListener stellt der überwachenden Anwendung Nachrichten zur Verfügung, indem ein Kanalstapel erstellt und der Anwendungsverweis an den oberen Kanal übergeben wird.The IChannelListener provides messages to the listening application by creating channel stacks and handing the application a reference to the top channel. Die Anwendung verwendet diesen Kanal dann zum Empfangen eingehender Nachrichten.The application then uses this channel to receive incoming messages.

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.If you are adding message headers that must be encrypted you must return a ChannelProtectionRequirements instance with your requirements from the GetProperty<T>(BindingContext) method when asked for ChannelProtectionRequirements.

Konstruktoren

BindingElement() BindingElement() BindingElement() BindingElement()

Initialisiert eine neue Instanz der BindingElement-Klasse.Initializes a new instance of the BindingElement class.

BindingElement(BindingElement) BindingElement(BindingElement) BindingElement(BindingElement) BindingElement(BindingElement)

Initialisiert eine neue Instanz der BindingElement-Klasse aus einem angegebenen Bindungselement.Initializes a new instance of the BindingElement class from a specified binding element.

Methoden

BuildChannelFactory<TChannel>(BindingContext) BuildChannelFactory<TChannel>(BindingContext) BuildChannelFactory<TChannel>(BindingContext) BuildChannelFactory<TChannel>(BindingContext)

Initialisiert eine Kanalfactory zum Erstellen von Kanälen eines bestimmten Typs aus dem Bindungskontext.Initializes a channel factory for producing channels of a specified type from the binding context.

BuildChannelListener<TChannel>(BindingContext) BuildChannelListener<TChannel>(BindingContext) BuildChannelListener<TChannel>(BindingContext) BuildChannelListener<TChannel>(BindingContext)

Initialisiert einen Kanallistener, der Kanäle eines bestimmten Typs aus dem Bindungskontext annimmt.Initializes a channel listener to accept channels of a specified type from the binding context.

CanBuildChannelFactory<TChannel>(BindingContext) CanBuildChannelFactory<TChannel>(BindingContext) CanBuildChannelFactory<TChannel>(BindingContext) 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.Returns a value that indicates whether the binding element can build a channel factory for a specific type of channel.

CanBuildChannelListener<TChannel>(BindingContext) CanBuildChannelListener<TChannel>(BindingContext) CanBuildChannelListener<TChannel>(BindingContext) CanBuildChannelListener<TChannel>(BindingContext)

Gibt einen Wert zurück, der angibt, ob das Bindungselement einen Listener für einen bestimmten Typ von Kanal erstellen kann.Returns a value that indicates whether the binding element can build a listener for a specific type of channel.

Clone() Clone() Clone() Clone()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Kopie des Bindungselementobjekts zurück.When overridden in a derived class, returns a copy of the binding element object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetProperty<T>(BindingContext) GetProperty<T>(BindingContext) GetProperty<T>(BindingContext) GetProperty<T>(BindingContext)

Gibt beim Überschreiben in einer abgeleiteten Klasse ggf. ein angefordertes typisiertes Objekt von der entsprechenden Ebene im Bindungsstapel zurück.When overridden in a derived class, returns a typed object requested, if present, from the appropriate layer in the binding stack.

GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für: