Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 um DiscoveryClient e ajustar de forma precisa os parâmetros de pesquisa para incluir os âmbitos, adicionando âmbitos ao FindCriteria. Este exemplo também mostra como os clientes podem restringir as respostas adicionando um critério de rescisão.
Características do serviço
Este projeto mostra dois endpoints de serviço sendo adicionados a um ServiceHost. Cada ponto de extremidade tem um EndpointDiscoveryBehavior associado a ele. Esse comportamento é usado para adicionar âmbitos de URI para ambos os endpoints. Os âmbitos são usados para distinguir cada um desses pontos de extremidade, permitindo que os clientes possam refinar 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 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 o DiscoveryClient aguarda para, no máximo, 1 endpoint. 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
Este exemplo utiliza endpoints HTTP e, para executar este exemplo, devem ser adicionadas ACLs adequadas de URL. 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%
Crie a solução.
Execute o executável do serviço a partir do diretório de compilação.
Execute o executável do cliente. Observe que o cliente é capaz de localizar o serviço.