Resolvedor peer
Para se conectar a uma malha, um nó par requer os endereços IP de outros nós. Os endereços IP são obtidos entrando em contato com um serviço de resolvedor, que usa a ID da malha e retorna uma lista de endereços correspondentes a nós registrados com essa ID de malha específica. O resolvedor mantém uma lista de endereços registrados, que ele cria com cada nó no registro de malha com o serviço.
Você pode especificar qual serviço PeerResolver usar por meio da propriedade Resolver
do NetPeerTcpBinding.
Resolvedores de pares compatíveis
O Canal par permite dois tipos de resolvedores: PNRP (Protocolo de Resolução de Nomes de Par) e serviços de resolvedor personalizados.
Por padrão, o Canal par usa o serviço de resolvedor de pares PNRP para descoberta de pares e vizinhos na malha. Para situações/plataformas em que o PNRP não está disponível ou não é viável, o WCF (Windows Communication Foundation) oferece um serviço de descoberta alternativo baseado em servidor: o CustomPeerResolverService. Você também pode definir explicitamente um serviço de resolvedor personalizado escrevendo uma classe que implementa a interface IPeerResolverContract.
Peer Name Resolution Protocol (PNRP)
O PNRP, o resolvedor padrão do Windows Vista, é um serviço de resolvedor de nomes distribuído e sem servidor. O PNRP também pode ser usado no Windows XP SP2 com a instalação do Pacote de Rede Avançado. Os dois clientes que executam a mesma versão do PNRP podem se localizar usando esse protocolo, desde que atendam a determinadas condições (como a falta de um firewall corporativo intervindo). Observe que a versão do PNRP fornecida com o Windows Vista é mais recente do que a incluída no Pacote de Rede Avançado. Verifique a Central de Download da Microsoft para obter atualizações no PNRP para Windows XP SP2.
Serviços de resolvedor personalizados
Quando o serviço PNRP está indisponível ou você quer ter controle completo sobre a formatação de malha, poderá usar um serviço de resolvedor personalizado baseado em servidor. Você pode definir explicitamente esse serviço escrevendo uma classe de resolvedor que implementa a interface IPeerResolverContract ou usando a implementação padrão pronta, CustomPeerResolverService.
Sob a implementação padrão do serviço, os registros de cliente expiram após um determinado período se o cliente não atualizar explicitamente o registro. Os clientes que usam o serviço resolvedor precisam estar cientes do limite superior na latência cliente-servidor para atualizar os registros com êxito a tempo. Isso envolve a escolha de um tempo limite de atualização apropriado (RefreshInterval
) no serviço de resolvedor. (Para obter mais informações, consulte Dentro do CustomPeerResolverService: Client Registrations.)
O gravador de aplicativos também precisa considerar a proteção da conexão entre os clientes e o serviço de resolvedor personalizado. Você pode fazer isso usando as configurações de segurança no NetTcpBinding que os clientes usam para entrar em contato com o serviço de resolvedor. Você precisa especificar credenciais (se usadas) no canal ChannelFactory
usado para criar o Canal par. Essas credenciais são passadas para o ChannelFactory
usado para criar canais para o resolvedor personalizado.
Observação
Ao usar redes locais e improvisadas com um resolvedor personalizado, recomendamos que os aplicativos que usam ou apoiam redes vinculadas locais ou improvisadas incluam lógica que seleciona um único endereço de link local a ser usado ao se conectar. Isso evita possíveis confusões causadas por computadores com vários endereços locais de link. De acordo com isso, o Canal par só permite o uso de um único endereço local de link em qualquer dado momento. Você pode especificar esse endereço com a propriedade ListenIpAddress
no NetPeerTcpBinding.
Para obter uma demonstração de como implementar um resolvedor personalizado, consulte Resolvedor de par personalizado do Canal par.
Nesta seção
Sobre o CustomPeerResolverService: registros de clientes