BindingElement Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Elementi delle associazioni che creano channel factory e listener di canale per vari tipi di canali usati per elaborare i messaggi in uscita e in arrivo.
public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
- Ereditarietà
-
BindingElement
- Derivato
Esempio
Nell'esempio seguente viene illustrato come aggiungere un elemento di associazione di trasporto a un'associazione personalizzata e quindi creare un listener del canale in grado di accettare messaggi in ingresso.
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()
Commenti
Un'associazione è costituita da un set ordinato di elementi di associazione che ereditano da questa classe base astratta. La classe TransportBindingElement eredita dalla classe BindingElement.
La creazione di un'associazione e di un elemento di associazione per il trasporto è facoltativa se si usa solo il modello di canale. È possibile eseguire tutte le operazioni necessarie tramite la channel factory e il listener, purché siano resi pubblici.
Il modello di servizio Windows Communication Foundation (WCF) usa un modello factory in cui viene usata l'associazione per creare lo stack di canali. Se si desidera utilizzare il modello di servizio WCF, è necessario usare un elemento di associazione di trasporto. L'inserimento di questo elemento di associazione in un'associazione è una procedura consigliata perché rimuove il requisito per gli utenti di creare un'associazione personalizzata per il trasporto. È consigliabile creare un'associazione e un elemento di associazione e nascondere la channel factory e il listener all'interno dell'assembly.
Sul lato di invio, un'associazione viene usata per compilare un IChannelFactoryoggetto , che a sua volta compila uno stack di canali e restituisce un riferimento al canale superiore nello stack. L'applicazione può quindi usare questo canale per inviare messaggi.
Analogamente, sul lato ricevente viene usata un'associazione per compilare un IChannelListeneroggetto , in ascolto dei messaggi in arrivo. IChannelListener fornisce messaggi all'applicazione in ascolto creando stack di canali e consegnando all'applicazione un riferimento al canale principale. L'applicazione usa quindi questo canale per ricevere messaggi in arrivo.
Annotazioni
Se si aggiungono intestazioni di messaggio che devono essere crittografate, è necessario restituire un'istanza ChannelProtectionRequirements con i requisiti del GetProperty<T>(BindingContext) metodo quando viene richiesto ChannelProtectionRequirements.
Costruttori
| Nome | Descrizione |
|---|---|
| BindingElement() |
Inizializza una nuova istanza della classe BindingElement. |
| BindingElement(BindingElement) |
Inizializza una nuova istanza della BindingElement classe da un elemento di associazione specificato. |
Metodi
| Nome | Descrizione |
|---|---|
| BuildChannelFactory<TChannel>(BindingContext) |
Inizializza una channel factory per la produzione di canali di un tipo specificato dal contesto di associazione. |
| BuildChannelListener<TChannel>(BindingContext) |
Inizializza un listener del canale per accettare canali di un tipo specificato dal contesto di associazione. |
| CanBuildChannelFactory<TChannel>(BindingContext) |
Restituisce un valore che indica se l'elemento di associazione può compilare una channel factory per un tipo specifico di canale. |
| CanBuildChannelListener<TChannel>(BindingContext) |
Restituisce un valore che indica se l'elemento di associazione può compilare un listener per un tipo specifico di canale. |
| Clone() |
Quando sottoposto a override in una classe derivata, restituisce una copia dell'oggetto elemento di associazione. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetProperty<T>(BindingContext) |
Quando sottoposto a override in una classe derivata, restituisce un oggetto tipizzato richiesto, se presente, dal livello appropriato nello stack di binding. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |