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é sestavují objekty pro vytváření kanálů a naslouchací procesy kanálů 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 element 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 prvků vazby, které dědí z této abstraktní základní třídy. Třída TransportBindingElement dědí z BindingElement třídy.
Vytvoření vazby a elementu 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, přes továrnu kanálu a naslouchací proces, 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álu. Pokud chcete použít model služby WCF, je nutné použít element vazby přenosu. Umístění tohoto prvku vazby do vazby je dobrým postupem, protože eliminuje požadavek, aby uživatelé vytvořili vlastní vazbu pro přenos. Nejlepší je vytvořit vazbu i element vazby a skrýt objekt pro vytváření kanálů a naslouchací proces uvnitř sestavení.
Na straně odesílání se vytvoří IChannelFactoryvazba, která zase 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 do naslouchací aplikace 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.
Note
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 zobrazení výzvy ChannelProtectionRequirements.
Konstruktory
| Name | Description |
|---|---|
| BindingElement() |
Inicializuje novou instanci BindingElement třídy. |
| BindingElement(BindingElement) |
Inicializuje novou instanci BindingElement třídy ze zadaného prvku vazby. |
Metody
| Name | Description |
|---|---|
| BuildChannelFactory<TChannel>(BindingContext) |
Inicializuje objekt pro vytváření kanálů zadaného typu z kontextu vazby. |
| BuildChannelListener<TChannel>(BindingContext) |
Inicializuje naslouchací proces kanálu pro příjem kanálů zadaného typu z kontextu vazby. |
| CanBuildChannelFactory<TChannel>(BindingContext) |
Vrátí hodnotu, která určuje, zda element vazby může vytvořit objekt pro vytváření kanálů pro určitý typ kanálu. |
| CanBuildChannelListener<TChannel>(BindingContext) |
Vrátí hodnotu, která označuje, zda element vazby může sestavit naslouchací proces pro určitý typ kanálu. |
| Clone() |
Při přepsání v odvozené třídě vrátí kopii vazby element objektu. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven 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í typ požadovaný objekt z příslušné vrstvy v zásobníku vazby. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |