Share via


Aggiunta di un resolver personalizzato a un'applicazione PeerChannel

Per impostazione predefinita, PeerChannel utilizza il servizio resolver peer PNRP (Peer Name Resolution Protocol). Tuttavia, a causa della configurazione o di criteri di rete, può essere necessario implementare un servizio resolver peer personalizzato. Nella sezione seguente viene illustrato il processo per aggiungere un servizio resolver peer personalizzato a un'applicazione PeerChannel.

Resolver peer personalizzati

Un servizio resolver peer personalizzato è un servizio singleton che memorizza nella cache gli ID di rete e gli indirizzi degli endpoint in un dizionario e risponde alle richieste di registrazione, annullamento della registrazione e risoluzione inviate dai client. Poiché si prevede che gli ID di rete siano univoci, se più applicazioni utilizzano lo stesso resolver, è necessario che vengano scelti ID di rete diversi per evitare conflitti.

Creazione e configurazione di un resolver peer personalizzato

Un resolver peer personalizzato implementa una funzione main statica per creare una classe ServiceHost per il tipo CustomPeerResolverService specificato. L'host è inoltre responsabile di fornire un indirizzo di base all'host del servizio, che deve essere configurato nelle impostazioni dell'applicazione all'interno del file di configurazione (solitamente denominato App.config).

<appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress"
     value=" net.tcp://localhost/servicemodelsamples/peerResolverService" />
</appSettings>

Il servizio resolver peer personalizzato implementa il contratto ICustomPeerResolver, che espone le operazioni RegisterMeshId, UnregisterMeshId e ResolveMeshId. Il client esegue richieste sincrone a un'operazione specificata e il servizio risponde fornendo il risultato.

Il servizio espone un solo endpoint per comunicare con il servizio che viene definito mediante il file di configurazione. L'associazione viene configurata con una classe standard NetTcpBinding che fornisce la comunicazione TCP.

<services>
    <service 
       service="Microsoft.ServiceModel.Samples. CustomPeerResolverService">
       <!-- use base address provided by the host -->
       <endpoint address=""
            binding=" netTcpBinding "
             contract="Microsoft.ServiceModel.Samples. ICustomPeerResolver" />
    </service>
</services>

Affinché i client presenti nei computer remoti accedano al servizio, è necessario specificare un nome di dominio completo anziché localhost.

Si noti che i client che utilizzano un resolver personalizzato devono avere un limite superiore sulla latenza client-server per aggiornare correttamente la registrazione con il servizio resolver peer.

Vedere anche

Concetti

Estensione di PeerChannel

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.