BindingElement Klas

Definitie

De elementen van de bindingen die de kanaalfactory's en kanaallisteners bouwen voor verschillende soorten kanalen die worden gebruikt voor het verwerken van uitgaande en binnenkomende berichten.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Overname
BindingElement
Afgeleid

Voorbeelden

In het volgende voorbeeld ziet u hoe u een transportbindingselement toevoegt aan een aangepaste binding en vervolgens een kanaallistener bouwt die binnenkomende berichten kan accepteren.

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()

Opmerkingen

Een binding bestaat uit een geordende set bindingselementen die overnemen van deze abstracte basisklasse. De TransportBindingElement klasse neemt over van de BindingElement klasse.

Het maken van een bindings- en bindingselement voor uw transport is optioneel als u alleen het kanaalmodel gebruikt. Het is mogelijk om alles te doen wat u nodig hebt via de kanaalfactory en listener zolang ze openbaar worden gemaakt.

Het servicemodel Windows Communication Foundation (WCF) maakt gebruik van een fabriekspatroon waarin de binding wordt gebruikt om de kanaalstack te maken. Als u het WCF-servicemodel wilt gebruiken, is het gebruik van een transportbindingselement vereist. Het plaatsen van dit bindingselement in een binding is een goede gewoonte omdat hiermee de vereiste voor gebruikers wordt verwijderd om hun eigen aangepaste binding voor uw transport te maken. U kunt het beste zowel een bindings- als bindingselement maken en de kanaalfactory en listener in de assembly verbergen.

Aan de verzendzijde wordt een binding gebruikt om een IChannelFactory, die op zijn beurt een kanaalstack bouwt en een verwijzing naar het bovenste kanaal in de stack retourneert. De toepassing kan dit kanaal vervolgens gebruiken om berichten te verzenden.

Op dezelfde manier wordt aan de ontvangende zijde een binding gebruikt om een IChannelListenerbinding te bouwen, die luistert naar binnenkomende berichten. Het IChannelListener biedt berichten aan de luistertoepassing door kanaalstacks te maken en de toepassing een verwijzing naar het bovenste kanaal te geven. De toepassing gebruikt dit kanaal vervolgens om binnenkomende berichten te ontvangen.

Note

Als u berichtkoppen toevoegt die moeten worden versleuteld, moet u een ChannelProtectionRequirements exemplaar retourneren met uw vereisten van de GetProperty<T>(BindingContext) methode wanneer u hier om wordt gevraagd ChannelProtectionRequirements.

Constructors

Name Description
BindingElement()

Initialiseert een nieuw exemplaar van de BindingElement klasse.

BindingElement(BindingElement)

Initialiseert een nieuw exemplaar van de BindingElement klasse vanuit een opgegeven bindingselement.

Methoden

Name Description
BuildChannelFactory<TChannel>(BindingContext)

Initialiseert een kanaalfactory voor het produceren van kanalen van een opgegeven type vanuit de bindingscontext.

BuildChannelListener<TChannel>(BindingContext)

Initialiseert een kanaallistener om kanalen van een opgegeven type te accepteren vanuit de bindingscontext.

CanBuildChannelFactory<TChannel>(BindingContext)

Retourneert een waarde die aangeeft of het bindingselement een kanaalfactory kan bouwen voor een specifiek type kanaal.

CanBuildChannelListener<TChannel>(BindingContext)

Retourneert een waarde die aangeeft of het bindingselement een listener kan bouwen voor een specifiek type kanaal.

Clone()

Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u een kopie van het object voor het bindingselement.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetProperty<T>(BindingContext)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een getypt object geretourneerd dat is aangevraagd, indien aanwezig, van de juiste laag in de bindingsstack.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op