Ligações e elementos de ligação

Ligações são coleções de elementos de configuração especiais, chamados elementos de ligação, que são avaliados pelo tempo de execução do serviço sempre que um cliente ou ponto de extremidade de serviço está sendo construído. O tipo e a ordem dos elementos de ligação dentro de uma associação determinam a seleção e a ordem de empilhamento do protocolo e dos canais de transporte na pilha de canais de um ponto de extremidade.

As ligações, especialmente as fornecidas pelo sistema, geralmente também têm várias propriedades de configuração que refletem as propriedades mais comumente modificadas dos elementos de ligação encapsulados.

Uma ligação deve conter exatamente um elemento de ligação de transporte. Cada elemento de vinculação de transporte implica um elemento de vinculação de codificação de mensagem padrão, que pode ser substituído adicionando no máximo um elemento de vinculação de codificação de mensagem à vinculação. Além dos elementos de ligação de transporte e codificador, a associação pode conter qualquer número de elementos de ligação de protocolo que, juntos, implementam a funcionalidade necessária para atender e enviar uma mensagem SOAP de um ponto de extremidade para outro. Para obter detalhes, consulte Usando ligações para configurar serviços e clientes.

Estendendo ligações e elementos de vinculação

O Windows Communication Foundation (WCF) inclui associações fornecidas pelo sistema que abrangem uma ampla gama de cenários. (Para mais informações, ver Ligações fornecidas pelo sistema.) No entanto, pode haver momentos em que você precise criar e usar uma associação que não esteja incluída no WCF. Os cenários a seguir exigem a criação de uma nova vinculação.

  • Para usar um novo elemento de vinculação (como um novo elemento de vinculação de transporte, codificação ou protocolo), você deve criar uma nova associação que inclua esse elemento de vinculação. Por exemplo, se você adicionou um personalizado UdpTransportBindingElement para transporte UDP, precisará criar uma nova associação para usá-lo. Para obter informações sobre como executar esse comportamento usando o System.ServiceModel.Channels.CustomBinding tipo, consulte Ligações personalizadas.

  • Para configurar elementos de vinculação existentes de forma que as associações fornecidas pelo sistema não sejam expostas em propriedades públicas. Por exemplo, você deve criar uma nova associação para alterar a ordem na qual as operações de assinatura e criptografia são executadas. Para obter informações sobre como executar esse comportamento, consulte Como personalizar uma ligação fornecida pelo sistema.

  • Para estabelecer associações padrão corporativas que expõem apenas opções de configuração específicas. Por exemplo, para criar para a sua empresa uma variante do para a sua empresa em que a segurança não pode ser desativada, crie uma nova ligação que se comporte como o , mas com a WSHttpBindingWSHttpBindingsegurança sempre ativada. Para obter detalhes, consulte Criando ligações definidas pelo usuário.

  • Para executar alguma personalização de metadados, normalmente, mas não necessariamente, para configurar ou usar algum elemento de vinculação personalizado. Para obter mais informações sobre como fornecer suporte a metadados para associações e elementos de ligação, consulte Suporte a configuração e metadados.

Canais, ligações e elementos de ligação

Ligações e elementos de ligação são a conexão entre o modelo de programação de aplicativo, que inclui os atributos e comportamentos, e o modelo de canal, que inclui as fábricas e ouvintes, codificadores de mensagens e implementações de transporte e protocolo. Normalmente, elementos de ligação e associações são implementados para permitir que os canais sejam usados pela camada de aplicativo.

A camada de canal entrega ou recebe mensagens de e para a camada de serviço e transporta essas mensagens entre pontos de extremidade. Em um cliente, a camada de canal é uma pilha de fábricas de canais que criam canais para um ponto de extremidade de rede. Em um serviço, a camada de canal é uma pilha de ouvintes de canal que aceitam canais recebidos em um ponto de extremidade de rede.

Existem dois tipos gerais de canais: canais de protocolo e canais de transporte. Os canais de transporte são responsáveis pela transmissão real de uma mensagem de um ponto final de rede para outro. Os canais de transporte devem ter um codificador de mensagem padrão e devem ser capazes de usar um codificador de mensagem alternativo fornecido por meio de um elemento de vinculação do codificador de mensagens. Um codificador de mensagens é responsável por transformar uma System.ServiceModel.Channels.Message representação em fio e vice-versa. Os canais de protocolo são responsáveis pela implementação de protocolos de nível SOAP (por exemplo, WS-Security ou WS-ReliableMessaging).

O principal requisito para canais de transporte e protocolo é que eles implementem as interfaces de canal necessárias. Para criar uma camada de canal de trabalho, eles devem ter fábricas e ouvintes associados, e assim por diante. Para usar as implementações de canal do WCF, precisa haver um elemento de ligação associado derivado de para cada canal e deve haver um elemento de extensão de BindingElement ligação relacionado para inclusão em arquivos de configuração que deriva de BindingElementExtensionElement.

Como mencionado anteriormente, os elementos de ligação para codificadores de mensagens, protocolos e implementações de canal de transporte podem ser empilhados para formar uma pilha de canais e o mecanismo para alinhá-los em um conjunto ordenado é a ligação. Ligações e elementos de ligação conectam o modelo de programação de aplicativo ao modelo de canal. Você pode usar suas implementações de canal diretamente do código, mas a menos que codificadores, transportes e protocolos sejam implementados como elementos de ligação, eles não podem ser usados a partir do modelo de programação da camada de serviço.

Para obter detalhes sobre o desenvolvimento de canais e seus elementos de ligação, consulte Estendendo a camada de canal.