Exemplo de descoberta com escopos

O exemplo DiscoveryWithScopes mostra como usar escopos para categorizar pontos de extremidade detetáveis, bem como como usar DiscoveryClient para executar uma pesquisa assíncrona de 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 mostra como os clientes podem criar e DiscoveryClient ajustar parâmetros de pesquisa para incluir escopos adicionando escopos ao FindCriteria. Este exemplo também mostra como os clientes podem restringir as respostas adicionando um critério de rescisão.

Funcionalidades de Serviço

Este projeto mostra dois pontos de extremidade de serviço sendo adicionados a um ServiceHostarquivo . 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 capacidade de descoberta pode ser desabilitada definindo a Enabled propriedade 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.

Funcionalidades do Cliente

O FindCalculatorServiceAddress() método mostra como usar um DiscoveryClient e passar em um FindCriteria com duas restrições. Um escopo é adicionado aos critérios e a MaxResults propriedade é definida como 1. O escopo limita os resultados apenas aos serviços que publicam o mesmo escopo. Definir MaxResults como 1 limita as respostas pelas quais as DiscoveryClient aguardas para, no máximo, 1 ponto de extremidade. A Find chamada é uma operação síncrona que bloqueia o 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 executá-lo, ACLs de URL adequadas devem ser adicionadas. Para obter mais informações, consulte Configurando HTTP e HTTPS. A execução do comando a seguir com um privilégio elevado deve adicionar as ACLs apropriadas. Você pode querer substituir seu domínio e nome de usuário para os seguintes argumentos se o comando não funcionar como está: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Compile a solução.

  3. Execute o executável do serviço a partir do diretório de compilação.

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