BindingElement Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Prvky vazeb, které vytvářejí továrny kanálů a naslouchací procesy pro různé typy kanálů, které se používají ke zpracování odchozích a příchozích zpráv.
public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
- Dědičnost
-
BindingElement
- Odvozené
Příklady
Následující příklad ukazuje, jak přidat prvek vazby přenosu do vlastní vazby a pak sestavit naslouchací proces kanálu, který může přijímat příchozí zprávy.
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()
Poznámky
Vazba se skládá z uspořádané sady vazeb elementů, které dědí z této abstraktní základní třídy. Třída TransportBindingElement dědí z BindingElement třídy.
Vytvoření vazby a prvku vazby pro přenos je volitelné, pokud právě používáte model kanálu. Je možné udělat vše, co potřebujete, prostřednictvím továrny kanálu a naslouchacího procesu, pokud jsou veřejně přístupné.
Model služby Windows Communication Foundation (WCF) používá vzor továrny, ve kterém se vazba používá k vytvoření zásobníku kanálů. Pokud chcete použít model služby WCF, je potřeba použít element transportní vazby. Umístění tohoto prvku vazby do vazby je osvědčeným postupem, protože odebere požadavek, aby uživatelé vytvořili vlastní vazbu pro přenos. Nejlepší je vytvořit vazbu i prvek vazby a skrýt objekt pro vytváření kanálů a naslouchací proces uvnitř sestavení.
Na straně odesílání se vazba používá k sestavení IChannelFactory, která pak sestaví zásobník kanálu a vrátí odkaz na horní kanál v zásobníku. Aplikace pak může tento kanál použít k odesílání zpráv.
Podobně na přijímající straně se vazba používá k sestavení IChannelListener, která naslouchá příchozím zprávám. Poskytuje IChannelListener zprávy pro naslouchací aplikaci vytvořením zásobníků kanálů a předáním aplikace odkaz na horní kanál. Aplikace pak tento kanál použije k příjmu příchozích zpráv.
Poznámka
Pokud přidáváte hlavičky zpráv, které musí být zašifrovány, musíte vrátit ChannelProtectionRequirements instanci s vašimi požadavky z GetProperty<T>(BindingContext) metody při zadání požadavku ChannelProtectionRequirements.
Konstruktory
BindingElement() |
Inicializuje novou instanci BindingElement třídy. |
BindingElement(BindingElement) |
Inicializuje novou instanci BindingElement třídy ze zadaného elementu vazby. |
Metody
BuildChannelFactory<TChannel>(BindingContext) |
Inicializuje objekt pro vytváření kanálů zadaného typu z kontextu vazby. |
BuildChannelListener<TChannel>(BindingContext) |
Inicializuje naslouchací proces kanálu tak, aby přijímal kanály zadaného typu z kontextu vazby. |
CanBuildChannelFactory<TChannel>(BindingContext) |
Vrátí hodnotu, která označuje, zda element vazby může vytvořit objekt pro vytváření kanálů pro konkrétní typ kanálu. |
CanBuildChannelListener<TChannel>(BindingContext) |
Vrátí hodnotu, která označuje, zda prvek vazby může vytvořit naslouchací proces pro konkrétní typ kanálu. |
Clone() |
Při přepsání v odvozené třídě vrátí kopii objektu vazby elementu. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetProperty<T>(BindingContext) |
Při přepsání v odvozené třídě vrátí požadovaný typ objektu z příslušné vrstvy v zásobníku vazeb. |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |