Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka CustomFindCriteria ukazuje, jak vytvořit vlastní shodu oboru pomocí logiky a jak implementovat vlastní službu zjišťování. Klienti používají funkcionality vlastního porovnávání oborů ke vylepšení a rozšíření funkcionality hledání v rámci systému WCF Discovery. Tento ukázkový scénář popisuje následující:
Klient hledá službu kalkulačky.
Aby bylo možné upřesnit hledání, musí klient použít vlastní pravidlo porovnávání oborů.
Podle tohoto pravidla služba odpoví klientovi, pokud jeho koncový bod odpovídá jakémukoli rozsahu určenému klientem.
Demonstruje
Vytvoření vlastní služby zjišťování
Implementace vlastního nastavení shody rozsahu pomocí algoritmu.
Diskuse
Klient hledá odpovídající kritéria typu OR. Služba odpoví zpět, pokud obory na svých koncových bodech odpovídají jakémukoli rozsahu poskytnutému klientem. V tomto případě klient hledá službu kalkulačky, která má některý z oborů v následujícím seznamu:
net.tcp://Microsoft.Samples.Discovery/RedmondLocationnet.tcp://Microsoft.Samples.Discovery/SeattleLocationnet.tcp://Microsoft.Samples.Discovery/PortlandLocation
Aby toho dosáhl, klient směruje služby tak, aby používaly vlastní pravidlo porovnávání oborů předáním vlastní shody oboru identifikátorem URI. Aby služba usnadnila porovnávání vlastních oborů, musí používat vlastní službu zjišťování, která rozumí pravidlu shody vlastního oboru a implementuje přidruženou odpovídající logiku.
V klientském projektu otevřete soubor Program.cs. Všimněte si, že ScopeMatchBy pole objektu FindCriteria je nastaveno na konkrétní identifikátor URI. Tento identifikátor se odešle do služby. Pokud služba toto pravidlo nerozumí, ignoruje požadavek na vyhledání klienta.
Otevřete projekt služby. K implementaci vlastní služby zjišťování se používají tři soubory:
AsyncResult.cs: Jedná se o implementaci
AsyncResult, kterou vyžadují metody zjišťování.CustomDiscoveryService.cs: Tento soubor implementuje vlastní službu zjišťování. Implementace rozšiřuje DiscoveryService třídu a přepíše nezbytné metody. Poznamenejte si implementaci OnBeginFind metody. Metoda zkontroluje, zda klient specifikoval vlastní obor shodu podle pravidla. Jedná se o stejný vlastní identifikátor URI, který klient zadal dříve. Pokud je zadáno vlastní pravidlo, následuje cesta kódu, která implementuje logiku shody OR.
Tato vlastní logika prochází všemi rozsahy na každém koncovém bodu služby. Pokud některý z oborů koncového bodu odpovídá jakémukoli rozsahu poskytovanému klientem, služba zjišťování tento koncový bod přidá do odpovědi odeslané zpět klientovi.
CustomDiscoveryExtension.cs: Posledním krokem při implementaci služby zjišťování je připojení této implementace vlastní služby zjišťování k hostiteli služby. Pomocná třída použitá zde je
CustomDiscoveryExtensiontřída. Tato třída rozšiřuje DiscoveryServiceExtension třídu. Uživatel musí metodu GetDiscoveryService přepsat. V tomto případě metoda vrátí instanci vlastní služby zjišťování, která byla vytvořena dříve.PublishedEndpointsje ReadOnlyCollection<T> obsahující všechny koncové body aplikace, které jsou přidány do ServiceHost. Služba vlastního zjišťování toto používá k výplni svého interního seznamu. Uživatel může také přidat další metadata k různým koncovým bodům.
Nakonec otevřete Program.cs. Všimněte si, že jak ServiceDiscoveryBehavior, tak CustomDiscoveryExtension jsou přidány k hostiteli. Jakmile to uděláte a hostitel má koncový bod, přes který se mají přijímat zprávy zjišťování, může aplikace používat vlastní službu zjišťování.
Všimněte si, že klient dokáže službu najít, aniž by věděl její adresu.
Jak nastavit, sestavit a spustit ukázku
Otevřete řešení, které obsahuje projekt.
Zkompilujte projekt.
Spusťte aplikaci služby.
Spusťte klientskou aplikaci.