BindingElement Classe

Definizione

Elementi delle associazioni che compilano le channel factory e i listener di canale per vari tipi di canali utilizzati per elaborare 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 compilare quindi un listener del canale in grado di accettare messaggi in arrivo.

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 di 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 utilizza soltanto il modello del canale. È possibile eseguire tutte le operazioni necessarie tramite la channel factory e il listener del canale purché questi 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 vuole usare il modello di servizio WCF, è necessario usare un elemento di associazione di trasporto. L'inserimento di questo elemento di associazione in un'associazione ha il vantaggio di esonerare gli utenti dall'obbligo di creare un'associazione personalizzata per il trasporto. È preferibile creare sia un'associazione che un elemento di associazione e nascondere la channel factory e il listener del canale all'interno dell'assembly.

Sul lato di invio, viene utilizzata un'associazione per compilare una classe IChannelFactory che a sua volta compila uno stack di canali e restituisce un riferimento al canale superiore nello stack. L'applicazione può quindi utilizzare questo canale per inviare i messaggi.

Analogamente, sul lato di ricezione viene utilizzata un'associazione per compilare un'interfaccia IChannelListener che rimane in ascolto dei messaggi in arrivo. L'interfaccia IChannelListener fornisce messaggi all'applicazione in attesa creando stack di canale e passando all'applicazione un riferimento al canale superiore. L'applicazione utilizza quindi questo canale per ricevere i messaggi in ingresso.

Nota

Se vengono aggiunte intestazioni di messaggio che devono essere crittografate, è necessario restituire un'istanza ChannelProtectionRequirements dal metodo GetProperty<T>(BindingContext) con i requisiti specifici quando viene richiesto ChannelProtectionRequirements.

Costruttori

BindingElement()

Inizializza una nuova istanza della classe BindingElement.

BindingElement(BindingElement)

Inizializza una nuova istanza della classe BindingElement da un elemento di associazione specificato.

Metodi

BuildChannelFactory<TChannel>(BindingContext)

Inizializza una channel factory per la creazione di canali di un tipo specificato dal contesto dell'associazione.

BuildChannelListener<TChannel>(BindingContext)

Inizializza un listener del canale per accettare canali di un tipo specificato dal contesto dell'associazione.

CanBuildChannelFactory<TChannel>(BindingContext)

Restituisce un valore che indica se l'elemento di associazione può compilare una channel factory per un tipo di canale specifico.

CanBuildChannelListener<TChannel>(BindingContext)

Restituisce un valore che indica se l'elemento di associazione può compilare un listener per un tipo di canale specifico.

Clone()

Quando sottoposto a override in una classe derivata, restituisce una copia dell'oggetto dell'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 dell'associazione.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a