Condividi tramite


Esempio relativo all'individuazione di ambiti

Nell’esempio DiscoveryWithScopes viene illustrato come utilizzare gli ambiti per suddividere in categorie gli endpoint individuabili e come utilizzare DiscoveryClient per eseguire una ricerca asincrona per gli endpoint. Nel servizio questo esempio mostra come personalizzare l'individuazione per ogni endpoint aggiungendo un comportamento di individuazione dell'endpoint e utilizzandolo per aggiungere un ambito all'endpoint. Viene inoltre illustrato come controllare l'individuabilità dell'endpoint. Nel client l'esempio illustra come i client possono creare un DiscoveryClient e ottimizzare i parametri di ricerca per includere gli ambiti aggiungendo ambiti a FindCriteria. Questo esempio mostra anche come i client possono limitare le risposte aggiungendo un criterio di chiusura.

Funzionalità del servizio

Questo progetto mostra due endpoint del servizio aggiunti a un ServiceHost. Ogni endpoint dispone di un comportamento EndpointDiscoveryBehavior ad esso associato. Tale comportamento viene utilizzato per aggiungere ambiti URI per entrambi gli endpoint. Gli ambiti vengono utilizzati per distinguere ciascuno degli endpoint in modo che i client siano in grado di ottimizzare la ricerca. Per il secondo endpoint, l'individuabilità può essere disabilitata impostando la proprietà Enabled su false. Ciò garantisce che i metadati di individuazione associati all'endpoint non siano inviati come parte di un messaggio di individuazione.

Funzionalità del client

Il metodo FindCalculatorServiceAddress() mostra come utilizzare un DiscoveryClient e passare un FindCriteria con due restrizioni. Un ambito viene aggiunto ai criteri e la proprietà MaxResults viene impostata su 1. L'ambito limita i risultati ai soli servizi che pubblicano lo stesso ambito. L'impostazione di MaxResults su 1 limita le risposte attese da DiscoveryClient al massimo a 1 endpoint. La chiamata Find è un'operazione sincrona che blocca il thread fino a quando non viene raggiunto un timeout o non viene individuato un endpoint.

Per usare questo esempio

  1. Questo esempio usa endpoint HTTP e per eseguirlo è necessario aggiungere elenchi di controllo di accesso (ACL) agli URL appropriati. Per altre informazioni, vedere Configurazione di HTTP e HTTPS. L'esecuzione del comando seguente con privilegi elevati consente di aggiungere gli elenchi di controllo di accesso appropriati. È necessario sostituire dominio e nome utente per gli argomenti seguenti se il comando non funziona in modo corretto: netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Compilare la soluzione.

  3. Eseguire il servizio eseguibile dalla directory di compilazione.

  4. Eseguire il file eseguibile del client. Il client è in grado di individuare il servizio.