Freigeben über


Benutzerdefinierter Peerkanal-Peerresolver

Das Beispiel zu einem benutzerdefinierten Peerresolver zeigt, wie ein benutzerdefinierter Resolver implementiert wird, der mit Peerkanalanwendungen verwendet werden kann.

Dieses Beispiel basiert auf dem Beispiel Selbst gehostete Dienste. Eine allgemeine Übersicht über Windows Communication Foundation (WCF) finden Sie auch unter Beispiel 'Erste Schritte'.

Tipp

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

Grundbegriffe:

Ein Peerkanal ist eine Mehrparteien-, P2P-Kommunikationstechnologie (Peer-to-Peer) in WCF. Er stellt einen sicheren und skalierbaren nachrichtenbasierten P2P-Kommunikationschannel für Anwendungsentwickler bereit. Ein allgemeines Beispiel einer Mehrparteienanwendung, die vom Peerkanal profitieren kann, sind gemeinschaftliche Anwendungen, wie beispielsweise Chat, wo eine Gruppe von Benutzern direkt miteinander kommunizieren kann, ohne dass Server erforderlich sind. Ein Peerkanal ermöglicht sowohl Consumer- als auch Unternehmensszenarios bei P2P-Zusammenarbeit, Inhaltsverteilung, Lastenausgleich und verteilter Verarbeitung.

Bei Peerkanal gibt es die folgenden neuen Begriffe:

  • Ein Netz ist eine benannte Auflistung (ein verbundenes Diagramm) von Peerknoten, die untereinander kommunizieren können und durch eine eindeutige Netz-ID gekennzeichnet sind.

    Tipp

    Aktive Knoten im Netz veröffentlichen ihren Netznamen, so dass andere sie suchen können. Ein Netz besitzt die folgenden Merkmale: Wenn Knoten dem Netz beitreten oder es verlassen, passt es sich an, hält dabei eine belastbare Konnektivität aufrecht und wird gemäß der aktuellen Datenverkehrsmuster dynamisch optimiert.

  • Ein Peerknoten ist ein Endpunkt in einem Netz. Eine Anwendung kann auch über mehrere Peerknoten verfügen, die an anderen Netzen teilnehmen.

  • Ein Peerkanal ist ein Kanal, der mithilfe der netPeerTcpBinding-Bindung oder einer benutzerdefinierten Bindung erstellt wird, die das PeerTransportBindingElement verwendet.

  • Ein Peerresolver dient zum Auflösen einer Netz-ID in die Endpunktadressen der Knoten im Netz. Wenn ein Peerknoten geöffnet wird, verwendet er einen Peerresolver, um die Netz-ID in eine Liste mit den Adressen anderer Peerknoten im Netz aufzulösen. Dadurch entsteht ein Netz von miteinander verbundenen Knoten, in dem Nachrichten weitergegeben werden können.

Das Beispiel zeigt, wie ein benutzerdefinierter Peerresolver-Webdienst geschrieben und der Dienst von einer ausführbaren Datei aus selbst gehostet wird. Der Client ist keine eigenständige Anwendung, wird aber mit anderen Peerkanalanwendungen kompiliert, die einen benutzerdefinierten Peerresolver verwenden. Unter Peerkanalchat sehen Sie, wie Peerkanalanwendungen die Clientseite eines benutzerdefinierten Peerresolvers verwenden können.

Ein benutzerdefinierter Peerresolverdienst ist ein Singletondienst, der die Netz-IDs und die Endpunktadressen in einem Wörterbuch zwischenspeichert und auf Registrierung und Aufhebung der Registrierung reagiert sowie Anforderungen von den Clients auflöst.

Netz-IDs sollten eindeutig sein. Wenn mehrere Anwendungen die gleiche Auflösung verwenden, sollten sie verschiedene Netz-IDs auswählen, um Konflikte zu vermeiden.

Das Beispiel implementiert eine statische Hauptfunktion zum Erstellen eines ServiceHost für den angegebenen CustomPeerResolverService-Typ. Der Host ist außerdem für die Bereitstellung einer Basisadresse für den Diensthost verantwortlich, die in den Anwendungseinstellungen der Konfigurationsdatei (App.config) festgelegt ist.

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

Der Dienst implementiert den Vertrag, der die Vorgänge RegisterMeshId, UnregisterMeshId und ResolveMeshId verfügbar macht. Der Client stellt synchrone Anforderungen an einen angegebenen Vorgang, und der Dienst antwortet mit dem Ergebnis.

Der Dienst macht einen einzigen Endpunkt zur Kommunikation mit dem Dienst verfügbar, der mit der Konfigurationsdatei (App.config) definiert wird. Die Bindung wird mit einer normalen NetTcpBinding konfiguriert, die TCP-Kommunikation bietet.

<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>

Wie in der Konfiguration angegeben, kann ein Client, der sich auf demselben Computer wie der Dienst befindet, unter net.tcp://localhost/servicemodelsamples/peerResolverservice auf den Dienst zugreifen. Für Clients auf Remotecomputern muss für den Dienstzugriff statt localhost ein vollqualifizierter Domänenname angegeben werden.

Beim Ausführen des Beispiels werden im Dienstkonsolenfenster Meldungen zur Vorgangsregistrierung und zur Aufhebung der Vorgangsregistrierung angezeigt. Wenn für eine Netz-ID mehrere Registrierungen vorgenommen werden, werden im Konsolenfenster nur die erste Meldung zur Registrierung und die letzte Meldung zur Aufhebung der Registrierung angezeigt. Drücken Sie im Konsolenfenster die EINGABETASTE, um den Dienst herunterzufahren (nachdem die Peerkanalanwendungen, die diesen Dienst verwenden, heruntergefahren sind).

Tipp

Derzeit werden nicht alle möglichen Ausnahmen, die die Infrastruktur unter Umständen auslöst, vom Beispiel verarbeitet. 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. Vergewissern Sie sich, dass Sie Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Zum Erstellen der C#-, C++- oder Visual Basic .NET-Version der Projektmappe folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer oder computerübergreifend ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen. (Die Peerkanalchat-Beispielanwendung schließt auch die eigene Implementierung des benutzerdefinierten Peerresolvers ein. Folgen Sie der Anweisung auf der Peerkanalchat-Seite zum Erstellen und Ausführen des benutzerdefinierten Resolvers und der Peer-Chatinstanzen.)

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