Peerresolver

Um eine Verbindung mit einem Mesh herzustellen, erfordert ein Peerknoten die IP-Adressen anderer Knoten. IP-Adressen werden bezogen, indem eine Verbindung zu einem Auflösungsdienst hergestellt wird, der die Netz-ID annimmt und eine Liste von Adressen zurückgibt, die mit dieser bestimmten Netz-ID registrierten Knoten entsprechen. Der Resolver behält eine Liste registrierter Adressen bei, die durch Registrierung jedes Knotens im Mesh mit dem Dienst erstellt wird.

Mithilfe der Resolver-Eigenschaft der NetPeerTcpBinding können Sie den zu verwendenden PeerResolver-Dienst angeben.

Unterstützte Peerresolver

Peerkanal unterstützt zwei Arten von Resolvern: Peer Name Resolution-Protokoll (PNRP)-Resolverdienste und benutzerdefinierte Resolver-Dienste.

Standardmäßig verwendet Peerkanal den PNRP-Peerresolverdienst, um Peers und Nachbarn im Netz zu ermitteln. Für Situationen/Plattformen, bei denen PNRP nicht verfügbar ist oder nicht verwendet werden kann, stellt Windows Communication Foundation (WCF) einen alternativen, serverbasierten Ermittlungsdienst zur Verfügung: CustomPeerResolverService. Sie können auch explizit einen benutzerdefinierten Resolverdienst definieren. Schreiben Sie hierzu eine Klasse, die die IPeerResolverContract-Schnittstelle implementiert.

Peer Name Resolution-Protokoll (PNRP)

PNRP, der Standardresolver für Windows Vista, ist ein verteilter, serverloser Namensauflösungsdienst. PNRP kann nach Installieren des Advanced Networking Pack auch unter Windows XP SP2 verwendet werden. Zwei Clients., auf denen die gleiche Version von PNRP ausgeführt wird, können sich mithilfe dieses Protokolls suchen, falls sie bestimmte Voraussetzungen erfüllen (wie das Fehlen einer dazwischen stehenden Unternehmens-Firewall). Beachten Sie, dass die mit Windows Vista bereitgestellte Version von PNRP neuer als die im Advanced Networking Pack enthaltene Version ist. Suchen Sie im Microsoft Download Center nach Updates auf PNRP für Windows XP SP2.

Benutzerdefinierte Auflösungsdienste

Wenn der PNRP-Dienst nicht verfügbar ist oder Sie die vollständige Kontrolle über die Netzstruktur benötigen, können Sie einen benutzerdefinierten, serverbasierten Resolverdienst verwenden. Dieser Dienst kann durch Schreiben einer Resolverklasse, die die IPeerResolverContract-Schnittstelle implementiert, oder durch Verwenden der im Lieferumfang enthaltenen Standardimplementierung CustomPeerResolverService explizit definiert werden.

Bei der Standardimplementierung des Dienstes laufen die Clientregistrierungen nach einer bestimmten Zeit ab, wenn der Client die Registrierung nicht explizit aktualisiert. Clients, die den Auflösungsdienst verwenden, benötigen eine bestimmte obere Begrenzung für die Client-Server-Wartezeit, um die Registrierung rechtzeitig erfolgreich aktualisieren zu können. Dies schließt ein, ein entsprechendes Aktualisierungstimeout (RefreshInterval) für den Auflösungsdienst auszuwählen. (Weitere Informationen finden Sie unter Einblicke in den CustomPeerResolverService: Clientregistrierungen.)

Auch muss der Anwendungsautor die Sicherung der Verbindung zwischen Clients und dem benutzerdefinierten Resolverdienst berücksichtigen. Sie können dazu die Sicherheitseinstellungen der NetTcpBinding verwenden, über die Clients eine Verbindung zum Auflösungsdienst herstellen. Anmeldeinformationen müssen (sofern verwendet) für die zum Erstellen von Peerkanal verwendete ChannelFactory angegeben werden. Diese Anmeldeinformationen werden an die zum Erstellen von Kanälen für den benutzerdefinierten Resolver verwendete ChannelFactory übergeben.

Hinweis

Bei der Verwendung lokaler und provisorischer Netzwerke mit einem benutzerdefinierten Resolver wird dringend empfohlen, dass Anwendungen, die verbindungslokale oder provisorische Netzwerke nutzen oder unterstützen, Logik einfügen, die für das Herstellen einer Verbindung eine einzelne verbindungslokale Adresse auswählt. Dadurch werden möglicherweise durch Computer mit mehreren verbindungslokalen Adressen verursachte Probleme verhindert. In Übereinstimmung damit unterstützt Peerkanal nur die Verwendung jeweils einer einzelnen verbindungslokalen Adresse. Sie können diese Adresse mit der ListenIpAddress-Eigenschaft der NetPeerTcpBinding angeben.

Eine Demonstration der Implementierung eines benutzerdefinierten Resolvers finden Sie unter Benutzerdefinierter Peerresolver für Peerkanäle.

In diesem Abschnitt

Einblicke in den CustomPeerResolverService: Clientregistrierungen

Siehe auch