Identificadores totalmente e parcialmente associados

Quando você usa pontos de extremidade dinâmicos, as bibliotecas em tempo de execução obtêm informações de ponto de extremidade conforme elas precisam. As bibliotecas em tempo de execução fazem a distinção entre um identificador totalmente associado (um que inclui informações de ponto de extremidade) e um identificador parcialmente associado (que não inclui informações de ponto de extremidade).

A biblioteca de tempo de execução do cliente deve converter o identificador parcialmente associado em um identificador totalmente associado antes que o cliente possa se associar ao servidor. A biblioteca de tempo de execução do cliente tenta converter o identificador parcialmente associado para o aplicativo cliente obtendo as informações do ponto de extremidade, conforme mostrado:

  • Na especificação da interface do cliente
  • De um serviço de mapeamento de ponto de extremidade em execução no servidor

Se o cliente tentar usar um identificador parcialmente associado quando as informações do ponto de extremidade não estiverem disponíveis na especificação da interface e o mapeador de ponto de extremidade do servidor não tiver informações sobre o ponto de extremidade do servidor, o cliente não terá informações suficientes para fazer sua chamada de procedimento remoto e essa chamada falhará. Para evitar isso, você deve registrar o ponto de extremidade no mapeador do ponto de extremidade quando seu aplicativo distribuído usa identificadores parcialmente associados. Para obter mais informações sobre o mapeador de ponto de extremidade, consulte Especificando pontos de extremidade dinâmicos.

Quando uma chamada de procedimento remoto falha, o aplicativo cliente pode chamar RpcBindingReset para remover informações de ponto de extremidade desatualizadas. Quando o cliente tenta chamar o procedimento remoto, a biblioteca de tempo de execução do cliente tenta converter novamente o identificador totalmente associado em um identificador parcialmente associado. Isso é útil quando o servidor é interrompido e reiniciado usando um ponto de extremidade dinâmico diferente.