NetPeerTCP

In questo esempio viene illustrato l'utilizzo dell'associazione NetPeerTcpBinding, che fornisce comunicazione a più parti utilizzando un canale peer. Questo esempio è una variante di Esempio della guida introduttiva. Per una panoramica di Windows Communication Foundation (WCF), vedere Esempio della guida introduttiva.

In questo esempio le istanze dell'applicazione sono applicazioni console indipendenti.

A differenza di altri esempi di associazioni di trasporto, in questo esempio viene utilizzata un'interfaccia di contratto personalizzata (IBroadcast) per illustrare le comunicazioni a più parti. Tutte le istanze implementano questo contratto per ricevere messaggi e creare proxy con lo stesso contratto per l'invio dei messaggi alla mesh. Questo processo viene illustrato creando un canale duplex nella mesh.

Nota

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

Per comprendere il processo di configurazione dell'associazione descritto nell'esempio è necessario conoscere i concetti del canale peer seguenti:

  • Il resolver del peer è responsabile della risoluzione di un ID di mesh negli indirizzi degli endpoint di alcuni nodi della mesh.
  • Una mesh è un insieme denominato di nodi del peer identificati dall'ID della mesh.
  • Un nodo del peer è un'istanza di un'applicazione che fa parte della mesh.
  • Gli ID di mesh identificano la parte dell'host dell'indirizzo di un endpoint nella mesh. Sono esempi di questi indirizzi "net.p2p://chatMesh/servicemodelsamples/chat" e "net.p2p://broadcastMesh/servicemodelsamples/announcements". chatMesh e broadcastMesh sono ID di mesh.
  • Tutti i client che fanno parte di una mesh utilizzano lo stesso ID di mesh, ma potrebbero utilizzare anche percorsi e servizi diversi. Un messaggio indirizzato a un indirizzo di un endpoint specifico viene recapitato a tutti i canali del peer con tale indirizzo.

Quando viene aperto un nodo del peer, come conseguenza dell'apertura del canale del peer, il nodo utilizza un resolver del peer per risolvere un ID di mesh negli indirizzi di altri nodi del peer a cui deve essere effettuata la connessione. In questo modo viene creata una mesh di nodi interconnessi e viene consentita la propagazione dei messaggi in tutta la mesh.

L'associazione viene specificata nei file di configurazione per il mittente e il destinatario. Il tipo di associazione è specificato nell'attributo binding dell'elemento endpoint, come illustrato nell'esempio seguente.

<client>
    <endpoint name="BroadcastEndpoint"
        address=
        "net.p2p://broadcastMesh/servicemodelsamples/announcements"
                binding="netPeerTcpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.IBroadcast">
    </endpoint>
</client>

Se si utilizza l'associazione NetPeerTcpBinding con il comportamento predefinito, viene abilitata la protezione basata sulla password. L'elemento dell'associazione fornisce attributi per impostare la porta, l'indirizzo IP di ascolto, il tipo di resolver, la dimensione massima dei messaggi, la dimensione massima del pool di buffer, le quote dei lettori, la modalità di autenticazione dei nodi dei peer, l'autenticazione dei messaggi e i timeout di chiusura, apertura, invio e ricezione.

Nota

In questo esempio viene utilizzato il resolver del peer predefinito (PNRP), che non è disponibile in Windows Server 2003. Per eseguire questo esempio in Windows Server 2003, è necessario pertanto utilizzare un resolver del peer personalizzato. Per un esempio in cui viene utilizzato un resolver del peer personalizzato, vedere Chat del canale peer, come illustrato nel codice seguente.

<netPeerTcpBinding>
    <binding configurationName="Binding1"> 
        <resolver mode="Custom">
            <customResolver type=
                "MyAppNameSpace.MyCustomPeerResolver, myApp"/>
        </resolver>
    </binding>
</netPeerTcpBinding>

Il file contenente MyCustomPeerResolver deve essere compilato con mittente e destinatario. Si noti che se l'esempio viene eseguito in più computer con piattaforme diverse, è necessario che venga utilizzato lo stesso resolver.

L'implementazione con mittente e destinatario illustra, inoltre, come recuperare il nodo del peer associato all'istanza del destinatario o del mittente e come eseguire la registrazione per i relativi eventi in linea e non in linea. Un evento in linea viene generato quando il nodo Peer è connesso ad almeno un altro nodo Peer nella rete mesh. Un evento non in linea viene generato, invece, quando un nodo Peer non è più connesso ad altri nodi Peer nella rete mesh.

A questo punto, il canale del peer non è più integrato con Service Model Metadata Utility Tool (Svcutil.exe). Per questo motivo non è possibile utilizzare Svcutil.exe per generare un canale tipizzato per il mittente.

Quando si esegue il mittente, viene visualizzato un messaggio che indica che il mittente è pronto per inviare messaggi. Premere INVIO per inviare il messaggio di chat di esempio. Questo messaggio viene visualizzato in una finestra della console client che attualmente esegue il destinatario. Per terminare i client, premere INVIO nelle finestre della console di tale un client (mittente o destinatario).

Se si abilita la traccia o la registrazione dei messaggi, è possibile controllare l'attività del mittente e del destinatario a un livello più profondo. Le procedure seguenti illustrano come abilitare la traccia e la registrazione dei messaggi.

Nota

È importante notare che attualmente nell'esempio non vengono gestite 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 aver eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.

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

  3. Per eseguire l'esempio in un solo computer, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

  4. PNRP è disponibile in Windows Vista, Windows XP SP3 e Windows Server 2008. Per Windows XP SP2, seguire le istruzioni per l'installazione singola:

    1. Nel Pannello di controllo fare doppio clic su Installazione applicazioni.
    2. Nella finestra di dialogo Installazione applicazioni scegliere Installazione componenti di Windows.
    3. Nell'Aggiunta guidata componenti di Windows selezionare la casella di controllo "Servizi di rete" e fare clic su "Dettagli".
    4. Selezionare la casella di controllo "Peer-to-peer" e fare clic su "OK".
    5. Nell'Aggiunta guidata componenti di Windows fare clic su "Avanti".
    6. Al termine dell'installazione, fare clic su "Fine".
    7. Dal prompt della shell dei comandi avviare il servizio PNRP con il comando seguente: net start pnrpsvc.
  5. Per questo esempio, ogni volta che il passaggio 3 fa riferimento al client e al servizi, i passaggi si applicano a mittente e destinatario.

  6. Avviare il destinatario (o più destinatari) e il mittente. Quando le istanze si connettono, premere INVIO nella console dell'applicazione del mittente per inviare messaggi di esempio al destinatario o ai destinatari. Messaggi di chat inviati dal mittente vengono ricevuti da tutti i destinatari.

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