Přehled modelu kanálu
Zásobník kanálů WCF (Windows Communication Foundation) je vrstvený komunikační zásobník s jedním nebo více kanály, které zpracovávají zprávy. V dolní části zásobníku je přenosový kanál, který je zodpovědný za přizpůsobení zásobníku kanálu k podkladovému přenosu (například TCP, HTTP, SMTP a další typy přenosu).) Kanály poskytují programovací model nízké úrovně pro odesílání a příjem zpráv. Tento programovací model spoléhá na několik rozhraní a dalších typů souhrnně označovaných jako model kanálu WCF. Toto téma popisuje obrazce kanálů, vytvoření základního naslouchacího procesu kanálu (ve službě) a objekt pro vytváření kanálů (na klientovi).
Zásobník kanálů
Koncové body WCF komunikují se světem pomocí komunikačního zásobníku označovaného jako zásobník kanálu. Následující diagram porovnává zásobník kanálů s jinými komunikačními zásobníky, například TCP/IP.
Zaprvé podobnosti: V obou případech každá vrstva zásobníku poskytuje určitou abstrakci světa pod danou vrstvou a odhalila tuto abstrakci pouze vrstvě přímo nad ní. Každá vrstva používá abstrakci pouze vrstvy přímo pod ní. Také v obou případech, když dvě zásobníky komunikují, každá vrstva komunikuje s odpovídající vrstvou v druhém zásobníku, například vrstva PROTOKOLU IP komunikuje s vrstvou IP a vrstvou TCP s vrstvou TCP atd.
Rozdíly: I když byl zásobník TCP navržen tak, aby poskytoval abstrakci fyzické sítě, je zásobník kanálu navržen tak, aby poskytoval abstrakci nejen toho, jak se zpráva doručí, tedy přenos, ale také další funkce, jako je například to, co je ve zprávě nebo jaký protokol se používá pro komunikaci, včetně dopravy, ale mnohem více než toho. Například spolehlivý element vazby relace je součástí zásobníku kanálu, ale není pod přenosem nebo samotným přenosem. Tato abstrakce se dosahuje tím, že vyžaduje dolní kanál v zásobníku, aby přizpůsobil základní přenosový protokol architektuře zásobníku kanálu a pak se spoléhá na kanály dále v zásobníku, aby poskytoval komunikační funkce, jako jsou záruky spolehlivosti a zabezpečení.
Zprávy procházejí komunikačním zásobníkem jako Message objekty. Jak je znázorněno na obrázku výše, dolní kanál se nazývá přenosový kanál. Je to kanál, který zodpovídá za odesílání a přijímání zpráv jiným stranám a od jiných stran. To zahrnuje odpovědnost za transformaci objektu Message na formát použitý ke komunikaci s jinými stranami a z tohoto formátu. Nad přenosovým kanálem může být libovolný počet kanálů protokolu, které zodpovídají za poskytování komunikační funkce, jako jsou spolehlivé záruky doručování. Protokolové kanály pracují se zprávami, které procházejí v podobě objektu Message . Obvykle buď transformují zprávu, například přidáním hlaviček nebo zašifrováním textu, nebo odesílají a přijímají vlastní řídicí zprávy protokolu, například potvrzení o přijetí.
Obrazce kanálu
Každý kanál implementuje jedno nebo více rozhraní označovaných jako rozhraní obrazce kanálu nebo obrazce kanálu. Obrazce těchto kanálů poskytují metody orientované na komunikaci, jako je odesílání a příjem nebo vyžádání a odpovídání, které kanál implementuje, a uživatele volání kanálu. Základem obrazců kanálu je IChannel rozhraní, což je rozhraní, které poskytuje metodu T> určenou GetProperty
<jako vrstvený mechanismus pro přístup k libovolným funkcím vystaveným kanály v zásobníku. Pět obrazců kanálu, které se rozšiřují IChannel , jsou:
Každý z těchto obrazců má navíc ekvivalent, který rozšiřuje System.ServiceModel.Channels.ISessionChannel<TSession> podporu relací. Jedná se o:
Obrazce kanálů se vzorují po některých základních vzorech výměny zpráv podporovaných existujícími přenosovými protokoly. Jednosměrné zasílání zpráv například odpovídá páruIInputChannel/IOutputChannel, odpověď na žádost odpovídá IRequestChannel/IReplyChannel párům a obousměrné duplexní komunikaci odpovídá IDuplexChannel (která rozšiřuje obojí IInputChannel i ).IOutputChannel
Programování pomocí zásobníku kanálů
Zásobníky kanálů se obvykle vytvářejí pomocí vzoru továrny, ve kterém vazba vytvoří zásobník kanálu. Na straně odeslání se vytvoří ChannelFactoryvazba, která zase sestaví zásobník kanálu a vrátí odkaz na horní kanál v zásobníku. Aplikace pak může tento kanál použít k odesílání zpráv. Další informace naleznete v tématu Programování na úrovni kanálu klienta.
Na straně příjmu se vytvoří IChannelListenervazba, která naslouchá příchozím zprávám. Poskytuje IChannelListener zprávy do naslouchací aplikace vytvořením zásobníků kanálů a předáním odkazu aplikace na horní kanál. Aplikace pak tento kanál použije k příjmu příchozích zpráv. Další informace naleznete v tématu Programování na úrovni kanálu služby.
Model objektu kanálu
Model objektu kanálu je základní sada rozhraní potřebných k implementaci kanálů, naslouchacích procesů kanálů a továren kanálů. K dispozici jsou také některé základní třídy, které vám pomůžou s vlastními implementacemi.
Naslouchací procesy kanálu zodpovídají za naslouchání příchozím zprávám a pak je doručují do vrstvy nad kanály vytvořené naslouchacím procesem kanálu.
Objekty pro vytváření kanálů zodpovídají za vytváření kanálů, které se používají k odesílání zpráv, a za zavírání všech kanálů vytvořených při zavření objektu pro vytváření kanálů.
ICommunicationObject je základní rozhraní, které definuje základní stavový počítač, který implementují všechny komunikační objekty. CommunicationObject poskytuje implementaci tohoto základního rozhraní, ze kterého mohou být odvozeny jiné třídy kanálů namísto opětovné implementace rozhraní. To však není povinné: vlastní kanál může implementovat ICommunicationObject přímo a nedědí z CommunicationObject. Žádná z tříd na obrázku 3 se nepovažuje za součást modelu kanálu; Jsou to pomocní správci, kteří chtějí vytvářet kanály, kteří chtějí implementovat vlastní kanály.
Následující témata popisují objektový model kanálu a také různé vývojové oblasti, které pomáhají vytvářet vlastní kanály.
Téma | Popis |
---|---|
Služba: Naslouchací objekty kanálů a kanály | Popisuje naslouchací procesy kanálu, které naslouchají příchozím kanálům v aplikaci služby. |
Klient: Objekty pro vytváření kanálů a kanály | Popisuje objekty pro vytváření kanálů, které vytvářejí kanály pro připojení k aplikaci služby. |
Principy změn stavů | Popisuje, jak se System.ServiceModel.ICommunicationObject modely rozhraní mění v kanálech. |
Výběr vzoru výměny zpráv | Popisuje šest základních vzorů výměny zpráv, které kanály můžou podporovat. |
Zpracování výjimek a chyb | Popisuje způsob zpracování chyb a výjimek ve vlastních kanálech. |
Konfigurace a podpora metadat | Popisuje, jak podporovat použití vlastních kanálů z aplikačního modelu a jak exportovat a importovat metadata pomocí vazeb a vazeb prvků. |