Partilhar via


BindingElement Classe

Definição

Os elementos de associação que compilam as fábricas de canais e ouvintes de canais para vários tipos de canais que são usados para processar mensagens de entrada e saída.

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
Herança
BindingElement
Derivado

Exemplos

O exemplo a seguir mostra como adicionar um elemento de associação de transporte a uma associação personalizada e, em seguida, criar um ouvinte de canal que possa aceitar mensagens de entrada.

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

Comentários

Uma associação consiste em um conjunto ordenado de elementos de associação que herdam dessa classe base abstrata. A classe TransportBindingElement herda da classe BindingElement.

A criação de um elemento de associação e associação para o transporte será opcional se você estiver apenas usando o modelo de canal. É possível fazer tudo o que você precisa por meio da fábrica de canais e do ouvinte, desde que eles sejam tornados públicos.

O modelo de serviço WCF (Windows Communication Foundation) usa um padrão de fábrica em que a associação é usada para criar a pilha de canais. Se você quiser usar o modelo de serviço WCF, será necessário usar um elemento de associação de transporte. Colocar esse elemento de associação em uma associação é uma boa prática porque remove o requisito para que os usuários criem sua própria associação personalizada para seu transporte. É melhor criar um elemento de associação e associação e ocultar a fábrica de canais e o ouvinte dentro do assembly.

No lado de envio, uma associação é usada para criar um IChannelFactory, que, por sua vez, cria uma pilha de canais e retorna uma referência ao canal superior da pilha. Em seguida, o aplicativo pode usar esse canal para enviar mensagens.

Da mesma forma, no lado receptor, uma associação é usada para criar um IChannelListener, que escuta mensagens de entrada. O IChannelListener fornece mensagens para o aplicativo de escuta criando pilhas de canais e entregando ao aplicativo uma referência ao canal superior. Em seguida, o aplicativo usa esse canal para receber mensagens de entrada.

Observação

Se você estiver adicionando cabeçalhos de mensagem que devem ser criptografados, deverá retornar uma ChannelProtectionRequirements instância com seus requisitos do GetProperty<T>(BindingContext) método quando solicitado ChannelProtectionRequirements.

Construtores

BindingElement()

Inicializa uma nova instância da classe BindingElement.

BindingElement(BindingElement)

Inicializa uma nova instância da classe BindingElement de um elemento de associação especificado.

Métodos

BuildChannelFactory<TChannel>(BindingContext)

Inicializa uma fábrica de canais para produzir canais de um tipo especificado do contexto de associação.

BuildChannelListener<TChannel>(BindingContext)

Inicializa um ouvinte de canais para aceitar canais de um tipo especificado do contexto de associação.

CanBuildChannelFactory<TChannel>(BindingContext)

Retorna um valor que indica se o elemento de associação pode criar uma fábrica de canais para um tipo de canal específico.

CanBuildChannelListener<TChannel>(BindingContext)

Retorna um valor que indica se o elemento de associação pode criar um ouvinte para um tipo de canal específico.

Clone()

Quando substituído em uma classe derivada, retorna uma cópia do objeto do elemento de associação.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

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

Quando substituído em uma classe derivada, retorna um objeto tipado solicitado, se presente, da camada apropriada na pilha de associação.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a