Beispiel für Suche mit BereichenDiscovery with Scopes Sample

In diesem Beispiel wird veranschaulicht, wie Bereiche verwendet werden, um erkennbare Endpunkte zu kategorisieren, und wie DiscoveryClient verwendet wird, um eine asynchrone Suche nach Endpunkten durchzuführen.This sample shows how to use scopes to categorize discoverable endpoints as well how to use DiscoveryClient to perform an asynchronous search for endpoints. In Bezug auf den Dienst wird in diesem Beispiel veranschaulicht, wie die Suche für jeden Endpunkt angepasst wird, indem ein Endpunktsuchverhalten hinzugefügt und damit ein Bereich zum Endpunkt hinzugefügt sowie die Ermittelbarkeit des Endpunkts gesteuert wird.On the service, this sample shows how to customize discovery for each endpoint by adding an endpoint discovery behavior and using it to add a scope to the endpoint as well as controlling the endpoint’s discoverability. In Bezug auf den Client wird in diesem Beispiel beschrieben, wie Clients einen DiscoveryClient erstellen und die Suchparameter optimieren können, um Bereiche einzuschließen, indem Bereiche zu FindCriteria hinzugefügt werden.On the client, the sample goes over how clients can create a DiscoveryClient and fine tune search parameters to include scopes by adding scopes to the FindCriteria. In diesem Beispiel wird auch gezeigt, wie Clients Antworten durch Hinzufügen eines Beendigungskriteriums einschränken können.This sample also shows how clients can restrict responses by adding a termination criterion.

DienstfunktionenService Features

In diesem Projekt wird gezeigt, wie zwei Dienstendpunkte zu einem ServiceHost hinzugefügt werden.This project shows two service endpoints being added to a ServiceHost. Jedem Endpunkt ist ein EndpointDiscoveryBehavior zugeordnet.Each endpoint has a EndpointDiscoveryBehavior associated with it. Dieses Verhalten wird verwendet, um URI-Bereiche für beide Endpunkte hinzuzufügen.This behavior is used to add URI scopes for both endpoints. Bereiche werden zur Unterscheidung der einzelnen Endpunkte verwendet, damit die Clients die Suche optimieren können.Scopes are used to distinguish each of these endpoints so that the clients can fine tune the search. Für den zweiten Endpunkt kann die Ermittelbarkeit deaktiviert werden, indem die Enabled-Eigenschaft auf false festgelegt wird.For the second endpoint, the discoverability can be disabled by setting the Enabled property to false. Dadurch wird sichergestellt, dass die diesem Endpunkt zugeordneten Suchmetadaten nicht als Teil der Suchnachrichten gesendet werden.This ensures that the discovery metadata associated with this endpoint is not sent as part of any discovery messages.

ClientfunktionenClient Features

Die FindCalculatorServiceAddress()-Methode veranschaulicht die Verwendung von einem DiscoveryClient und die Übergabe von FindCriteria mit zwei Einschränkungen.The FindCalculatorServiceAddress() method shows how to use a DiscoveryClient and pass in a FindCriteria with two restrictions. Den Kriterien wird ein Bereich hinzugefügt, und die MaxResults-Eigenschaft wird auf 1 festgelegt.A scope is added to the criteria and the MaxResults property is set to 1. Der Bereich beschränkt die Ergebnisse auf die Dienste, die den gleichen Bereich veröffentlichen.The scope limits the results to only the services that publish the same scope. Durch Festlegen von MaxResults auf 1 werden die Antworten, auf die der DiscoveryClient wartet, auf maximal einen Endpunkt beschränkt.Setting MaxResults to 1 limits the responses the DiscoveryClient waits for to, at most, 1 endpoint. Der Find-Aufruf ist ein synchroner Vorgang, der den Thread blockiert, bis ein Timeout überschritten bzw. ein Endpunkt gefunden wird.The Find call is a synchronous operation that blocks the thread until a timeout is reached or one endpoint is found.

So verwenden Sie dieses BeispielTo use this sample

  1. In diesem Beispiel werden HTTP-Endpunkte verwendet. Zur Ausführung des Beispiels müssen die richtigen URL-ACLs hinzugefügt werden.This sample uses HTTP endpoints and to run this sample, proper URL ACLs must be added. Finden Sie unter Configuring HTTP and HTTPS Details.See Configuring HTTP and HTTPS for details. Durch die Ausführung des folgenden Befehls mit erweiterten Berechtigungen werden die entsprechenden ACLs hinzugefügt.Executing the following command at an elevated privilege should add the appropriate ACLs. Es empfiehlt sich, die folgenden Argumente durch die Domäne und den Benutzernamen zu ersetzen, wenn der Befehl nicht funktioniert: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%You may want to substitute your Domain and Username for the following arguments if the command does not work as is: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Erstellen Sie die Projektmappe.Build the solution.

  3. Führen Sie die ausführbare Dienstdatei aus dem Buildverzeichnis aus.Run the service executable from the build directory.

  4. Führen Sie die ausführbare Clientanwendung aus.Run the client executable. Beachten Sie, dass der Client in der Lage ist, den Dienst zu finden.Note that the client is able to locate the service.

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

Siehe auchSee Also