Endereço de ponto de extremidade
Um endereço de ponto de extremidade representa o endereço de um serviço na rede. Ao abrir um canal, chamando a função WsOpenChannel , você precisa fornecer o endereço do ponto de extremidade do serviço com o qual se comunicar, além de especificar o canal que deseja abrir.
Um endereço de ponto de extremidade consiste em:
- uma URL
- um conjunto de cabeçalhos (opcional)
- um conjunto de extensões (opcional)
- uma identidade opcional que representa a identidade de segurança do serviço.
Quando uma mensagem é endereçada, a URL se torna o cabeçalho "Para" da mensagem. Todos os cabeçalhos que fazem parte do endereço do ponto de extremidade também são adicionados à mensagem.
Os canais abordam automaticamente todas as mensagens enviadas, usando a estrutura WS_ENDPOINT_ADDRESS que foi passada para o WsOpenChannel. Você também pode usar a função WsAddressMessage para substituir esse comportamento padrão.
Quando WS_ENDPOINT_ADDRESS é passado como um parâmetro, as funções WsOpenChannel e WsOpenServiceProxy criam uma cópia do parâmetro WS_ENDPOINT_ADDRESS na memória e seu tamanho é limitado por 65536 bytes. WsAddressMessage não tem essa limitação porque não requer a criação de uma cópia do parâmetro WS_ENDPOINT_ADDRESS .
As extensões especificadas no campo extensões de WS_ENDPOINT_ADDRESS não são usadas para endereçar a mensagem, mas, em vez disso, são um mecanismo de extensibilidade que pode ser usado para fornecer informações adicionais (por exemplo, metadados) sobre o serviço. Extensões comuns podem ser lidas com a função WsReadEndpointAddressExtension .
O campo de identidade opcional do endereço do ponto de extremidade pode incluir, por exemplo, o nome DNS do computador no qual o serviço está em execução ou o UPN da conta do Windows na qual o serviço está em execução. O campo de identidade não é usado para endereçar a mensagem, mas pode ser usado para obter um token de segurança para o serviço (por exemplo, para obter um tíquete Kerberos para o UPN de destino) e para verificar a identidade das respostas do serviço (por exemplo, uma identidade DNS usada para verificações de nome no certificado de serviço retornado durante o SSL).
Os endereços de ponto de extremidade podem ser lidos e gravados usando a serialização com o valor de enumeração WS_ENDPOINT_ADDRESS_TYPE de WS_TYPE. Observação Para serializar um endereço de ponto de extremidade, você deve conhecer a versão da especificação usada para os cabeçalhos de endereçamento, conforme especificado na enumeração WS_ADDRESSING_VERSION .