Hinzufügen einer benutzerdefinierten Auflösung zu einer PeerChannel-Anwendung

Standardmäßig verwendet PeerChannel den PNRP-Peerresolverdienst (Peer Name Resolution-Protokoll). Aufgrund der Netzwerkrichtlinie oder Konfiguration kann es jedoch erforderlich sein, einen benutzerdefinierten Peerresolverdienst zu implementieren. Der Abschnitt unten beschreibt den Prozess zum Hinzufügen eines benutzerdefinierten Peerresolverdiensts zu einer PeerChannel-Anwendung.

Benutzerdefinierte Peerresolver

Ein benutzerdefinierter Peerresolverdienst ist ein Singletondienst, der die Netz-IDs und Endpunktadressen in einem Wörterbuch zwischenspeichert und auf die Registrierung sowie Aufhebung der Registrierung antwortet und 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.

Erstellen und Konfigurieren eines benutzerdefinierten Peerresolvers

Ein benutzerdefinierter Peerresolver 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 (normalerweise App.config) festgelegt werden muss.

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

Der benutzerdefinierte Peerresolverdienst implementiert den ICustomPeerResolver-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 definiert wird. Die Bindung wird mit einer Standard-NetTcpBinding konfiguriert, die TCP-Kommunikation bereitstellt.

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

Für Clients auf Remotecomputern muss für den Dienstzugriff statt localhost ein vollqualifizierter Domänenname angegeben werden.

Beachten Sie, dass Clients, die einen benutzerdefinierten Resolver verwenden, eine obere Begrenzung für die Client-Server-Wartezeit benötigen, um die Registrierung mit dem Peerresolverdienst erfolgreich aktualisieren zu können.

Siehe auch

Konzepte

Erweitern von PeerChannel

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.