Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As associações são coleções de elementos de configuração especiais, chamados de elementos de associação, que são avaliados pelo runtime de serviço sempre que um ponto de extremidade de serviço ou cliente esteja sendo construído. O tipo e a ordem dos elementos de associação em uma associação determinam a ordem de seleção e empilhamento dos canais de protocolo e transporte na pilha de canal de um ponto de extremidade.
As associações, especialmente as associações fornecidas pelo sistema, geralmente também têm várias propriedades de configuração que refletem as propriedades mais comumente modificadas dos elementos de associação encapsulados.
Uma associação deve conter exatamente um elemento de associação de transporte. Cada elemento de associação de transporte implica um elemento de associação de codificação de mensagem padrão, que pode ser substituído adicionando no máximo um elemento de associação de codificação de mensagem à associação. Além dos elementos de associação de transporte e codificador, a associação pode conter qualquer número de elementos de associaçã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 Como usar associações para configurar serviços e clientes.
Estender associações e elementos de associação
O Windows Communication Foundation (WCF) inclui associações fornecidas pelo sistema que abrangem uma ampla gama de cenários. (Para obter mais informações, consulte System-Provided Bindings.) No entanto, pode haver momentos em que você precisa criar e usar uma associação que não está incluída no WCF. Os cenários a seguir exigem a criação de uma nova associação.
Para usar um novo elemento de associação (como um novo elemento de transporte, codificação ou associação de protocolo), você deve criar uma nova associação que inclua esse elemento de associação. Por exemplo, se você adicionou uma configuração personalizada
UdpTransportBindingElement
para o transporte UDP, precisará criar um novo vínculo para utilizá-la. Para obter informações sobre como executar esse comportamento usando o System.ServiceModel.Channels.CustomBinding tipo, consulte Associações Personalizadas.Para configurar elementos de associação existentes de modo 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 associação de System-Provided.
Para estabelecer associações padrão corporativas que expõem apenas opções de configuração específicas. Por exemplo, para criar uma variante do WSHttpBinding para sua empresa na qual a segurança não pode ser desabilitada, crie uma nova associação que se comporte como o WSHttpBinding, mas com a segurança sempre ativada. Para obter detalhes, consulte Criar associações definidas pelo usuário.
Para executar alguma personalização de metadados, normalmente, mas não necessariamente para configurar ou usar algum elemento de associação personalizado. Para obter mais informações sobre como fornecer suporte a metadados a associações e elementos de associação, consulte Configuração e Suporte a Metadados.
Canais, associações e elementos de associação
As associações e os elementos de associação são a conexão entre o modelo de programação do 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 associaçã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. No cliente, a camada de canal é uma estrutura de fábricas de canais que criam canais para um endpoint 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.
Há 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 de extremidade 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 associação do codificador de mensagens. Um codificador de mensagens é responsável por transformar um System.ServiceModel.Channels.Message em uma representação de fio e vice-versa. Os canais de protocolo são responsáveis por implementar protocolos de nível SOAP (por exemplo, WS-Security ou WS-ReliableMessaging).
O principal requisito para os 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, é necessário haver elementos de associação associados, derivados de BindingElement, para cada canal, e deve existir um elemento de extensão de associação relacionado, para inclusão nos arquivos de configuração, que deriva de BindingElementExtensionElement.
Conforme mencionado anteriormente, os elementos de associação para codificadores de mensagens, protocolo 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 associação. Associações e elementos de associação conectam o modelo de programação do 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 associação, eles não podem ser usados do modelo de programação da camada de serviço.
Para obter detalhes sobre como desenvolver canais e seus elementos de associação, consulte Estendendo a camada de canal.