673

WCF pro začátečníky – 1. díl: teorie, základní pojmy

autor Kryštof Laryš | publikováno 3. února 2009


Vítám vás u prvního dílu seriálu o WCF. V tomto díle si zodpovíme otázky jako: Co je to WCF, proč jej používat, v čem jsou jeho výhody, jak souvisí WCF se SOA a mnoho dalších. Zároveň se podíváme na některé základní pojmy, které je potřeba znát.
Nejprve si povíme, co je to SOA. SOA je zkratka pro Service-Oriented Architecture, neboli servisně orientovaná architektura. WCF je tedy jednotný framework, pomocí kterého vytváříme SOA aplikace. Jednoduše jde říci, že jde o komunikaci (výměnu dat) aplikace s aplikací, nebo ještě lépe, služby se službou, klientem. Konkrétněji tedy bude WCF distribuovaná aplikace, nejčastěji jako server (WCF služba) a klienti (aplikace napsané v .NET jazyce).
 
V minulosti jsme pro vytváření SOA aplikací měli několik možností. Zpravidla platilo to, že programátor napsal program podle toho, jaké bylo nejlepší využití dané technologie pro účel, který potřeboval. Každá taková technologie se pochopitelně hodila na něco jiného. Příklady takových technologií mohou být ASP.NET Web Services, Web Services Enhancements (WSE), .NET Remoting, Enterprise Services, Microsoft Message Queuing (MSMQ, dodnes hodně využívané hlavně díky spolehlivému doručování zpráv) a další. Velkou nevýhodou těchto technologií je fakt, že pokud budeme chtít psát nějakou aplikaci, bude její vývoj závislý na použité technologii. Dalším faktem je to, že tyto technologie nejsou vzájemně kompatibilní, což nám znesnadňuje práci s nimi.
 
Nyní se dostáváme k tomu, co je to vlastně WCF, jaký je rozdíl a výhody mezi výše zmíněnými staršími technologiemi. WCF je základní infrastruktura, která všechny tyto dřívější microsoftí technologie sjednocuje. Z toho je vidět, že programátor nemusí vůbec znát konkrétní programový model dané technologie, kterou chce využívat, ale stačí mu znát koncepci WCF. WCF je v tomto ohledu obrovské zjednodušení pro programátory a také nabízí mnoho vlastností, které danou technologii ještě zlepšují. Co se týče rychlosti komunikace, tak je na tom WCF naprosto stejně, ne-li lépe. A další velkou výhodou je jednoduchá možnost nastavit bezpečnost a další vlastnosti služby.
 
To by bylo k teorii okolo WCF vše, teď už budeme rozebírat pojmy související přímo s WCF. Základním stavebním prvkem WCF aplikace je služba (service).
 
Služba je systém, který poskytuje jeden nebo více endpointů (koncových bodů), které slouží pro příjem a odesílání SOAP zpráv (messages). Služba publikuje metadata. Tvoří ji tři základní části:
  • třída služby, což je její samotná implementace
  • hostovací prostředí neboli místo, kde služba poběží
  • jeden nebo více endpointů
Endpoint je ve službě místo, které slouží k přijímání a odesílání zpráv. Tvoří jej tři části. Adress, Binding a Contract, což se dá jednoduše zapamatovat jako ABC.
  • adress – adresa nám říká, kde služba běží, tedy kam budou zasílány zprávy
  • binding – říká nám, jakým způsobem bude služba komunikovat, tedy jaký komunikační protokol je zvolen, jaké kódování, ale také výběr bezpečnosti, sessions, transakcí atd.
  • contract – specifikuje rozhraní, které služba poskytuje, metody a další. Contract je nezávislý na volbě adresy a bindingu. V tomto bodě opět vidíme, v čem spočívá síla WCF.
SOAP zprávy (messages) jsou zprávy zasílané mezi klientem a serverem (službou) a jsou nezávislé na přenosovém protokolu. Je to vlastně požadavek a odpověď po nějakém komunikačním kanále. Přesnější model posílání zpráv (messaging patterns), které WCF podporuje, je následující:
  • one way – klient odešle zprávu službě a neočekává odpověď
  • request-response – klient pošle požadavek a čeká na odpověď
  • duplex – obousměrná komunikace mezi klientem i službou probíhající asynchronně (služba může vynutit spuštění metody na straně klienta)
Metadata slouží k popisu služby. Tento popis specifikuje všechny údaje důležité k tomu, aby na jejich základě mohl být nakonfigurován klient. Díky tomu klient ví, na jakém protokolu služba běží, na jaké adrese atd.
 
Hostovací prostředí je místo, kde služba poběží, kde bude hostována. WCF služba může být hostována například v IIS (Internetové Informační Službě), klasickém Windows procesu anebo také jako tzv. self-hosting, což může být prakticky jakákoliv aplikace (konzolová, WinForm, WPF).
 
Kanál (channel) je prostředí, ve kterém se přenášejí zprávy. Toto prostředí je vytvořeno v okamžiku, kdy chce klient zaslat nějakou zprávu endpointu služby.
 
Proxy je prostředník mezi klientem a serverem a používá se na straně klienta vždy, i když jde jen o komunikaci na jednom PC v rámci paměti. Pokud chce klient komunikovat se serverem, musí si vždy vytvořit instanci proxy třídy. Metody, které služba vypublikovala jako proveditelné, jsou pak součástí proxy třídy a klient je tak může volat.
 

Bindingu a contractu společně ještě s mnoha dalšími i již výše zmíněnými pojmy se budeme podrobněji zabývat v příštím díle seriálu. Teorie je ještě dost, ale pokusím se to nejdůležitější shrnout do jednoho, maximálně dvou dílů.


Kryštof