Freigeben über


Net-Peer-TCP

In diesem Beispiel wird die Verwendung der NetPeerTcpBinding-Bindung veranschaulicht, die Mehrparteienkommunikation über einen Peerkanal ermöglicht. Dieses Beispiel ist eine Variante vom Beispiel 'Erste Schritte'. Unter Beispiel 'Erste Schritte' finden Sie eine Übersicht über Windows Communication Foundation (WCF).

In diesem Beispiel sind die Anwendungsinstanzen selbst gehostete Konsolenanwendungen.

Im Gegensatz zu anderen Transportbindungsbeispielen wird in diesem Beispiel eine benutzerdefinierte Vertragsschnittstelle (IBroadcast) verwendet, um Mehrparteienkommunikation zu veranschaulichen. Alle Instanzen implementieren diesen Vertrag, um Nachrichten zu empfangen, und erstellen Proxys mit demselben Vertrag, um Nachrichten zum Mesh zu senden. Dies wird durch Erstellen eines Duplexkanals zum Mesh veranschaulicht.

Tipp

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Der Bindungskonfigurationsprozess im Beispiel beinhaltet die folgenden Peerkanal-Begriffe:

  • Der Peerresolve ist zum Auflösen einer Mesh-ID in die Endpunktadressen einiger Knoten im Mesh verantwortlich.
  • Ein Mesh ist eine benannte Auflistung von Peerknoten, die durch die Mesh-ID gekennzeichnet wird.
  • Ein Peerknoten ist eine Instanz einer Anwendung, die am Mesh beteiligt ist.
  • Mesh-IDs identifizieren den Hostteil der Adresse eines Endpunkts im Mesh. Beispiele für solche Adressen sind "net.p2p://chatMesh/servicemodelsamples/chat" oder "net.p2p://broadcastMesh/servicemodelsamples/announcements". chatMesh und broadcastMesh sind die Mesh-IDs.
  • Alle an einem Mesh beteiligten Clients verwenden dieselbe Mesh-ID, können aber unter Umständen andere Pfade und Dienste verwenden. Eine an eine bestimmte Endpunktadresse adressierte Nachricht wird an alle Peerkanäle übermittelt, die diese Adresse verwenden.

Wenn ein Peerknoten (durch Öffnen des Peerkanals) geöffnet wird, verwendet er einen Peerresolver, um die Mesh-ID in die Adressen anderer Peerknoten aufzulösen, zu denen eine Verbindung hergestellt werden soll. Dadurch entsteht ein Netz von miteinander verbundenen Knoten, in dem Nachrichten weitergegeben werden können.

Die Bindung wird in den Konfigurationsdateien des Senders und der Empfänger angegeben. Der Bindungstyp wird im binding-Attribut des Endpunktelements angegeben (siehe folgendes Beispiel).

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

Wenn Sie NetPeerTcpBinding-Bindung mit dem Standardverhalten verwenden, ist kennwortbasierte Sicherheit aktiviert. Das Bindungselement enthält Attribute zum Festlegen des Ports, der zu überwachenden IP-Adresse, des Resolvertyps, der maximalen Größe von Nachrichten, der maximalen Größe des Pufferpools, von Readerkontingenten, des Peerknoten-Authentifizierungsmodus, von Nachrichtenauthentifizierung und von Timeoutwerten (für Schließ-, Öffnungs-, Sende- und Empfangsvorgänge).

Tipp

Dieses Beispiel verwendet den Standardpeerresolver (PNRP), der in Windows Server 2003 nicht verfügbar ist. Um dieses Beispiel unter Windows Server 2003 auszuführen, müssen Sie einen benutzerdefinierten Peerresolver verwenden. Ein Beispiel, das einen benutzerdefinierten Peerresolver verwendet (wie im folgenden Code gezeigt), finden Sie unter Peerkanalchat.

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

