Binding Classe

Definição

Contém os elementos de associação que especifica os protocolos, transportes e codificadores de mensagem 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();
}

Comentários

Representa uma coleção de elementos de associação, cada um dos quais descreve um aspecto de como um ponto de extremidade se comunica com outros pontos de extremidade e que são criados, de forma consistente, em uma fábrica de canais no cliente e em um ouvinte de canal no serviço. Uma associação contém uma coleção de elementos de associação que correspondem a canais de protocolo, canais de transporte e codificadores de mensagens. Pode haver qualquer número de elementos de associação para canais de protocolo, mas um e apenas um elemento de associação para cada codificador de transporte e mensagem. Normalmente, há seis camadas de elementos de associação em uma associação. Somente os elementos de associação de transporte e codificação na parte inferior da pilha são necessários. Como uma codificação é necessária para cada associação, se uma codificação não for especificada, Windows WCF (Communication Foundation) adicionará uma codificação padrão para você. 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
Flow de transação TransactionFlowBindingElement Não
Confiabilidade ReliableSessionBindingElement Não
Segurança Simétrico, assimétrico, Transport-Level Não
Alteração de forma CompositeDuplexBindingElement Não
Atualizações de transporte Fluxo SSL, fluxo Windows, Resolvedor de Pares Não
Codificação Texto, Binário, MTOM, Personalizado Yes
Transport TCP, Pipes Nomeados, HTTP, HTTPS, MSMQ, Personalizado Yes

Cada elemento de associação fornece a especificação para a criação de 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, há uma fábrica de canais na pilha para cada elemento de associação na associação. O mesmo tipo de mapeamento se aplica aos ouvintes de canal na pilha do serviço. A consistência no cliente e no serviço é essencial para estabelecer a conexão baseada em canal entre esses pontos de extremidade. Cada fábrica e ouvinte, por sua vez, processa o envio e a aceitação dos canais correspondentes na pilha de canais que os conecta, e esses canais podem enviar e receber as mensagens usadas para se comunicar.

Cada instância de um Binding tem um Name e Namespace que juntos o identificam exclusivamente nos metadados do serviço. Se nenhum nome ou namespace for especificado, o WCF adicionará valores padrão para você. O nome padrão é null e o namespace padrão é http://tempuri.org/. Esse nome de usuário para a associação é distinto da especificação do nome do protocolo, que é especificado pela Scheme propriedade. Se você quiser adicionar mais associações HTTP, por exemplo, poderá nomeá-las como desejar e definir todos os esquemas como "http". Não há nenhum aplicativo ou expedição de computador inerente com base no Scheme. Portanto, você evita o problema comum de não conseguir registrar manipuladores adicionais para protocolos conhecidos. Você também pode trabalhar facilmente com várias versões de uma associação lado a lado, dando a cada versão um nome diferente.

A Binding classe implementa a IDefaultCommunicationTimeouts interface para mitigar ataques de DOS (Negação de Serviço) que dependem da associação de recursos para intervalos de tempo estendidos. A implementação especifica os valores de tempo limite de comunicação para abrir e fechar conexões e para as operações de leitura e gravação associadas ao recebimento e envio de mensagens. As propriedades usadas para obter e definir esses tempos limite e suas operações de valores padrão são resumidas na tabela a seguir.

Propriedade Timeout Valor padrão
OpenTimeout 1 minuto
CloseTimeout 1 minuto
SendTimeout 1 minuto
ReceiveTimeout 10 minutos

Ao criar uma associação herdando de Binding, você deve substituir CreateBindingElements.

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

Construtores

Binding()

Inicializa uma nova instância da classe Binding com um namespace e nome padrões.

Binding(String, String)

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

Propriedades

CloseTimeout

Obtém ou define o intervalo concedido para que uma conexão seja fechada antes que o transporte gere uma exceção.

MessageVersion

Obtém a versão de mensagem usada por clientes e serviços configurados com a associação.

Name

Obtém ou define o nome da associação.

Namespace

Obtém ou define o namespace de XML da associação.

OpenTimeout

Obtém ou define o intervalo concedido para que uma conexão seja aberta antes que o transporte gere uma exceção.

ReceiveTimeout

Obtém ou define o intervalo de tempo que uma conexão pode permanecer inativa, durante o qual nenhuma mensagem de aplicativo é recebida, antes de seu descarte.

Scheme

Quando implementado em uma classe derivada, define o esquema de URI que especifica o transporte usado pelas fábricas de canal e de ouvinte criadas pelas associações.

SendTimeout

Obtém ou define o intervalo concedido para uma operação ser concluída antes de o transporte gerar uma exceção.

Métodos

BuildChannelFactory<TChannel>(BindingParameterCollection)

Cria a pilha de fábricas de canais no cliente que cria um tipo de canal especificado e que satisfaz os recursos especificados por uma coleção de parâmetros de associação.

BuildChannelFactory<TChannel>(Object[])

Cria a pilha de fábricas de canais no cliente que cria um tipo de canal especificado e que satisfaz os recursos especificados por uma matriz de objetos.

BuildChannelListener<TChannel>(BindingParameterCollection)

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados por uma coleção de parâmetros de associação.

BuildChannelListener<TChannel>(Object[])

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

BuildChannelListener<TChannel>(Uri, Object[])

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

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

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

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

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

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

Cria o ouvinte de canais no serviço que aceita um tipo de canal especificado e que satisfaz os recursos especificados.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Retorna um valor que indica se a associação atual pode criar uma pilha de fábricas de canais no cliente que satisfaz a coleção de parâmetros de associação especificados.

CanBuildChannelFactory<TChannel>(Object[])

Retorna um valor que indica se a associação atual pode criar uma pilha de fábricas de canais no cliente que satisfaz os requisitos especificados por uma matriz de objetos.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Retorna um valor que indica se a associação atual pode criar uma pilha de ouvintes de canais no serviço que satisfaça a coleção de parâmetros de associação especificados.

CanBuildChannelListener<TChannel>(Object[])

Retorna um valor que indica se a associação atual pode criar uma pilha de ouvintes de canais no serviço que satisfaça os critérios especificados em uma matriz de objetos.

CreateBindingElements()

Quando substituído em uma classe derivada, cria uma coleção que contém os elementos de associação que fazem parte da associação atual.

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

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

Retorna se o nome da associação deve ser serializado.

ShouldSerializeNamespace()

Retorna se o namespace da associação deve ser serializado.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a