Udostępnij za pośrednictwem


Niestandardowe kryteria znajdowania

W przykładzie CustomFindCriteria pokazano, jak utworzyć dopasowanie zakresu niestandardowego przy użyciu logiki i jak zaimplementować niestandardową usługę odnajdywania. Klienci używają niestandardowych funkcji dopasowywania zakresu do uściślenia i dalszej kompilacji na podstawie udostępnionej przez system funkcji znajdowania odnajdywania WCF. Scenariusz, który obejmuje ten przykład, jest następujący:

  1. Klient szuka usługi kalkulatora.

  2. Aby uściślić wyszukiwanie, klient musi użyć niestandardowej reguły dopasowywania zakresu.

  3. Zgodnie z tą regułą usługa reaguje z powrotem na klienta, jeśli jego punkt końcowy jest zgodny z dowolnymi zakresami określonymi przez klienta.

Demonstracje

  • Tworzenie niestandardowej usługi odnajdywania.

  • Implementowanie dopasowania zakresu niestandardowego według algorytmu.

Dyskusja

Klient szuka kryteriów dopasowania typu "OR". Usługa odpowiada z powrotem, jeśli zakresy w swoich punktach końcowych są zgodne z dowolnym zakresem dostarczonym przez klienta. W takim przypadku klient szuka usługi kalkulatora z dowolną z zakresów na poniższej liście:

  1. net.tcp://Microsoft.Samples.Discovery/RedmondLocation

  2. net.tcp://Microsoft.Samples.Discovery/SeattleLocation

  3. net.tcp://Microsoft.Samples.Discovery/PortlandLocation

W tym celu klient kieruje usługi do używania niestandardowej reguły dopasowywania zakresu przez przekazanie niestandardowego dopasowania zakresu według identyfikatora URI. Aby ułatwić dopasowywanie zakresu niestandardowego, usługa musi używać niestandardowej usługi odnajdywania, która rozumie regułę dopasowania zakresu niestandardowego i implementuje skojarzona logikę dopasowania.

W projekcie klienta otwórz plik Program.cs. Należy pamiętać, że ScopeMatchBy pole FindCriteria obiektu jest ustawione na określony identyfikator URI. Ten identyfikator jest wysyłany do usługi. Jeśli usługa nie rozumie tej reguły, ignoruje żądanie znajdowania klienta.

Otwórz projekt usługi. Trzy pliki służą do implementowania usługi Custom Discovery Service:

  1. AsyncResult.cs: jest to implementacja elementu wymaganego AsyncResult przez metody odnajdywania.

  2. CustomDiscoveryService.cs: ten plik implementuje niestandardową usługę odnajdywania. Implementacja rozszerza klasę DiscoveryService i zastępuje niezbędne metody. Zwróć uwagę na implementację OnBeginFind metody . Metoda sprawdza, czy zakres niestandardowy jest zgodny z regułą przez klienta. Jest to ten sam niestandardowy identyfikator URI określony wcześniej przez klienta. Jeśli zostanie określona reguła niestandardowa, następuje ścieżka kodu, która implementuje logikę dopasowania "OR".

    Ta logika niestandardowa przechodzi przez wszystkie zakresy w każdym z punktów końcowych, które ma usługa. Jeśli którykolwiek z zakresów punktu końcowego jest zgodny z dowolnym zakresem dostarczonym przez klienta, usługa odnajdywania dodaje ten punkt końcowy do odpowiedzi wysyłanej z powrotem do klienta.

  3. CustomDiscoveryExtension.cs: ostatnim krokiem implementacji usługi odnajdywania jest połączenie tej implementacji niestandardowej usługi odnajdywania z hostem usługi. Klasa pomocnika używana tutaj jest klasą CustomDiscoveryExtension . Ta klasa rozszerza klasę DiscoveryServiceExtension . Użytkownik musi zastąpić metodę GetDiscoveryService . W takim przypadku metoda zwraca wystąpienie niestandardowej usługi odnajdywania, która została utworzona wcześniej. PublishedEndpoints jest elementem zawierającym ReadOnlyCollection<T> wszystkie punkty końcowe aplikacji, które są dodawane do elementu ServiceHost. Usługa odnajdywania niestandardowego używa tej funkcji do wypełnienia swojej wewnętrznej listy. Użytkownik może również dodać inne metadane punktu końcowego.

Na koniec otwórz Program.cs. Należy pamiętać, że zarówno element , jak ServiceDiscoveryBehavior i CustomDiscoveryExtension są dodawane do hosta. Po wykonaniu tej czynności host ma punkt końcowy, w którym mają być odbierane komunikaty odnajdywania, aplikacja może używać niestandardowej usługi odnajdywania.

Zwróć uwagę, że klient może znaleźć usługę bez znajomości jej adresu.

Aby skonfigurować, skompilować i uruchomić przykład

  1. Otwórz rozwiązanie zawierające projekt.

  2. Skompiluj projekt.

  3. Uruchom aplikację usługi.

  4. Uruchom aplikację kliencką.