© 2009 Ing. Roman Fischer
V této studii si kladu za cíl vysvětlit podstatu fungování komunikace aplikací pomocí služeb a zmapovat možností takového řešení. Zaměřím se především na komunikací pomocí webových služeb, v dnešní době již téměř standardu předávání informací mezi aplikacemi. Důkazem tohoto tvrzení může být i fakt, že v zásadě každý nový softwarový produkt musí tuto formu využití komunikace (především prostřednictvím internetu) podporovat, jinak by totiž byl považován za zastaralý.
V současné době je již velmi neobvyklé, aby běžná firma využívala pro podporu svých procesů jedinou aplikaci, jediný informační systém. Odhad agentury Gartner před několika lety sděloval, že „do roku 2005 žádná aplikace nebude pokrývat více než 40% aplikačních potřeb dané organizace.“ V současnosti tomuto tvrzení můžeme dát jedině za pravdu. Firmy používají specifické aplikace, od různých výrobců a na různých platformách. To však vytváří tlak na zvládnutí procesů jejich vzájemné komunikace. Podpůrné procesy jsou často vytěsňovány za hranice firmy, často outsourcovány a podnik se snaží především integrovat aplikace hlavní. Řešení pak přinášejí celopodnikové či mezipodnikové integrace aplikací, známé též pod pojmy Enterprise Application Integration (EAI) a Business to Business (B2B) Integration.
Jednou z možností , jak integraci řešit, je využití některé z middlewarových technologií, tedy takových technologií, které se vloží mezi stávající aplikace a komunikaci budou zprostředkovávat. Těchto technologií je celá řada. Lze uvést technologie jako MOM (Message Oriented Middleware) nebo WS (Web Services), ale i DCOM (Distributed Component Object Model) či CORBA (Common Object Request Broker Architecture). DCOM a CORBA jsou však technologie zaměřené na komunikaci softwarových komponent, zatímco WS a MOM se využívají pro komunikaci mezi systémy.
V této práci bych se chtěl věnovat především webovým službám v podání společnosti Microsoft a představit jejich přístup k této problematice. Zaměřím se více na vývojovou stránku jednotlivých systémů webových služeb, představím možnosti využití nástrojů společnosti Microsoft a rámců, ve kterých lze požadovanou integraci provádět.
V úvodu bych rád vysvětlil podstatu webových služeb a představil princip fungování komunikace s jejich využitím.
Dle definice konsorcia W3C je webová služba "softwarový systém vytvořený pro podporu spolupráce a interakce mezi počítači přes počítačovou sít.“
Tato technologie umožňuje integrovat libovolné aplikace provozované na různých platformách a zpřístupnit jejich vzájemnou komunikaci a ovládání prostřednictvím webového rozhraní. Tato univerzálnost s sebou samozřejmě přináší výhody v podobě nezávislosti jednotlivých komunikujících systémů. Není tedy nutné brát při komunikaci takový ohled na ostatní systémy a jejich rozhraní. Jednotlivé části podnikových systémů si tak mohou vyměňovat informace použitím jednotného komunikačního protokolu. Jak již vyplývá z definice W3C, jedná se v podstatě o komunikaci mezi dvěma subjekty, při níž má jedna funkci poskytovatele webové služby (Service Provider) a druhá je klientem služby (Service Requester). Často bývá jako další subjekt komunikace pomocí webových služeb uváděn registr služeb (Service Register), jenž je jakýmsi shromažďovatelem informací o webových službách, jejich poskytovatelích a dalších údajích potřebných pro vyhledání a využití služby. Samozřejmě může být poskytovatel služby i jejím registrem a v takovém případě získáme potřebné informace přímo od něj.
Webové služby jsou postaveny na několika společně pracujících technologiích. Termín webová služba popisuje způsob integrace aplikací pomocí otevřených standardů XML, SOAP, WSDL a UDDI.
XML
Zkrácený výraz pro Extensible Markup Language. Jedná se o specifikaci vyvinutou konsorciem W3C a navrženou speciálně pro webové dokumenty. Dovoluje vytvářet individuální popisné značky a umožňuje tak do dokumentu vložit kromě obsahu i jeho strukturu. Volnost při značkování pak přináší široké možnosti jeho použití, mimojité i možnosti snadné validace, interpretace a přenosu dokumentu.
SOAP
Zkratka používaná pro Simple Object Access Protocol. Protokol určený k výměně zpráv ve formátu XML reprezentující požadavky na webovou službu a její odpovědí přes počítačovou sít. Zprávy SOAP jsou platformově nezávislé a lze je posílat přes různé internetové protokoly jako jsou SMTP, MIME a hlavně HTTP.
WSDL
Zkráceně Web Services Description Language. Značkovací jazyk na základech XML používaný k popisu možností webové služby jako kolekce koncových bodů, které umožňují výměnu zpráv. WSDL byl vyvinut společně firmami IBM a Microsoft. WSDL je základní součástí UDDI, celosvětového registru, jež ho používá k popisu jednotlivých služeb.
UDDI
Universal Description, Discovery and Integration. Jedná se o distribuovaný adresář služeb, založený na standardu XML a přístupný na webu, který umožňuje vyhledávání webových služeb.
XML se používá k popisu dat, SOAP k jejich transferu, WSDL k popisu služby a UDDI k zjištění dostupných služeb. Vzájemné vztahy mezi těmito technologiemi lze ukázat na následujícím obrázku Každá webová služby by měla disponovat svým formálním popisem ve WSDL. Z toho popisu pak lze vytvořit požadavek na přenos protokolem SOAP. Popis služby lze zaregistrovat do UDDI, kde lze služby vyhledávat dle zvolených parametrů.
J. Kosek [3]
Základní pojetí webových služeb Microsoft představil společně s .NET frameworkem v roce 2002 a webové služby postavil na výše popsaném a vysvětleném konceptu, že jiné aplikace mohou používat jejich funkcionalitu a volat jejich metody a funkce. Webové služby jsou k dispozici různým aplikacím, ať už se jedná o Windows desktopovou aplikaci nebo aplikaci webovou. Základním prvkem webové služby je fakt, že nemá grafické uživatelské rozhraní. Řešení tohoto problému je ponecháno klientské aplikaci. Při tvorbě webové služby v prostředí .NET také není potřeba se učit cokoliv o XML, SOAP či WSDL. Microsoft .NET framework se postará jak o značkování dat, tak o jejich přenos a dokonce i o popis služby. Microsoft zahrnul podporu webových služeb i do svého vývojového nástroje Visual Studio a zajistil tak jejich rychlé rozšíření.
Schéma architektury webových služeb Microsoft [4]
Microsoft implementoval podporu webových služeb do mnoha svých produktů. Namátkou můžeme zmínit operační systém Windows Vista, kancelářský balík Office, produkty řady Sharepoint (zde hrají webové služby klíčovou roli pro řízení událostí, formulářů, multimediálních knihoven, kalendářů, atd.). Podporu nebo využití webových služeb najdeme i v produktech SQL Server, Dynamics, Visio a mnohých dalších. Klasickým příkladem může být podpora herní konzole Xbox, která je celá realizované jako webová služba ke které se herní konzole připojuje prostřednictvím Internetu. Obecně lze říci, že Microsoft na technologii webových služeb dnes staví všechna svá řešení.[4]
Jak již bylo zmíněno, Microsoft implementoval podporu použití či vývoje webových služeb do mnoha svých produktů. V oblasti vývoje lze spatřit podporu webových služeb jako jednu z nejsilnějších.. Společně s .NET frameworkem 2.0 přišla od Microsoft plná podpora a začlenění webových služeb do vývojového nástroje Visual Studio 2005. Vývoj webových služeb a jejich nasazení jsou díky tomuto nástroji velmi snadné. V souvislosti s tím nás však musí napadnout, zda Microsoft nepřipravuje tak jednoduché nasazování webových služeb čistě z marketingových důvodů, jelikož právě snadnost jejich použití nahrává rychlému rozšíření produktů Microsoft.
Pro vývojáře se však jedná o ulehčení práce a zrychlení nasazování hotových produktů. Webové služby v podání Microsoft jsou publikovány jako webové aplikace, běžící na Microsoft IIS (Internet Information Services) serveru a jsou přístupné přes protokol HTTP. Tím se drží základní myšlenky webových služeb, tj. nezávislosti na platformách i programovacích jazycích komunikujících systémů. Vývojáři mohou publikovat informace o svých webových službách přímo do UDDI a následně je opět pomocí implementace ve Visual Studiu v UDDI vyhledávat. Na obrázku v příloze 1 je znázorněn způsob připojení webové služby do projektu ve Visual Studiu 2008.
Webové služby lze začlenit do doplňků Microsoft Office a zajistit tak komunikaci těchto velmi rozšířených produktů s firemními aplikačními servery, poskytujícími specifické služby. V následujícím textu se pokusím přiblížit nejnovější technologii Microsoft pro vývoj webových služeb a jejich použití při integraci aplikací.
WCF (Windows Communication Foundation) je programovací model a rutina určená k vývoji distribuovaných aplikací založených na webových službách. Rozšiřuje .NET framework o funkcionalitu vytváření bezpečných webových služeb, komunikujících napříč platformami. Kombinuje v sobě možnosti existujících Microsoft technologií jako Enterprice Services, System Messaging, .NET Remoting a Microsoft Web Services (ASMX) a vytváří tak komplexní rámec přesahující základní možnosti webových služeb.
Na rozdíl od klasické webové služby WCF používá více koncových bodů pro komunikaci. Jediná webová služba tak může své možnosti nabízet na několika koncových bodech a ještě k tomu můžeme definovat, jakou funkcionalitu bude který bod poskytovat. WCF službu tvoří tři základní části:
Komunikaci klienta se službou můžeme ukázat na následujícím obrázku.
Koncový bod se pak skládá z adresy, bindingu a kontraktu. Binding určuje druh spojení (HTTP, FTP,…) a použité kódování (textové nebo binární), adresa pak cíl, kde je služba dostupná (např. URL adresu) a kontrakt specifikuje sadu zpráv, která může být přijata nebo odeslána.
Na rozdíl od klasické webové služby disponuje WCF mnohými rozšířeními. Je možné uchovávat stavové informace (obdobně, i když ne úplně stejně jako u ASP.NET) a především disponuje mnohem robustnějším způsobem zabezpečení oproti klasickým webovým službám, jež využívají maximálně SSL zabezpečení používaného protokolu. WCF disponuje zabezpečením přenosu, kontrolou přístupu a logováním důležitých událostí (auditingem).
Kromě SSL zabezpečení přenosu dat, poskytuje WCF i tzv. "Messaging Security Model" [5], jež implementuje zabezpečení na úrovni SOAP zpráv. WCF dále standardně podporuje následující způsoby ověřování
Další výhodnou vlastností WCF je spolehlivost doručování zpráv. WCF podporuje tzv. „Reliable Messaging“, které doplňuje SOAP protokol. Web Services Reliable Messaging garantuje dodání zprávy, zamezuje duplicitnímu dodání a zaručuje dodržení pořadí zpráv.
WCF také vykazuje vyšší rychlost zpracování zpráv, jak je patrné z obrázků v příloze 2.
Součástí .NET framework 3.0 je kromě WCF i Windows Workflow Foundation (WWF). Stejně jako Windows Communication Foundation je i Windows Workflow Foundation rámec určený k vývoji webových služeb. Na rozdíl od WCF, které je primárně zaměřeno na komunikaci aplikací, je WWF určeno k řízení toku dat v rámci aplikace. WWF dovoluje od sebe oddělit logickou vrstvu aplikace od komponent aplikace. Tím se vlastně aplikace dostává ještě dál, než při klasickém pojetí webové služby, která reaguje na požadavky a dává odpovědi v rámci ucelené aplikace.
Pro definici workflow používá Microsoft vlastní značkovací jazyk XAML (Extensible Application Markup Language), ačkoliv lze použít jakýkoliv z jazyků rodiny .NET [6]. Stejně jako služby WCF lze WWF hostovat v prostředích Windows (služby, webové aplikace, atd.) a využívat z jiných platforem či z jiných programovacích jazyků.
V praxi to pak celé funguje tak, že hostující aplikace WWF vrací odpovědi s příslušným stavem toku dat na základě vzniklých událostí (požadavků). Celý koncept pojetí řízení workflow je stejný jako u klasické aplikace s rozdílem, že struktura celé aplikace je hlubší, s využitím většího množství dílčích na sobě nezávislých a specializovanějších vrstev.
Samozřejmostí je implementace WWF do vývojového nástroje Visual Studio, což stejně jako implementace Web Services nebo WCF přináší usnadnění vývoje těchto aplikací. Na obrázku v příloze 3 je znázorněno vytváření WWF aplikace pomocí Microsoft Visual Studio 2008.
Oblast webových služeb a jejich použití v současnosti je příliš rozsáhlá a její zpracování by vystačilo na několik knih. V této práci jsem se zaměřil především na vysvětlení původních myšlenek technologie webových služeb a komunikace aplikací s jejich využitím a dále jsem se věnoval způsobu řešení této problematiky společností Microsoft.
Microsoft uvádí na trhu objemná řešení podpory vývoje v rámci své třetí verze frameworku .NET (a současného rozšíření ve verzi 3.5), masivně jej podporuje ve vývojovém nástroji Visual Studio a snaží se o co největší jeho rozšíření. Ačkoliv řešení Microsoft přináší nesporné výhody pro integraci aplikací, není řešením jediným a na trhu existuje mnoho dalších efektivních nástrojů. Podstata však zůstává stejná a i do budoucna lze předpokládat ještě větší snahu o štěpení funkcionality aplikací na dílčí specifické části, které budou poskytovány formou služeb naprosto nezávislé na implementačním prostředí jejich odběrateli. Tím se však pouze potvrzují nesporné výhody servisně orientované architektury informačních systémů.
[1] World Wide Web Consortium, http://www.w3c.org
[2] Vangle Beal, Understanding Web Services 7.10.2005, http://webopedia.internet.com/DidYouKnow/Computer_Science/2005/web_services.asp
[3] Jiří Kosek, Inteligentní podpora navigace na WWW s využitím XML http://www.kosek.cz/diplomka/html/websluzby.html
[4] Payam Shodjai, Microsoft Corporation, Web Services and the Microsoft Platform, červen 2006, http://msdn.microsoft.com/en-us/library/aa480728.aspx#wsmsplat_topic3
[5] Microsoft Corporation, Securing Messages Using Message Security, 2007, http://msdn.microsoft.com/en-us/library/ms789036.aspx
[6] Wikipedia The Free Encyclopedia, Windows Workflow Foundation, http://en.wikipedia.org/wiki/Windows_Workflow_Foundation