Rozšíření klientů

V volající aplikaci je vrstva modelu služby zodpovědná za překlad volání metod v kódu aplikace do odchozích zpráv, jejich nasdílení do podkladových kanálů, překlad výsledků zpět do návratových hodnot a parametrů v kódu aplikace a vrácení výsledků zpět volajícímu. Rozšíření modelu služeb upravují nebo implementují chování při provádění nebo komunikaci a funkce zahrnující funkce klienta nebo dispečera, vlastní chování, zachytávání zpráv a parametrů a další funkce rozšiřitelnosti.

Toto téma popisuje, jak pomocí ClientRuntime a ClientOperation tříd v klientské aplikaci WCF (Windows Communication Foundation) upravit výchozí chování spuštění klienta WCF nebo zachytit nebo upravit zprávy, parametry nebo vrátit hodnoty před odesláním nebo načtením z vrstvy kanálu. Další informace o rozšíření modulu runtime služby naleznete v tématu Rozšíření dispečerů. Další informace o chování, která upravují a vkládají objekty přizpůsobení do modulu runtime klienta, naleznete v tématu Konfigurace a rozšíření modulu runtime pomocí chování.

Klienti

V klientovi převede objekt klienta WCF nebo klientský kanál volání metody na odchozí zprávy a příchozí zprávy na výsledky operace, které se vrátí do volající aplikace. (Další informace o typech klientů najdete v tématu Architektura klienta WCF.)

Typy klientů WCF mají typy modulu runtime, které zpracovávají tuto funkčnost koncového bodu a na úrovni operací. Když aplikace volá operaci, ClientOperation přeloží odchozí objekty do zprávy, zpracuje průsečíky, potvrdí, že odchozí volání odpovídá cílové smlouvě, a odešle odchozí zprávu ClientRuntimedo , která je zodpovědná za vytváření a správu odchozích kanálů (a příchozích kanálů v případě duplexních služeb), zpracování extra odchozích zpráv (například úpravy hlaviček), zpracování průsečíků zpráv v obou směrech a směrování příchozích duplexního volání do příslušného objektu na straně DispatchRuntime klienta. Když ClientOperation se klientovi vrátí zprávy (včetně chyb), a ClientRuntime poskytují jim podobné služby.

Tyto dvě třídy modulu runtime jsou hlavním rozšířením pro přizpůsobení zpracování klientských objektů a kanálů WCF. Třída ClientRuntime umožňuje uživatelům zachytit a rozšířit spouštění klientů napříč všemi zprávami ve smlouvě. Třída ClientOperation umožňuje uživatelům zachytit a rozšířit spuštění klienta pro všechny zprávy v dané operaci.

Úpravy vlastností nebo vkládání vlastních nastavení se provádějí pomocí kontraktu, koncového bodu a chování operací. Další informace o použití těchto typů chování k provádění přizpůsobení modulu runtime klienta naleznete v tématu Konfigurace a rozšíření modulu runtime s chováním.

Scénáře

Existuje několik důvodů, proč rozšířit klientský systém, včetně:

Použití třídy ClientRuntime

Třída ClientRuntime je rozšiřitelný bod, do kterého můžete přidat rozšiřující objekty, které zachycují zprávy a rozšiřují chování klienta. Objekty průsečíku mohou zpracovávat všechny zprávy v určitém kontraktu, zpracovávat pouze zprávy pro konkrétní operace, provádět inicializaci vlastního kanálu a implementovat další chování vlastní klientské aplikace.

  • Tato CallbackDispatchRuntime vlastnost vrátí objekt runtime dispatch pro klienty zpětného volání iniciovaného službou.

  • Vlastnost OperationSelector přijímá vlastní objekt selektoru operace.

  • Tato ChannelInitializers vlastnost umožňuje přidání inicializátoru kanálu, který může zkontrolovat nebo upravit klientský kanál.

  • Vlastnost Operations získá kolekci ClientOperation objektů, do kterých můžete přidat vlastní zachytávání zpráv, které poskytují funkce specifické pro zprávy dané operace.

  • Tato ManualAddressing vlastnost umožňuje aplikaci vypnout některé záhlaví automatického adresování pro přímé řízení adresování.

  • Vlastnost Via nastaví hodnotu cíle zprávy na úrovni přenosu pro podporu zprostředkovatelů a dalších scénářů.

  • Vlastnost MessageInspectors získá kolekci IClientMessageInspector objektů, do kterých můžete přidat vlastní průsečíky zpráv pro všechny zprávy cestující přes klienta WCF.

Kromě toho existuje řada dalších vlastností, které načítají informace o kontraktu:

