Resolver peer personalizzato del canale peer

L'esempio resolver peer personalizzato illustra come implementare un resolver personalizzato che può essere utilizzato con le applicazioni del canale peer.

L'esempio è basato sull'esempio Servizio indipendente. Fare riferimento anche a Esempio della guida introduttiva per una panoramica dettagliata di Windows Communication Foundation (WCF).

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

Concetti chiave:

Un canale del è una tecnologia di comunicazione a più parti, peer-to-peer (P2P) in WCF. Fornisce un canale di comunicazione P2P basato su messaggi sicuro e scalabile per gli sviluppatori di applicazioni. Un esempio comune di applicazione a più parti che può trarre profitto da un canale peer sono applicazioni collaborative, ad esempio le chat, in cui un gruppo di persone parla con uno altro gruppo in modo peer-to-peer senza bisogno di server. Il canale peer consente la collaborazione P2P, la distribuzione di contenuti, il bilanciamento del carico e l'elaborazione distribuita per scenari aziendali e relativi a utenti.

Con il canale peer vengono introdotti questi nuovi concetti:

  • Una mesh è un insieme denominato (un grafico interconnesso) di nodi peer che possono comunicare fra loro e sono identificati da un ID mesh univoco.

    Nota

    I nodi attivi nella rete mesh pubblicano i rispettivi nomi di rete mesh in modo da poter essere individuati dagli altri nodi. Una rete mesh si adatta alle modifica di appartenenza, dispone di una connettività adattabile in un ambiente in cui i nodi si collegano e si scollegano continuamente dalla rete mesh ed è ottimizzata dinamicamente in base ai diversi modelli di traffico.

  • Un nodo peer rappresenta un endpoint in una rete mesh. Un'applicazione può avere anche più nodi peer che partecipano a reti diverse.

  • Un canale peer è un canale costruito utilizzando l'associazione netPeerTcpBinding, o un'associazione personalizzata che utilizza PeerTransportBindingElement.

  • Un resolver Peer è responsabile della risoluzione dell'ID di una rete mesh negli indirizzi endpoint dei nodi della rete mesh. Quando viene aperto un nodo del peer, esso utilizza un resolver del peer per risolvere un ID di mesh in una lista di indirizzi di altri nodi del peer nel mesh. In questo modo viene creata una mesh di nodi interconnessi che consentite la propagazione dei messaggi in tutta la mesh.

L'esempio illustra come scrivere un servizio Web del resolver Peer personalizzato e creare un servizio indipendente su un file eseguibile. Il client non è un'applicazione autonoma, ma viene compilato con altre applicazioni del canale peer che utilizzano un resolver peer personalizzato. Vedere l'esempio Chat del canale peer per vedere come applicazioni del canale peer possono utilizzare il lato client di un resolver peer personalizzato.

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.

L'esempio 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 è stato configurato nelle impostazioni dell'applicazione all'interno del file di configurazione (App.config).

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

Il servizio implementa il contratto, 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 (App.config). 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>

Con questa configurazione un client sullo stesso computer può accedere al servizio da net.tcp://localhost/servicemodelsamples/peerResolverservice. Affinché i client presenti nei computer remoti accedano al servizio, è necessario specificare un nome di dominio completo anziché localhost.

Quando si esegue l'esempio, i messaggi di registrazione e di annullamento della registrazione dell'operazione vengono visualizzati nella finestra della console del servizio. Se più registrazioni vengono create per lo stesso ID della mesh, solo la prima registrazione e l'ultimo annullamneto della registrazione fanno in modo che i messaggi siano visualizzati nella finestra della console. Premere INVIO nella finestra della console per spegnere il servizio (dopo avere spento le applicazioni del canale peer che utilizzano il servizio).

Nota

L'esempio non gestisce attualmente tutte le eccezioni che possono essere generate dall'infrastruttura. Se si utilizzano questi esempi in un ambiente commerciale o di produzione, seguire le procedure consigliate per una corretta gestione delle eccezioni.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di avere eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Per generare l'edizione C#, C++ o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  3. Per eseguire l'esempio su un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation. L'applicazione di esempio Chat del canale peer include inoltre l'implementazione personalizzata corrispondente del resolver peer personalizzato. Seguire le istruzioni nella pagina Chat del canale peer per compilare ed eseguire il resolver personalizzato e le istanze di chat peer.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.