BindingElement Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A csatornagyárakat és a csatornafigyelőket a kimenő és bejövő üzenetek feldolgozásához használt különböző típusú csatornákhoz építő kötések elemei.
public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
- Öröklődés
-
BindingElement
- Származtatott
Példák
Az alábbi példa bemutatja, hogyan adhat hozzá átviteli kötési elemet egy egyéni kötéshez, majd hogyan hozhat létre egy csatornafigyelőt, amely képes fogadni a bejövő üzeneteket.
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()
Megjegyzések
A kötések olyan kötéselemek rendezett készletéből állnak, amelyek ebből az absztrakt alaposztályból öröklődnek. Az TransportBindingElement osztály örökli az BindingElement osztályt.
Ha csak a csatornamodellt használja, nem kötelező kötési és kötési elemet létrehozni az átvitelhez. A csatornagyáron és a figyelőn keresztül mindent elvégezhet, amíg nyilvánossá teszik őket.
A Windows kommunikációs alaprendszer (WCF) szolgáltatásmodell egy gyári mintát használ, ahol a kötés a csatornaverem létrehozásához használatos. Ha a WCF szolgáltatásmodellt szeretné használni, akkor egy átviteli kötési elem használata szükséges. Ezt a kötési elemet érdemes kötésbe helyezni, mert ez nem követeli meg, hogy a felhasználók saját egyéni kötést hozzanak létre az átvitelhez. A legjobb, ha kötési és kötési elemet is létrehoz, és elrejti a csatorna-előállítót és a figyelőt a szerelvényen belül.
A küldő oldalon egy kötést használunk egy IChannelFactory, amely viszont létrehoz egy csatorna vermet, és visszaad egy hivatkozást a verem legfelső csatornájára. Az alkalmazás ezután ezzel a csatornával küldhet üzeneteket.
Hasonlóképpen, a fogadó oldalon egy kötést használunk a IChannelListenerbejövő üzeneteket figyelő kötés létrehozásához. A IChannelListener csatornavermek létrehozásával és az alkalmazásnak a felső csatornára mutató hivatkozás átadásával üzeneteket küld a figyelési alkalmazásnak. Az alkalmazás ezt a csatornát használja a bejövő üzenetek fogadásához.
Note
Ha olyan üzenetfejléceket ad hozzá, amelyeket titkosítottnak kell lennie, akkor a kéréskor ChannelProtectionRequirementsvissza kell adnia egy GetProperty<T>(BindingContext) példányt a ChannelProtectionRequirements metódus követelményeivel.
Konstruktorok
| Name | Description |
|---|---|
| BindingElement() |
Inicializálja a BindingElement osztály új példányát. |
| BindingElement(BindingElement) |
Inicializálja az BindingElement osztály új példányát egy megadott kötéselemből. |
Metódusok
| Name | Description |
|---|---|
| BuildChannelFactory<TChannel>(BindingContext) |
Inicializál egy csatorna-előállítót egy adott típusú csatornák létrehozásához a kötési környezetből. |
| BuildChannelListener<TChannel>(BindingContext) |
Inicializál egy csatornafigyelőt egy adott típusú csatornák elfogadásához a kötési környezetből. |
| CanBuildChannelFactory<TChannel>(BindingContext) |
Egy értéket ad vissza, amely jelzi, hogy a kötési elem képes-e csatorna-előállítót létrehozni egy adott csatornatípushoz. |
| CanBuildChannelListener<TChannel>(BindingContext) |
Olyan értéket ad vissza, amely jelzi, hogy a kötési elem képes-e figyelőt létrehozni egy adott csatornatípushoz. |
| Clone() |
Ha egy származtatott osztályban felül van bírálva, a kötéselem-objektum másolatát adja vissza. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetProperty<T>(BindingContext) |
Ha egy származtatott osztályban felül van bírálva, a kötési verem megfelelő rétegéből egy gépelt objektumot ad vissza, ha van ilyen. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |