Web Services Distribuované aplikace snadno a rychle O Web Services se v souvislosti s internetem mluví stále častěji. Jde skutečně o tak revoluční technologii, která změní internet, nebo jen o doplňkovou službu, která usnadní programátorům práci při vytváření nových aplikací? Jak již název článku sám napovídá, Web Services jsou novou internetovou technologií, která slouží pro tvorbu tzv. distribuovaných aplikací. Jde o aplikace, které pro svou činnost využívají výpočetního výkonu nebo dat z jiných aplikací, jež nemusí nutně pracovat na stejném serveru. Asi nejznámějším příkladem distribuované aplikace na internetu byl projekt hledání mimozemských civilizací, který již několik let probíhá na University of California v Berkeley pod názvem SETI@Home. Jde o šetřič obrazovky, který využívá volný výpočetní výkon vašeho procesoru k analýze rádiových signálů přicházejících z kosmu. Ze serveru na kalifornské univerzitě si vždy stáhne hrubá data, ta ve volném čase zanalyzuje a výsledky posílá zpět na centrální server do Berkeley. Trocha historie Webové služby nejsou prvním pokusem o usnadnění tvorby distribuovaných aplikací. Pro podporu dynamické výměny dat mezi aplikacemi bylo v minulosti vytvořeno hned několik technologií - CORBA určená především pro Unix, DCOM od firmy Microsoft pro platformu Windows nebo technologie Java RMI od firmy Sun Microsystems. Každá z technologií se ujala a vytvořila si okruh svých uživatelů. Tvorba distribuovaných aplikací však byla stále poměrně složitá. Šlo o řešení jednotlivých dodavatelů, nikoliv obecný standard akceptovaný všemi. K přelomovému okamžiku došlo v roce 1998, kdy konsorcium W3C schválilo XML 1.0, první verzi nového standardu pro výměnu dat prostřednictvím internetu. V prosinci 1999 se sešel Microsoft s IBM a prezentoval první verzi protokolu SOAP, základního stavebního kamenu webových služeb, vytvořeného na jádře standardu XML. Společnosti IBM se myšlenka univerzálního protokolu SOAP líbila a společně s Microsoftem pracovala na vytvoření nové verze 1.1. Tyto společnosti však nebyly jedinými, kdo na podobné technologii pracoval. Ve stejnou dobu vznikal protokol WDDX od firmy Allaire, HP pracoval na svém vlastním řešení pod názvem E-Speak. Na jaře 2000 firmy Microsoft a IBM oficiálně představily technologii Web Services a doporučily ji konsorciu W3C ke standardizaci. Technologie začala nabírat na síle a obecné podpoře v oboru informačních technologií. Jak to v praxi funguje Uplatnění webových služeb je opravdu široké. Výborně se hodí například pro tvorbu webových serverů. Ukažme si to na příkladu návštěvy prodejního serveru: Martina si chce prostřednictvím internetu koupit knihu Alchymista od Paula Coelha. Napíše adresu knižního serveru, prohledá katalog a zobrazí si detailní informace o knize včetně ceny, typu obalu a vydavatele. Knihu vloží do "nákupního košíku". Během tohoto procesu je v pozadí volána webová služba distributora knih, která zjistí, zda je daný titul na skladě a jak dlouho bude trvat jeho dodání poštou. Martina klepne na odkaz "Zaplatit" a přesouvá se do modulu "Pokladna". Vyplňuje svou poštovní adresu, způsob dodání a číslo své kreditní karty. Knižní server volá webovou službu finanční instituce, která ověřuje platnost kreditní karty a možnost realizace dané transakce. Další dotaz směřuje na webovou službu zásilkové firmy. Prodejní server zasílá potřebné údaje (hmotnost a velikost knihy, požadovanou dobu doručení) a zpět získává přesnou cenu poštovného. Martině se v prohlížeči objevuje potvrzující stránka s názvem nakupovaného zboží, jeho ceny a poštovného. Stiskne tlačítko "Potvrdit" a transakce je úspěšně zrealizována. Aniž o tom uživatel knižního serveru věděl, došlo během nákupního procesu k volání tří různých webových služeb. Martina se přitom dozvěděla, že je kniha na skladě, k zaplacení může použít svou kreditní kartu a poštovné činí 46,50 Kč. To vše, aniž provozovatel knižního serveru musel tyto funkce náročně implementovat do svého vlastního systému. Architektura webových služeb Podívejme se nyní, jak celý proces funguje na úrovni jednotlivých protokolů. Klientská aplikace (v našem případě knižní server) se přihlásí na server webové služby (například distributora knih). Server ověří, zda je klientská aplikace oprávněna k přístupu. Klient formuluje požadavek (ISBN knihy), zformátuje jej do podoby SOAP dotazu a prostřednictvím přenosového protokolu HTTP jej zasílá webové službě. Ta zpracuje přijatý dotaz, vygeneruje výsledek ("Kniha je na skladě") a ten zasílá zpět klientovi. To, jaké funkce webová služba umí a jaké parametry pro svou správnou činnost potřebuje, již klient ví na základě souboru WSDL, jakési standardizované dokumentace webové služby. Protokol SOAP není nikterak složitý. Jde o obdobu formátovacího jazyka HTML. Avšak zatímco HTML je určen pro prezentaci dat v okně prohlížeče, SOAP obsahuje především dotazy a data. Oba protokoly však využívají přenosový protokol HTTP, takže webový server a webová služba mohou společně běžet na jednom serveru. A nejen to. Jak ukazuje schéma č. 2, obě technologie mohou pracovat se stejnou datovou (první vrstva) a programovou základnou (druhá vrstva), mění se pouze způsob prezentace dat navenek. Závěr Způsobí webové služby novou internetovou revoluci? Pravděpodobně ne. Avšak díky široké podpoře a standardizaci (HTTP, SOAP, WSDL, UDDI) mohou výrazným způsobem usnadnit práci programátorům při tvorbě nových aplikací. Nové webové servery budou vznikat rychleji, za nižších nákladů, než tomu bylo doposud, a budou obsahovat aktuálnější informace. Martin Dvořáček, autor@chip.cz Související linky na Internetu http://www.w3.org/2002/ws/ Web Services na W3C http://www.w3.org/TR/wsdl WSDL http://www.uddi.org Přehled webových služeb dostupných na internetu http://dotnet.iol.cz Webové služby na IOL http://setiathome.berkeley.edu SETI@Home Slovníček pojmů CORBA | COMMON OBJECT REQUEST BROKER ARCHITECTURE Architektura pro tvorbu distribuovaných aplikací pracujících pod operačním systémem Unix. DCOM | DISTRIBUTED COMPONENT OBJECT MODEL Architektura pro tvorbu distribuovaných aplikací na platformě Microsoft Windows. RMI | REMOTE METHOD INVOCATION Architektura pro tvorbu distribuovaných aplikací v Javě. Díky vlastnostem Javy je tato technologie nezávislá na typu operačního systému. SOAP | SIMPLE OBJECT ACCESS PROTOCOL Protokol, prostřednictvím kterého spolu komunikuje aplikace (klient) a server (správce webové služby). UDDI | UNIVERSAL DESCRIPTION, DISCOVERY, AND INTEGRATION Protokol pro vyhledávání webových služeb. Pracuje na podobném principu jako vyhledávací servery webových stránek. WSDL | WEB SERVICES DESCRIPTION LANGUAGE Jazyk používaný pro popis funkcí webové služby. WSDL soubory jsou napsány ve formátu XML. W3C | WORLD WIDE WEB CONSORTIUM Konsorcium zabývající se standardizací technologií (protokolů) používaných na internetu. XML | EXTENSIBLE MARKUP LANGUAGE Obecný standard pro výměnu dat.