Compartilhar via


Exemplos de descoberta com escopos

O exemplo DiscoveryWithScopes mostra como usar escopos para categorizar pontos de extremidade detectáveis, bem como usar DiscoveryClient para executar uma pesquisa assíncrona por pontos de extremidade. No serviço, este exemplo mostra como personalizar a descoberta para cada ponto de extremidade adicionando um comportamento de descoberta de ponto de extremidade e usando-o para adicionar um escopo ao ponto de extremidade, bem como controlar a capacidade de descoberta do ponto de extremidade. No cliente, o exemplo explica como os clientes podem criar um DiscoveryClient e ajustar parâmetros de pesquisa para incluir escopos adicionando-os ao FindCriteria. Este exemplo também mostra como os clientes podem restringir as respostas adicionando um critério de encerramento.

Recursos do serviço

Este projeto mostra dois pontos de extremidade de serviço sendo adicionados a um ServiceHost. Cada ponto de extremidade tem um EndpointDiscoveryBehavior associado a ele. Esse comportamento é usado para adicionar escopos de URI para ambos os pontos de extremidade. Os escopos são usados para distinguir cada um desses pontos de extremidade para que os clientes possam ajustar a pesquisa. Para o segundo ponto de extremidade, a descoberta pode ser desabilitada definindo a propriedade Enabled como false. Isso garante que os metadados de descoberta associados a esse ponto de extremidade não sejam enviados como parte de nenhuma mensagem de descoberta.

Recursos do cliente

O método FindCalculatorServiceAddress() mostra como usar um DiscoveryClient e passar um FindCriteria com duas restrições. Um escopo é adicionado aos critérios e a propriedade MaxResults é definida como 1. O escopo limita os resultados apenas aos serviços que publicam o mesmo escopo. A configuração MaxResults como 1 limita as respostas que a DiscoveryClient espera para, no máximo, 1 ponto de extremidade. A chamada Find é uma operação síncrona que bloqueia a thread até que um tempo limite seja atingido ou um ponto de extremidade seja encontrado.

Para usar este exemplo

  1. Este exemplo usa pontos de extremidade HTTP e, para executar este exemplo, é necessário adicionar ACLs de URL adequadas. Para obter mais informações, confira Configurar HTTP e HTTPS. Executar o comando a seguir em um privilégio elevado deverá adicionar as ACLs apropriadas. Talvez você queira substituir o Domínio e o Nome de Usuário pelos seguintes argumentos se o comando não funcionar da forma como se apresenta: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Compile a solução.

  3. Execute o executável do serviço no diretório de build.

  4. Execute o executável do cliente. Observe que o cliente é capaz de localizar o serviço.