Binding Classe

Definição

Contém os elementos de ligação que especificam os protocolos, transportes e codificadores de mensagens usados para comunicação entre clientes e serviços.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
Herança
Binding
Derivado
Implementações

Exemplos

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

Observações

Representa um conjunto de elementos de ligação, cada um dos quais descreve um aspeto de como um endpoint comunica com outros endpoints e que são construídos, de forma consistente, numa fábrica de canal no cliente e num ouvinte de canal no serviço. Uma ligação contém um conjunto de elementos de ligação que correspondem a canais de protocolo, canais de transporte e codificadores de mensagens. Pode haver qualquer número de elementos de ligação para canais de protocolo, mas apenas um elemento de ligação para cada um do codificador de transporte e de mensagens. Normalmente existem seis camadas de elementos de ligação numa ligação. São necessários apenas os elementos de ligação de transporte e codificação na base da pilha. Como é necessária uma codificação para cada binding, se não for especificada a codificação, o Windows Communication Foundation (WCF) adiciona uma codificação padrão para si. O padrão é Text/XML para os transportes HTTP e HTTPS, e Binary para outros transportes.

A tabela a seguir resume as opções para cada camada.

Camada Opções Obrigatório
Fluxo de transações TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Segurança Simétrico, assimétrico, Transport-Level No
Mudança de Forma CompositeDuplexBindingElement No
Melhorias nos Transportes Stream SSL, stream Windows, Peer Resolver No
Codificação Texto, binário, MTOM, personalizado Yes
Transport TCP, pipes nomeados, HTTP, HTTPS, MSMQ, Personalizado Yes

Cada elemento de ligação fornece a especificação para construir uma fábrica de canais no cliente e um ouvinte de canal no serviço. Quando a pilha de fábrica de canais é construída, por exemplo, existe uma fábrica de canais na pilha para cada elemento de ligação na ligação. O mesmo tipo de mapeamento aplica-se aos ouvintes de canais na pilha do serviço. A consistência entre o cliente e o serviço é fundamental para estabelecer a ligação baseada em canal entre estes endpoints. Cada fábrica e ouvinte, por sua vez, processa o envio e a aceitação dos canais correspondentes na pilha de canais que os liga, e estes canais podem então enviar e receber as mensagens usadas para comunicar.

Cada instância de a Binding tem um Name e Namespace que juntos a identificam de forma única nos metadados do serviço. Se não for especificado nome ou espaço de nomes, o WCF adiciona valores predefinidos para si. O nome padrão é null e o espaço de nomes padrão é http://tempuri.org/. Este nome de utilizador para a ligação é distinto da especificação do nome do protocolo, que é especificada pela Scheme propriedade. Se quiseres adicionar mais bindings HTTP, por exemplo, podes nomeá-los como quiseres e definir todos os seus esquemas para "http". Não existe uma aplicação inerente ou despacho de máquina baseado no Scheme. Assim, evita-se o problema comum de não conseguir registar manipuladores adicionais para protocolos bem conhecidos. Também pode facilmente trabalhar com múltiplas versões de uma encadernação lado a lado, dando a cada versão um nome diferente.

A Binding classe implementa a IDefaultCommunicationTimeouts interface para mitigar ataques de Negação de Serviço (DOS) que dependem de ocupar recursos durante longos períodos de tempo. A implementação especifica os valores de timeout de comunicação para abertura e encerramento de ligações e para as operações de leitura e escrita associadas à receção e envio de mensagens. As propriedades usadas para obter e definir estes timeouts e as suas operações de valores padrão são resumidas na tabela seguinte.

Propriedade de Tempo de Extinção Valor padrão
OpenTimeout 1 minuto
CloseTimeout 1 minuto
SendTimeout 1 minuto
ReceiveTimeout 10 minutos

Quando cria uma ligação ao herdar de Binding, tem de sobrescrever CreateBindingElements.

Além disso, pode definir os seus próprios elementos de ligação e inseri-los entre qualquer uma das camadas definidas na tabela anterior. Para obter mais informações, consulte a classe CustomBinding.

Construtores

Name Description
Binding()

Inicializa uma nova instância da Binding classe com um nome e espaço de nomes predefinidos.

Binding(String, String)

Inicializa uma nova instância da Binding classe a partir de uma ligação especificada do serviço.

Propriedades

Name Description
CloseTimeout

Obtém ou define o intervalo de tempo fornecido para que uma ligação se feche antes de o transporte levantar uma exceção.

MessageVersion

Obtém a versão da mensagem usada por clientes e serviços configurada com a ligação.

Name

Recebe ou define o nome da ligação.

Namespace

Obtém ou define o namespace XML do binding.

OpenTimeout

Obtém ou define o intervalo de tempo fornecido para que uma ligação se abra antes de o transporte levantar uma exceção.

ReceiveTimeout

Obtém ou define o intervalo de tempo em que uma ligação pode permanecer inativa, durante o qual não são recebidas mensagens de aplicação, antes de ser cortada.

Scheme

Quando implementado numa classe derivada, define o esquema URI que especifica o transporte usado pelas fábricas de canais e ouvintes construídas pelas ligações.

SendTimeout

Obtém ou define o intervalo de tempo fornecido para que uma operação de escrita seja concluída antes de o transporte levantar uma exceção.

Métodos

Name Description
BuildChannelFactory<TChannel>(BindingParameterCollection)

Constrói a pilha de channel factory no cliente que cria um tipo específico de canal e que satisfaz as características especificadas por um conjunto de parâmetros de ligação.

BuildChannelFactory<TChannel>(Object[])

Constrói a stack de channel factory no cliente que cria um tipo específico de canal e que satisfaz as características especificadas por um array de objetos.

BuildChannelListener<TChannel>(BindingParameterCollection)

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as características especificadas por um conjunto de parâmetros de ligação.

BuildChannelListener<TChannel>(Object[])

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, Object[])

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

BuildChannelListener<TChannel>(Uri, String, Object[])

Constrói o ouvinte de canal no serviço que aceita um tipo específico de canal e que satisfaz as funcionalidades especificadas.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Devolve um valor que indica se a ligação atual pode construir uma pilha de channel factory no cliente que satisfaz a coleção de parâmetros de ligação especificada.

CanBuildChannelFactory<TChannel>(Object[])

Devolve um valor que indica se a ligação atual pode construir uma stack de channel factory no cliente que satisfaz os requisitos especificados por um array de objetos.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Devolve um valor que indica se a ligação atual pode construir uma pilha de ouvintes de canal no serviço que satisfaz a coleção de parâmetros de ligação especificada.

CanBuildChannelListener<TChannel>(Object[])

Devolve um valor que indica se a ligação atual pode construir uma pilha de ouvintes de canal no serviço que satisfaça os critérios especificados num array de objetos.

CreateBindingElements()

Quando sobrescrito numa classe derivada, cria-se uma coleção que contém os elementos de ligação que fazem parte da ligação atual.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

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

Devolve um objeto tipado solicitado, se presente, da camada apropriada na pilha de ligação.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ShouldSerializeName()

Devolve se o nome da ligação deve ser serializado.

ShouldSerializeNamespace()

Devolve se o namespace da ligação deve ser serializado.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a