Die Datei, die MyCustomPeerResolver enthält, muss mit dem Sender und den Empfängern kompiliert werden. Beachten Sie, dass, wenn dieses Beispiel auf mehreren Computern mit unterschiedlichen Plattformen ausgeführt wird, alle denselben Resolver verwenden müssen.

Die Empfänger- und Senderimplementierungen zeigen auch, wie der der Empfänger- bzw. Senderinstanz zugehörige Peerknoten abgerufen wird und wie die Registrierung für dessen Online- und Offlineereignisse erfolgt. Ein Onlineereignis wird initiiert, wenn der Peerknoten eine Verbindung mit mindestens einem anderen im Mesh befindlichen Peerknoten herstellt. Ein Offlineereignis wird initiiert, wenn der Peerknoten mit keinem anderen im Mesh befindlichen Peerknoten mehr verbunden ist.

Zu diesem Zeitpunkt ist der Peerkanal nicht in das Service Model Metadata Utility Tool (Svcutil.exe) integriert. Daher kann Svcutil.exe nicht genutzt werden, um einen typisierten Kanal für den Sender zu generieren.

Wenn Sie den Sender ausführen, wird die Nachricht angezeigt, dass der Sender bereit ist, Nachrichten zu senden. Drücken Sie die EINGABETASTE, um die Beispielchatnachricht zu senden. Diese Nachricht wird in den Konsolenfenstern aller Empfängerclients angezeigt, die gerade ausgeführt werden. Zum Beenden der Clients drücken Sie im Konsolenfenster des jeweiligen Clients (Sender oder Empfänger) wieder die EINGABETASTE.

Wenn Sie Ablaufverfolgung oder Nachrichtenprotokollierung aktivieren, können Sie Sender- und Empfängeraktivität auf einer tieferen Ebene überwachen. Die folgenden Verfahren beschreiben, wie Ablaufverfolgung und Nachrichtenprotokollierung aktiviert werden.

Tipp

Beachten Sie dabei unbedingt, dass derzeit nicht alle möglichen Ausnahmen, die die Infrastruktur unter Umständen auslöst, vom Beispiel verarbeitet werden. Wenn Sie diese Beispiele in einer kommerziellen oder Produktionsumgebung verwenden, folgen Sie bitte den bewährten Methoden zur korrekten Ausnahmebehandlung.

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Zum Erstellen der C#- oder Visual Basic .NET-Version der Lösung folgen Sie den in Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer ausführen möchten, folgen Sie den in Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  4. PNRP ist in Windows Vista, Windows XP SP3 und Windows Server 2008 verfügbar. Folgen Sie für Windows XP SP2 den einmaligen Setupanweisungen:

    1. Doppelklicken Sie in der Systemsteuerung auf Software.
    2. Klicken Sie im Dialogfeld Software auf Windows-Komponenten hinzufügen/entfernen.
    3. Aktivieren Sie im Assistent für Windows-Komponenten das Kontrollkästchen "Netzwerkdienste", und klicken Sie auf "Details".
    4. Aktivieren Sie das Kontrollkästchen "Peer-zu-Peer", und klicken Sie auf "OK".
    5. Klicken Sie im Dialogfeld Assistent für Windows-Komponenten auf "Weiter".
    6. Klicken Sie auf "Fertig stellen", wenn die Installation abgeschlossen ist.
    7. Starten Sie den PNRP-Dienst in einer Eingabeaufforderung mit dem folgenden Befehl: net start pnrpsvc.
  5. Wenn in diesem Beispiel in Schritt 3 von Client und Dienst die Rede ist, sind damit Sender und Empfänger gemeint.

  6. Starten Sie den (oder die) Empfänger und den Sender. Wenn die Instanzen eine Verbindung herstellen, drücken Sie in der Konsole der Senderanwendung die EINGABETASTE, um die Beispielnachricht für den/die Empfänger aneinander zu senden. Vom Sender gesendete Chatnachrichten werden von allen Empfängern empfangen.

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