BindingElement Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Elementen i bindningarna som skapar kanalfabrikerna och kanallyssnare för olika typer av kanaler som används för att bearbeta utgående och inkommande meddelanden.
public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
- Arv
-
BindingElement
- Härledda
Exempel
I följande exempel visas hur du lägger till ett transportbindningselement i en anpassad bindning och sedan skapar en kanallyssnare som kan acceptera inkommande meddelanden.
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()
Kommentarer
En bindning består av en ordnad uppsättning bindningselement som ärver från den här abstrakta basklassen. Klassen TransportBindingElement ärver från BindingElement klassen.
Det är valfritt att skapa ett bindnings- och bindningselement för din transport om du bara använder kanalmodellen. Det är möjligt att göra allt du behöver via kanalfabriken och lyssnaren så länge de offentliggörs.
Tjänstmodellen Windows Communication Foundation (WCF) använder ett fabriksmönster där bindningen används för att skapa kanalstacken. Om du vill använda WCF-tjänstmodellen måste du använda ett transportbindningselement. Att placera det här bindningselementet i en bindning är en bra idé eftersom det tar bort kravet på att användarna ska skapa en egen anpassad bindning för din transport. Det är bäst att skapa både ett bindnings- och bindningselement och dölja kanalfabriken och lyssnaren i sammansättningen.
På sändningssidan används en bindning för att skapa en IChannelFactory, som i sin tur skapar en kanalstack och returnerar en referens till den översta kanalen i stacken. Programmet kan sedan använda den här kanalen för att skicka meddelanden.
På samma sätt används en bindning på mottagarsidan för att skapa en IChannelListener, som lyssnar efter inkommande meddelanden. IChannelListener Tillhandahåller meddelanden till lyssnarprogrammet genom att skapa kanalstackar och ge programmet en referens till den översta kanalen. Programmet använder sedan den här kanalen för att ta emot inkommande meddelanden.
Note
Om du lägger till meddelandehuvuden GetProperty<T>(BindingContext) som måste krypteras måste du returnera en ChannelProtectionRequirements instans med dina krav från metoden när du tillfrågas om ChannelProtectionRequirements.
Konstruktorer
| Name | Description |
|---|---|
| BindingElement() |
Initierar en ny instans av BindingElement klassen. |
| BindingElement(BindingElement) |
Initierar en ny instans av BindingElement klassen från ett angivet bindningselement. |
Metoder
| Name | Description |
|---|---|
| BuildChannelFactory<TChannel>(BindingContext) |
Initierar en kanalfabrik för att producera kanaler av en angiven typ från bindningskontexten. |
| BuildChannelListener<TChannel>(BindingContext) |
Initierar en kanallyssnare för att acceptera kanaler av en angiven typ från bindningskontexten. |
| CanBuildChannelFactory<TChannel>(BindingContext) |
Returnerar ett värde som anger om bindningselementet kan skapa en kanalfabrik för en viss typ av kanal. |
| CanBuildChannelListener<TChannel>(BindingContext) |
Returnerar ett värde som anger om bindningselementet kan skapa en lyssnare för en viss typ av kanal. |
| Clone() |
När det åsidosättas i en härledd klass returnerar en kopia av bindningselementobjektet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetProperty<T>(BindingContext) |
När det åsidosättas i en härledd klass returneras ett typat objekt som begärs, om det finns, från lämpligt lager i bindningsstacken. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |