Binding Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |