BindingElement Klasa

Definicja

Elementy powiązań, które tworzą fabryki kanałów i odbiorniki kanałów dla różnych typów kanałów używanych do przetwarzania wychodzących i przychodzących komunikatów.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Dziedziczenie
BindingElement
Pochodne

Przykłady

W poniższym przykładzie pokazano, jak dodać element powiązania transportu do powiązania niestandardowego, a następnie skompilować odbiornik kanału, który może akceptować komunikaty przychodzące.

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

Uwagi

Powiązanie składa się z uporządkowanego zestawu elementów powiązania dziedziczonych z tej abstrakcyjnej klasy bazowej. Klasa TransportBindingElement dziedziczy z BindingElement klasy.

Tworzenie elementu powiązania i powiązania dla transportu jest opcjonalne, jeśli używasz modelu kanału. Możliwe jest, aby zrobić wszystko, czego potrzebujesz za pośrednictwem fabryki kanałów i odbiornika, o ile są one upublicznione.

Model usługi Windows Communication Foundation (WCF) używa wzorca fabryki, w którym powiązanie jest używane do tworzenia stosu kanału. Jeśli chcesz użyć modelu usługi WCF, wymagane jest użycie elementu powiązania transportu. Umieszczenie tego elementu powiązania w powiązanie jest dobrym rozwiązaniem, ponieważ eliminuje to wymaganie, aby użytkownicy utworzyli własne powiązanie niestandardowe dla transportu. Najlepiej jest utworzyć zarówno element powiązania, jak i powiązania, a także ukryć fabrykę kanałów i odbiornik wewnątrz zestawu.

Po stronie wysyłania powiązanie służy do kompilowania IChannelFactoryelementu , który z kolei tworzy stos kanału i zwraca odwołanie do górnego kanału w stosie. Aplikacja może następnie użyć tego kanału do wysyłania komunikatów.

Podobnie po stronie odbierającej powiązanie jest używane do tworzenia IChannelListenerelementu , który nasłuchuje komunikatów przychodzących. Program IChannelListener udostępnia komunikaty do aplikacji nasłuchiwania, tworząc stosy kanałów i przekazując aplikacji odwołanie do górnego kanału. Następnie aplikacja używa tego kanału do odbierania komunikatów przychodzących.

Uwaga

Jeśli dodasz nagłówki komunikatów, które muszą być zaszyfrowane, musisz zwrócić ChannelProtectionRequirements wystąpienie z wymaganiami z metody po wyświetleniu monitu GetProperty<T>(BindingContext) o ChannelProtectionRequirements.

Konstruktory

BindingElement()

Inicjuje nowe wystąpienie klasy BindingElement.

BindingElement(BindingElement)

Inicjuje BindingElement nowe wystąpienie klasy z określonego elementu powiązania.

Metody

BuildChannelFactory<TChannel>(BindingContext)

Inicjuje fabrykę kanałów do tworzenia kanałów określonego typu z kontekstu powiązania.

BuildChannelListener<TChannel>(BindingContext)

Inicjuje odbiornik kanału, aby akceptował kanały określonego typu z kontekstu powiązania.

CanBuildChannelFactory<TChannel>(BindingContext)

Zwraca wartość wskazującą, czy element powiązania może utworzyć fabrykę kanałów dla określonego typu kanału.

CanBuildChannelListener<TChannel>(BindingContext)

Zwraca wartość wskazującą, czy element powiązania może skompilować odbiornik dla określonego typu kanału.

Clone()

Po zastąpieniu klasy pochodnej zwraca kopię obiektu elementu powiązania.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetProperty<T>(BindingContext)

Po zastąpieniu klasy pochodnej zwraca żądany obiekt typu z odpowiedniej warstwy w stosie powiązań.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy