BindingElement Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) |