Pokud je klient WCF duplexní klient WCF, následující vlastnosti také načtou informace o klientovi WCF zpětného volání:

Chcete-li rozšířit provádění klienta WCF napříč celým klientem WCF, zkontrolujte vlastnosti, které jsou k dispozici ve ClientRuntime třídě, a zjistěte, zda upravujete vlastnost nebo implementujete rozhraní a jeho přidání do vlastnosti vytvoří funkce, které hledáte. Jakmile zvolíte konkrétní rozšíření pro sestavení, vložte rozšíření do příslušné ClientRuntime vlastnosti implementací chování klienta, které poskytuje přístup ke ClientRuntime třídě při vyvolání.

Vlastní rozšiřující objekty můžete do kolekce vložit pomocí chování operace (objekt, který implementuje IOperationBehavior), chování kontraktu (objekt, který implementuje IContractBehavior) nebo chování koncového bodu (objekt, který implementuje IEndpointBehavior). Objekt chování instalace se přidá do příslušné kolekce chování buď programově, deklarativní (implementací vlastního atributu) nebo implementací vlastního BehaviorExtensionElement objektu, aby bylo možné chování vložit pomocí konfiguračního souboru aplikace. Podrobnosti najdete v tématu Konfigurace a rozšíření modulu runtime pomocí chování.

Příklady, které demonstrují průsečík mezi klientem WCF, naleznete v tématu Postupy: Kontrola nebo úprava zpráv v klientovi.

Použití třídy ClientOperation

Třída ClientOperation je umístění pro úpravy za běhu klienta a kurzor pro vlastní rozšíření, která jsou vymezena pouze na jednu operaci služby. (Chcete-li změnit chování klienta za běhu pro všechny zprávy ve smlouvě, použijte ClientRuntime třídu.)

Operations Pomocí vlastnosti vyhledejte ClientOperation objekt, který představuje konkrétní operaci služby. Následující vlastnosti umožňují vložit vlastní objekty do klientského systému WCF:

Následující vlastnosti umožňují upravit systém v interakci s formátovacím modulem a vlastními inspektory parametrů:

  • SerializeRequest Vlastnost slouží k řízení serializace odchozí zprávy.

  • DeserializeReply Vlastnost slouží k řízení deserializace příchozí zprávy.

  • Action Vlastnost slouží k řízení akce WS-Adresování zprávy požadavku.

  • BeginMethod Použijte a EndMethod určete, které metody klienta WCF jsou přidruženy k asynchronní operaci.

  • FaultContractInfos Pomocí vlastnosti získáte kolekci obsahující typy, které se mohou objevit v chybách SOAP jako typ podrobností.

  • IsInitiating Pomocí vlastností IsTerminating můžete určit, zda je relace inicializována nebo je odtržená, v uvedeném pořadí, když je volána operace.

  • IsOneWay Pomocí vlastnosti můžete řídit, zda je operace jednosměrná operace.

  • Parent Vlastnost použijte k získání objektu obsahujícího ClientRuntime objektu.

  • Name Pomocí vlastnosti získejte název operace.

  • SyncMethod Pomocí vlastnosti můžete určit, která metoda je mapována na operaci.

Pokud chcete rozšířit spouštění klienta WCF pouze přes jednu operaci služby, zkontrolujte vlastnosti, které jsou k dispozici ve ClientOperation třídě, a zjistěte, jestli upravujete vlastnost nebo implementujete rozhraní a jeho přidání do vlastnosti vytvoří funkce, které hledáte. Jakmile zvolíte konkrétní rozšíření pro sestavení, vložte rozšíření do příslušné ClientOperation vlastnosti implementací chování klienta, které poskytuje přístup ke ClientOperation třídě při vyvolání. Uvnitř takového chování můžete vlastnost upravit ClientRuntime tak, aby vyhovovala vašim požadavkům.

Obvykle stačí implementovat chování operace (objekt, který implementuje IOperationBehavior rozhraní), ale můžete také použít chování koncových bodů a chování kontraktů k dosažení stejné věci vyhledáním OperationDescription konkrétní operace a připojením chování tam. Podrobnosti najdete v tématu Konfigurace a rozšíření modulu runtime pomocí chování.

Pokud chcete použít vlastní chování z konfigurace, nainstalujte své chování pomocí obslužné rutiny vlastního oddílu konfigurace chování. Chování můžete nainstalovat také vytvořením vlastního atributu.

Příklady, které demonstrují průsečík napříč klientem WCF, najdete v tématu Postupy: Kontrola nebo úprava parametrů.

Viz také