Compartir a través de


BindingElement Clase

Definición

Los elementos de los enlaces que compilan los generadores de canales y las escuchas del canal para varios tipos de canales que se utilizan para procesar mensajes salientes y entrantes.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Herencia
BindingElement
Derivado

Ejemplos

El ejemplo siguiente muestra cómo agregar un elemento de enlace del transporte a un enlace personalizado y, a continuación, compilar una escucha del canal que pueda aceptar mensajes entrantes.

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()

Comentarios

Un enlace está compuesto de un conjunto ordenado de elementos de enlace que heredan de esta clase base abstracta. La clase TransportBindingElement hereda de la clase BindingElement.

Crear un enlace y elemento de enlace para su transporte es opcional si simplemente está utilizando el modelo del canal. Es posible hacer todo lo que necesita a través del generador de canales y la escucha siempre que sean públicos.

El modelo de servicio de Windows Communication Foundation (WCF) usa un patrón de fábrica donde se usa el enlace para crear la pila del canal. Si desea usar el modelo de servicio WCF, se requiere un elemento de enlace de transporte. Colocar este elemento de enlace en un enlace es una buena práctica porque elimina el requisito de que los usuarios creen su propio enlace personalizado para su transporte. Es mejor crear un enlace y elemento de enlace y ocultar el generador de canales y la escucha dentro del ensamblado.

En el lado de envío, se utiliza un enlace para compilar un IChannelFactory, que a su vez compila una pila de canal y devuelve una referencia al canal superior en la pila. La aplicación puede utilizar a continuación este canal para enviar los mensajes.

De manera similar, en el lado de la recepción, se usa un enlace para compilar un IChannelListener, que escucha los mensajes entrantes. IChannelListener proporciona mensajes a la aplicación de escucha creando pilas de canal y entregando a la aplicación una referencia al canal superior. La aplicación utiliza a continuación este canal para recibir mensajes entrantes.

Nota

Si está agregando los encabezados del mensaje que se deben cifrar debe devolver una instancia ChannelProtectionRequirements con sus requisitos del método GetProperty<T>(BindingContext) cuando se pregunte por ChannelProtectionRequirements.

Constructores

BindingElement()

Inicializa una nueva instancia de la clase BindingElement.

BindingElement(BindingElement)

Inicializa una nueva instancia de la clase BindingElement a partir de un elemento de enlace especificado.

Métodos

BuildChannelFactory<TChannel>(BindingContext)

Inicializa un generador de canales para generar canales de un tipo especificado a partir del contexto de enlace.

BuildChannelListener<TChannel>(BindingContext)

Inicializa una escucha de canales para aceptar canales de un tipo especificado a partir del contexto de enlace.

CanBuildChannelFactory<TChannel>(BindingContext)

Devuelve un valor que indica si el elemento de enlace puede crear un generador de canales para un tipo específico de canal.

CanBuildChannelListener<TChannel>(BindingContext)

Devuelve un valor que indica si el elemento de enlace puede compilar una escucha para un tipo específico de canal.

Clone()

Devuelve una copia del objeto de elemento de enlace cuando se invalida en una clase derivada.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetProperty<T>(BindingContext)

Cuando se invalida en una clase derivada, devuelve un objeto escrito solicitado, de estar presente, del nivel apropiado en la pila de enlace.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a