SuchproxybeispielDiscovery Proxy Sample

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.This sample shows how to create an implementation of a Discovery proxy to store information about existing services and how clients can query that proxy for information. Dieses Beispiel umfasst drei Projekte:This sample consists of three projects:

  • Dienst: eine einfache Windows Communication Foundation (WCF)-rechnerdienst, der sich der beim suchproxy registriert.Service: A simple Windows Communication Foundation (WCF) calculator service that registers itself with the discovery proxy.

  • Suchproxy: die Implementierung eines suchproxydiensts.Discovery Proxy: The implementation of a discovery proxy service.

  • Client: ein WCF-Clientanwendung, die den suchproxy zum Suchen nach Diensten aufruft.Client: A WCF client application that calls the discovery proxy to search for services.

VeranschaulichtDemonstrates

Implementierung eines SuchproxysDiscovery proxy implementation

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

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

DiscoveryProxyDiscoveryProxy

Im Beispiel wird in der Main-Methode der Datei Program.cs gezeigt, wie ein Dienst des Typs DiscoveryProxy gehostet wird.In the Main method of the Program.cs file, the sample shows how a service of type DiscoveryProxy is hosted. Zwei Endpunkte, einer vom Typ DiscoveryEndpoint und einer vom Typ AnnouncementEndpoint, werden verfügbar gemacht.It exposes two endpoints, one of type DiscoveryEndpoint and another of type AnnouncementEndpoint. Beide Endpunkte verwenden TCP als Transport.Both of the endpoints use TCP as a 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.The DiscoveryEndpoint is listening at the URI specified by the probeEndpointAddress parameter, this is where clients can send probe messages to query the proxy for its data. Der AnnouncementEndpoint hört den durch den announcementEndpointAddress-Parameter festgelegten URI ab.The AnnouncementEndpoint is listening at the URI specified by the announcementEndpointAddress parameter. An dieser Stelle lauscht der Proxy auf Ankündigungen.This is where the proxy listens to for announcements. 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.When an online announcement is received, the proxy adds the service to its cache and when an offline announcement is received it removes the service from its cache.

Die Datei DiscoveryProxy.cs enthält die DiscoveryProxy-Implementierung.The DiscoveryProxy.cs contains the implementation of the DiscoveryProxy. Der Proxy muss von der Object-Klasse erben und erfordert eine AsyncResult-Implementierung.The Proxy must inherit from the Object class and requires an implementation of AsyncResult. Bei der Instanziierung erstellt der Proxy ein neues Dictionary<TKey,TValue>, mit dem er bekannte Elemente speichert.At instantiation, the Proxy creates a new Dictionary<TKey,TValue>, which it uses to store elements it knows about.

Die Datei ist in zwei Bereiche, Proxy Cache Methods und Discovery Proxy Implementation, unterteilt.The file is divided into two regions, Proxy Cache Methods and Discovery Proxy Implementation. Die im Bereich Proxy Cache Methods enthaltenen Methoden werden verwendet, um das Dictionary<TKey,TValue> zu aktualisieren, Dictionary<TKey,TValue>-Abfragen durchzuführen und die Daten für die Benutzer zu drucken.The Proxy Cache Methods region contains methods used to update the Dictionary<TKey,TValue>, perform queries against the Dictionary<TKey,TValue>, and print the data for users. Im Bereich Discovery Proxy Implementation sind die überschriebenen Methoden enthalten, die für die Ankündigungs- und Untersuchungsfunktionen erforderlich sind.The Discovery Proxy Implementation region contains the overridden methods required for the Announcement and Probe functionality. Sie definieren die Aktionen, die von einem Proxy durchgeführt werden, nachdem eine Onlineankündigung, Offlineankündigung oder Überprüfungsnachricht empfangen wurde.They define the actions taken by a proxy after receiving an Online Announcement, an Offline Announcement, or a Probe message.

DienstService

In der Datei Program.cs im Dienstprojekt wird der gleiche URI für den Ankündigungsendpunkt als Suchproxy verwendet.In the Program.cs file in the Service project, the same URI is used for its announcement endpoint as the discovery proxy. Das liegt daran, dass der Dienst den Endpunkt zum Senden der Ankündigungen und der Proxy zum Empfangen der Ankündigungen verwendet.This is because service uses the endpoint for sending the announcements, while the proxy uses it for receiving them. Der Dienst verwendet das EndpointDiscoveryBehavior und fügt einen Ankündigungsendpunkt hinzu.The service uses the EndpointDiscoveryBehavior and adds an announcement endpoint to it.

ClientClient

Das Clientprojekt verwendet den gleichen URI für den Überprüfungsendpunkt wie der Proxy.The Client project uses the same URI for its probe endpoint as the Proxy. Das liegt daran, dass die Überprüfungen in diesem Szenario auch per Unicast ausdrücklich an den Endpunkt im Proxy gesendet werden.This is because the probes in this scenario are also being unicast specifically to the endpoint available on the proxy. Der Client stellt eine Verbindung mit dieser bekannten Adresse her und führt dann eine Abfrage nach dem Dienst durch.The Client connects to this well-known address and then queries it for the service. Sobald der Dienst gefunden wurde, wird eine Verbindung zu dem Dienst hergestellt.Once it has found the service it connects to it.

So verwenden Sie dieses BeispielTo use this sample

  1. Laden Sie die Projektmappe in Visual Studio 2012Visual Studio 2012, und erstellen Sie das Projekt.Load the project solution in Visual Studio 2012Visual Studio 2012 and build the project.

  2. Führen Sie zunächst die unter [Projektmappenbasisverzeichnis]\DiscoveryProxy\bin\debug generierte Suchproxyanwendung aus.First run the Discovery Proxy application, generated in [solution base directory]\DiscoveryProxy\bin\debug. 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.The Discovery Proxy must run first because TCP announcement endpoints must be up for the service to send its announcements.

  3. Führen Sie als Nächstes die unter [Projektmappenbasisverzeichnis] \Service\bin\debug generierte Dienstanwendung aus.Second, run the service application generated in [solution base directory]\Service\bin\debug. Beim Start sendet der Dienst eine Ankündigung an den Ankündigungsendpunkt des Suchproxys und wird im Cache des Proxys registriert.At start-up, the service sends an announcement to the announcement endpoint of the discovery proxy and is registered in the proxy’s cache.

  4. Führen Sie anschließend die unter [Projektmappenbasisverzeichnis] \Client\bin\debug generierte Clientanwendung aus.Next, run the client application, generated in [solution base directory]\Client\bin\debug. Der Client führt die Proxyabfrage durch, ruft die Dienstadresse ab und stellt dann eine Verbindung mit dem Dienst her.The client queries the proxy, gets the service address and then connects to the service.

  5. Beenden Sie schließlich den Client, den Dienst und dann den Proxy.Lastly, terminate the client, service and then the proxy. Der Proxy muss ausgeführt werden, damit er die Offlineankündigung des Diensts empfangen kann.The proxy must be running for it to receive the service's offline announcement.

Siehe auchSee Also