Resolver del peer

Per connettersi a una mesh, un nodo peer necessita dell'indirizzo IP di altri nodi. Gli indirizzi IP si ottengono contattando un servizio resolver, che accetta l'ID della rete e restituisce un elenco di indirizzi corrispondenti ai nodi registrati con quel particolare ID di rete. Il resolver mantiene un elenco di indirizzi registrati, creato facendo in modo che ogni nodo nella mesh venga registrato con il servizio.

È possibile specificare il servizio PeerResolver da usare tramite la proprietà Resolver di NetPeerTcpBinding.

Resolver peer supportati

Il canale peer supporta due tipi di resolver, il protocollo PNRP (Peer Name Resolution Protocol) e i servizi resolver personalizzati.

Per impostazione predefinita, il canale peer usa il servizio resolver peer PNRP per l'individuazione di peer e di elementi adiacenti nella rete. Per le situazioni o le piattaforme in cui PNRP non è disponibile o applicabile, Windows Communication Foundation (WCF) fornisce un'alternativa, il servizio di individuazione basato su server CustomPeerResolverService. È possibile definire anche in modo esplicito un servizio resolver personalizzato scrivendo una classe che implementa l'interfaccia IPeerResolverContract.

Protocollo PNRP (Peer Name Resolution Protocol)

PNRP, resolver predefinito di Windows Vista, è un servizio di risoluzione dei nomi distribuito senza server. PNRP può essere usato anche in Windows XP SP2 installando l'Advanced Networking Pack. Due client qualsiasi che eseguono la stessa versione di PNRP possono individuarsi reciprocamente usando questo protocollo, a condizione di soddisfare determinate condizioni, ad esempio il mancato intervento di un firewall aziendale. Si noti che la versione di PNRP fornita con Windows Vista è più recente di quella inclusa nell'Advanced Networking Pack. Verificare l'Area download Microsoft per gli aggiornamenti a PNRP per Windows XP SP2.

Servizi resolver personalizzati

Quando il servizio PNRP non è disponibile o si desidera disporre del controllo completo sulla definizione della rete, è possibile usare un servizio resolver basato su server personalizzato. È possibile definire questo servizio in modo esplicito scrivendo una classe resolver che implementi l'interfaccia IPeerResolverContract o usando l'implementazione predefinita inclusa CustomPeerResolverService.

Nell'implementazione predefinita del servizio, le registrazioni client scadono dopo un determinato periodo di tempo se non vengono esplicitamente aggiornate. I client che usano il servizio resolver devono conoscere il limite superiore della latenza client-server per poter aggiornare correttamente le registrazioni entro il periodo di tempo previsto. Questo implica la scelta di un timeout di aggiornamento appropriato (RefreshInterval) sul servizio resolver. (Per altre informazioni, vedere All'interno di CustomPeerResolverService: Registrazioni client).

L'autore dell'applicazione deve prendere in considerazione anche la protezione della connessione tra i client e il servizio resolver personalizzato. A questo scopo è possibile usare impostazioni di sicurezza sulla classe NetTcpBinding usata dai client per contattare il servizio resolver. È necessario specificare credenziali (se usate) sulla classe ChannelFactory usata per creare il canale peer. Queste credenziali vengono passate alla classe ChannelFactory usa per creare canali per il resolver personalizzato.

Nota

Quando si usano reti locali e improvvisate con un resolver personalizzato, è consigliabile che le applicazioni che usano o supportano reti improvvisate e locali rispetto al collegamento includano la logica per la selezione di un solo indirizzo locale rispetto al collegamento da usare per la connessione. Ciò evita la confusione che può essere causata da computer con più indirizzi locali rispetto al collegamento. In conformità a quanto sopra, il canale peer supporta l'uso di un solo indirizzo di collegamento locale alla volta. È possibile specificare questo indirizzo con la proprietà ListenIpAddress sulla classe NetPeerTcpBinding.

Per una dimostrazione di come implementare un resolver personalizzato, vedere Resolver peer personalizzato del canale peer.

In questa sezione

CustomPeerResolverService: registrazioni client

Vedi anche