Freigeben über


Beispiel für Suche mit Bereichen

Im Beispiel "DiscoveryWithScopes " wird gezeigt, wie Bereiche zum Kategorisieren auffindbarer Endpunkte sowie DiscoveryClient zum Ausführen einer asynchronen Suche nach Endpunkten verwendet werden. Auf dem Dienst zeigt dieses Beispiel, wie Sie die Ermittlung für jeden Endpunkt individuell anpassen, indem Sie ein Entdeckungsverhalten eines Endpunkts hinzufügen und dieses verwenden, um dem Endpunkt einen Gültigkeitsbereich hinzuzufügen und seine Auffindbarkeit zu steuern. Auf dem Client beschreibt das Beispiel, wie Clients DiscoveryClient erstellen und Suchparameter verfeinern können, um Bereiche einzuschließen, indem sie Bereiche zu FindCriteria hinzufügen. In diesem Beispiel wird auch gezeigt, wie Clients Antworten einschränken können, indem sie ein Beendigungskriterium hinzufügen.

Dienstfeatures

Dieses Projekt zeigt zwei Dienstendpunkte an, die einem ServiceHostHinzugefügt werden. Jedem Endpunkt ist ein EndpointDiscoveryBehavior zugeordnet. Dieses Verhalten wird verwendet, um URI-Bereiche für beide Endpunkte hinzuzufügen. Bereiche werden verwendet, um jeden dieser Endpunkte zu unterscheiden, damit die Clients die Suche optimieren können. Für den zweiten Endpunkt kann die Auffindbarkeit durch Festlegen der Enabled Eigenschaft auf falsedeaktiviert werden. Dadurch wird sichergestellt, dass die diesem Endpunkt zugeordneten Ermittlungsmetadaten nicht als Teil von Discoverynachrichten gesendet werden.

Clientfunktionen

Die FindCalculatorServiceAddress()-Methode veranschaulicht die Verwendung von einem DiscoveryClient und die Übergabe von FindCriteria mit zwei Einschränkungen. Der Kriterien wird ein Bereich hinzugefügt, und die MaxResults Eigenschaft wird auf 1 festgelegt. Der Bereich beschränkt die Ergebnisse auf die Dienste, die den gleichen Bereich veröffentlichen. Das Festlegen von MaxResults auf 1 begrenzt die Anzahl der Endpunkte, auf die durch DiscoveryClient gewartet wird, auf höchstens einen. Der Find Aufruf ist ein synchroner Vorgang, der den Thread blockiert, bis ein Timeout erreicht ist oder ein Endpunkt gefunden wird.

So verwenden Sie dieses Beispiel

  1. In diesem Beispiel werden HTTP-Endpunkte verwendet und zum Ausführen dieses Beispiels müssen die richtigen URL-ACLs hinzugefügt werden. Weitere Informationen finden Sie unter Konfigurieren von HTTP und HTTPS. Wenn Sie den folgenden Befehl mit erhöhten Rechten ausführen, sollten Sie die entsprechenden ACLs hinzufügen. Möglicherweise möchten Sie Ihre Domäne und Ihren Benutzernamen durch die folgenden Argumente ersetzen, wenn der Befehl nicht wie folgt funktioniert: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Erstellen Sie die Lösung.

  3. Führen Sie die ausführbare Dienstdatei aus dem Buildverzeichnis aus.

  4. Führen Sie das Client-Programm aus. Beachten Sie, dass der Client den Dienst finden kann.