Freigeben über


Suchproxybeispiel

In diesem Beispiel wird gezeigt, wie eine Implementierung eines Suchproxys erstellt wird, um Informationen zu vorhandenen Diensten zu speichern, und wie Clients Informationen von diesem Proxy abfragen können. Dieses Beispiel umfasst drei Projekte:

  • Dienst: Ein einfacher Windows Communication Foundation (WCF)-Rechnerdienst, der sich beim Suchproxy registriert.

  • Suchproxy: Die Implementierung eines Suchproxydiensts.

  • Client: Eine WCF-Clientanwendung, die den Suchproxy aufruft, um nach Diensten zu suchen.

Veranschaulicht

Implementierung eines Suchproxys

Dd807497.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryProxy

DiscoveryProxy

Im Beispiel wird in der Main-Methode der Datei Program.cs gezeigt, wie ein Dienst des Typs DiscoveryProxy gehostet wird. Zwei Endpunkte, einer vom Typ DiscoveryEndpoint und einer vom Typ AnnouncementEndpoint, werden verfügbar gemacht. Beide Endpunkte verwenden TCP als Transport. Der DiscoveryEndpoint hört den durch den probeEndpointAddress-Parameter festgelegten URI ab. An dieser Stelle können Clients Überprüfungsnachrichten senden, um Daten vom Proxy abzufragen. Der AnnouncementEndpoint hört den durch den announcementEndpointAddress-Parameter festgelegten URI ab. An dieser Stelle lauscht der Proxy auf Ankündigungen. Wenn eine Onlineankündigung empfangen wird, fügt der Proxy den Dienst zum Cache hinzu, und wenn eine Offlineankündigung empfangen wird, entfernt er den Dienst aus seinem Cache.

Die Datei DiscoveryProxy.cs enthält die DiscoveryProxy-Implementierung. Der Proxy muss von der DiscoveryProxyBase-Klasse erben und erfordert eine AsyncResult-Implementierung. Bei der Instanziierung erstellt der Proxy ein neues Dictionary, mit dem er bekannte Elemente speichert.

Die Datei ist in zwei Bereiche, Proxy Cache Methods und Discovery Proxy Implementation, unterteilt. Die im Bereich Proxy Cache Methods enthaltenen Methoden werden verwendet, um das Dictionary zu aktualisieren, Dictionary-Abfragen durchzuführen und die Daten für die Benutzer zu drucken. Im Bereich Discovery Proxy Implementation sind die überschriebenen Methoden enthalten, die für die Ankündigungs- und Untersuchungsfunktionen erforderlich sind. Sie definieren die Aktionen, die von einem Proxy durchgeführt werden, nachdem eine Onlineankündigung, Offlineankündigung oder Überprüfungsnachricht empfangen wurde.

Dienst

In der Datei Program.cs im Dienstprojekt wird der gleiche URI für den Ankündigungsendpunkt als Suchproxy verwendet. Das liegt daran, dass der Dienst den Endpunkt zum Senden der Ankündigungen und der Proxy zum Empfangen der Ankündigungen verwendet. Der Dienst verwendet das DiscoveryBehavior und fügt einen Ankündigungsendpunkt hinzu.

Client

Das Clientprojekt verwendet den gleichen URI für den Überprüfungsendpunkt wie der Proxy. Das liegt daran, dass die Überprüfungen in diesem Szenario auch per Unicast ausdrücklich an den Endpunkt im Proxy gesendet werden. Der Client stellt eine Verbindung mit dieser bekannten Adresse her und führt dann eine Abfrage nach dem Dienst durch. Sobald der Dienst gefunden wurde, wird eine Verbindung zu dem Dienst hergestellt.

So verwenden Sie dieses Beispiel

  1. Laden Sie die Projektmappe in Visual Studio 2010, und erstellen Sie das Projekt.

  2. Führen Sie zunächst die unter "[Projektmappenbasisverzeichnis]\DiscoveryProxy\bin\debug" generierte Suchproxy-Anwendung aus. Der Suchproxy muss zuerst ausgeführt werden, da TCP-Ankündigungsendpunkte für den Dienst bereit sein müssen, damit die Ankündigungen gesendet werden können.

  3. Führen Sie als Nächstes die unter "[Projektmappenbasisverzeichnis] \Service\bin\debug" generierte Dienstanwendung aus. Beim Start sendet der Dienst eine Ankündigung an den Ankündigungsendpunkt des Suchproxys und wird im Cache des Proxys registriert.

  4. Führen Sie anschließend die unter "[Projektmappenbasisverzeichnis] \Client\bin\debug" generierte Clientanwendung aus. Der Client führt die Proxy-Abfrage durch, ruft die Dienstadresse ab und stellt dann eine Verbindung mit dem Dienst her.

  5. Beenden Sie schließlich den Client, den Dienst und dann den Proxy. Der Proxy muss ausgeführt werden, damit er die Offlineankündigung des Diensts empfangen kann.