Compartir a través de


Ejemplo de detección con ámbitos

El ejemplo DiscoveryWithScopes muestra cómo utilizar los ámbitos para clasificar los puntos de conexión detectables además de cómo utilizar DiscoveryClient para hacer una búsqueda asincrónica de los puntos de conexión. En el servicio, este ejemplo muestra cómo personalizar la detección de cada extremo agregando un comportamiento de detección de extremo y utilizándolo para agregar un ámbito al extremo así como controlando la detectabilidad del punto de conexión. En el cliente, el ejemplo revisa el modo en que los clientes pueden crear un DiscoveryClient y ajustar los parámetros de búsqueda para incluir ámbitos agregándolos a FindCriteria. Este ejemplo también muestra el modo en que los clientes pueden restringir las respuestas agregando un criterio de terminación.

Características de servicio

Este proyecto muestra dos puntos de conexión de servicio que se agregan a un ServiceHost. Cada extremo tiene un EndpointDiscoveryBehavior asociado. Este comportamiento se utiliza para agregar los ámbitos del URI para ambos puntos de conexión. Los ámbitos se utilizan para distinguir cada uno de estos extremos para que los clientes puedan ajustar la búsqueda. Para el segundo extremo, la detectabilidad puede deshabilitarse estableciendo la propiedad Enabled en false. De este modo se asegura de que los metadatos de detección asociados a este punto de conexión no se envían como parte de ningún mensaje de detección.

Características de cliente

El método FindCalculatorServiceAddress() muestra cómo utilizar DiscoveryClient y pasarlo en un FindCriteria con dos restricciones. Un ámbito se agrega a los criterios y la propiedad MaxResults se establece en 1. El ámbito limita los resultados solo a los servicios que publican el mismo ámbito. Al establecer MaxResults en 1, se limitan las respuestas que el DiscoveryClient espera a un punto de conexión, como máximo. La llamada a Find es una operación sincrónica que bloquea el subproceso hasta que se alcance un tiempo de espera o se encuentre un punto de conexión.

Para utilizar este ejemplo

  1. Este ejemplo utiliza los extremos HTTP y para ejecutarlo, se deben agregar las ACL de dirección URL apropiadas. Para obtener más información, consulte Configuración de HTTP y HTTPS. Al ejecutar el siguiente comando con privilegios elevados, se deberían agregar las ACL adecuadas. Puede que desee sustituir su dominio y nombre de usuario para los siguientes argumentos si el comando no funciona como debería: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Compile la solución.

  3. Ejecute el ejecutable de servicio desde el directorio de compilación.

  4. Ejecute la aplicación cliente. Observe que el cliente puede localizar el servicio.