Web Services Martin Kuba, ÚVT MU

Podobné dokumenty
Úvod do Web Services

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

InternetovéTechnologie

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Webové služby. Martin Kuba Superpočítačové centrum Brno Masarykova univerzita

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Common Object Request Broker Architecture

Webové služby. Martin Sochor

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Softwarové komponenty a Internet

Internet Information Services (IIS) 6.0

java remote method invocation Kateřina Fricková, Matouš Jandek

Web Services. Martin Kuba Superpočítačové Centrum Brno, Masarykova Univerzita Web Services, DATAKON

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Úvod do aplikací internetu a přehled možností při tvorbě webu

RMI - Distribuované objekty v Javě

Server-side technologie pro webové aplikace

TÉMATICKÝ OKRUH Softwarové inženýrství

Komponentový návrh SW

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

Úvod do tvorby internetových aplikací

Co je to Grid. Martin Kuba Superpočítačové Centrum Brno Seminář CESNET, Třešť

Fakulta elektrotechnická

RESTful API TAMZ 1. Cvičení 11

Bakalářská práce, FEL ČVUT Praha. Michal Turek. červenec 2007

Web Services na SOAP

Požadavky pro výběrová řízení TerraBus ESB/G2x

Úvod do informatiky 5)

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Architektura orientovaná na služby Návrh orientovaný na služby. Ing. Petr Weiss. VUT v Brně,, FIT, UIFS

Nové jazykové brány do Caché. Daniel Kutáč

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Úvod do informačních služeb Internetu

5/8 INSTANT MESSAGING A JEHO BEZPEČNOST V PODNIKOVÝCH SÍTÍCH

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Instalace a konfigurace web serveru. WA1 Martin Klíma

Webové mapové služby. Lukáš Birka

HTTP protokol. Zpracoval : Petr Novotný

Identifikátor materiálu: ICT-3-10

Komponentní technologie

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL

language="javascript">... </script>.

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

RESTful web service v Javě

SOAP & REST služby. Rozdíly, architektury, použití

Malý průvodce Internetem

TÉMATICKÝ OKRUH Softwarové inženýrství

SPRÁVA ZÁKLADNÍCH REGISTRŮ PODMÍNKY PRO PŘIPOJENÍ AGENDOVÝCH INFORMAČNÍCH SYSTÉMŮ DO ISZR. verze 2.00

Metody integrace aplikací

Webové služby a XML. Miroslav Beneš

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Autor. Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

ilé aspekty distribuovaných objektových systémů

Vývoj Internetových Aplikací

Programovací jazyky Přehled a vývoj

Celosvětová síť Internet. IKT pro PD1

Webové stránky. 1. Publikování na internetu. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Studentova Berlička III

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

1. Dědičnost a polymorfismus

Univerzita Pardubice Fakulta elektrotechniky a informatiky. Transport konfiguračních dat pomocí webových služeb. Lubomír Mokrý

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Funkční specifikace ABOKWS. Aplikační rozhraní elektronického bankovnictví ABO-K. Verze 0.5

CZ.1.07/1.5.00/

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

Internet 2 css, skriptování, dynamické prvky

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Datum vytvoření. Vytvořeno 18. října Očekávaný výstup. Žák chápe pojmy URL, IP, umí vyjmenovat běžné protokoly a ví, k čemu slouží

Přístup do IS z mobilních zařízení

Identifikátor materiálu: ICT-3-03

WCF. IW5 - Programování v.net a C# WCF

Webové služby v Java EE (JAX-WS)

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 1 VY 32 INOVACE

Compatibility List. GORDIC spol. s r. o. Verze

Remote Method Invocation RMI

Inovace výuky prostřednictvím šablon pro SŠ

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Tvorba webových služeb

Principy fungování WWW serverů a browserů. Internetové publikování

API pro volání služby kurzovního lístku KB

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

GEOVAP, spol. s r. o. Uživatelská příručka MarushkaDesktop DemoClient

Základní zadání IS o ISVS. Sluţba poskytování dat IS o ISVS

INFORMAČNÍ SYSTÉMY NA WEBU

WWW technologie. HTTP protokol

Transkript:

Web Services Martin Kuba, ÚVT MU Zhruba od roku 2000 sílí povyk okolo Web Services. Firma Microsoft na nich založila svoji novou architekturu.net, firma IBM je označuje za revoluci v e-business, firma SUN hovoří o nové generaci distribuovaných systémů, vznikají o nich specializované časopisy jako XML & WebServices a regály knihkupectví se plní tlustými knihami s názvy typu Professional XML Web Services a XML and Web Services Unleashed. Vtomtokomerčním halasu by mohlo zaniknout, že se skutečně jedná o velmi užitečnou technologii, která by mohla změnit způsob, jakým je Internet používán. Podívejme se, o co vlastně jde.anglickýpojem Web Services znamená česky webové služby, a je daný historicky, ale dnes je vlastně nesprávný, protože nejde jen oslužbyposkytované přes web. Navíc hrozí záměna se stejným souslovím, jímž firmy vytvářející WWW stránky nebo poskytující prostor k umístění WWW stránek popisují svoji činnost. Nějaký překlad však potřebujeme, používejme tedy pojem webové služby jako terminus technicus. Webové služby jsou novou reinkarnací technologií pro vzdálené volání funkcí v distribuovaných systémech, jako jsou RPC, CORBA nebo RMI 1.Narozdílodjejíchpředchůdkyň je technologie webových služeb méně vyzrálá(neřeší zatím např. autentizaci a bezpečnost), ale je jednoduchá, otevřená (čti: založená na standardech W3C 2, nikoliv na soukromém standardu jedné firmy či sdružení firem), zcela nezávislá na platformě (operačním systému, programovacím jazyku, typu procesoru), a prochází bouřlivým rozvojem. Hlavní nadějí vkládanou do webových služeb je, že se WWW změní ze současného souboru HTML stránek srozumitelných pouze lidem 3 na soubor XML stránek (statických i dynamických) čitelných 1 RPC Remote Procedure Call, CORBA Common Object Request Broker Architecture, RMI Remote Method Invocation 2 W3C World Wide Web Consortium organizace definující standardy Internetu 3 Obsahu HTML stránky rozumí pouze živý člověk. Program vidí jen soubor typograficky upravených textů, najde programy a tedy, že programy na zcela různých platformách (JavaScript, Java, C, MS.NET, mobilní telefony) budou moci spolu snadno komunikovat. Technologii webových služeb tvoří tři části: protokol pro vzdálené volání procedur, zvaný SOAP, přenášející data zapsaná jako XML jazyk pro popis poskytovaných služeb, zvaný WSDL mechanismus pro nalezení služeb, kdespolu soupeří standardy zvané UDDI a WSIL Podívejme se na ně pěkně popořádku. 1 SOAP SOAP (Simple Object Access Protocol česky jednoduchý protokol pro přístup k objektům) lze asi nejlépe vysvětlit na postupu, jak historicky vznikl. Už od počátku WWW (okolo roku 1993) bylo možné zavolat program na webserveru a předat mu textové parametry jednoduše tak, že se na konec URL označujícího program přidal znak? azaněj se uvedly názvy parametrů ajejich hodnoty oddělené znaky &, například takto: http://nekde.cz/cgi/p.exe?param1=hodnota1&p2=h2 Tento způsob má jedno omezení, a tím je maximální délka URL, činící v praxi 4kB. Proto byla vymyšlena tzv. metoda POST 4 protokolu HTTP 5, která parametry předává v těle HTTP požadavku; uved me si, jak takové volání vypadá: POST /cgi/p.exe HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 21 param1=hodnota1&p2=h2 Metodou POST je možné předávat jakákoliv data jakékoliv délky, standardizován byl ale jen typ zvaný application/x-www-form-urlencoded, jehož tvar je shodný s tvarem parametrů předávaných přímo v URL. Postupem času (okolu roku 1997) začaly prohlížeče podporovat i typ multipart/form-data, např. co je napsáno kurzívou, ale nerozumí smyslu, nemůže např. najít ve stránce cenu popisovaného výrobku. 4 od anglického post poslat, předchozí metoda volání URL se jmenuje GET anglicky získat. 5 Hyper Text Transfer Protocol protokol pro přenos souborů, název je zavádějící, lze přenášet cokoliv, ne jen hypertext 1

který umožňuje k textovým parametrům přidat obsah souborů. Vždy bylo možné si metodou POST poslat jakákoliv binární data (například firma SUN doporučovala posílat si tak instance Java objektů mezi Java appletem a Java servletem), ale to předpokládalo mít kontrolu nad oběma konci HTTP spojení, a tento požadavek není v obecných aplikacích splněn. S příchodem jazyka XML, který umožňuje zapsat libovolně složitě strukturovaná data do textového souboru platformověnezávislýmzpůso- bem, bylo jen otázkou času, než někoho napadlo posílat si metodou POST data v XML. XML má tu výhodu, že se předávaná data nemusí omezovat na text, je možné předávat si složité objekty a kolekce objektů. Při použití XML Schema 6 lze navíc jednotným, rozšiřitelným a srozumitelným způsobem popsat strukturu a typy předávaných dat. Použitím XML Namespaces 7 lze snadno zamezit kolizím stejných jmen pro různé věci. Pak již stačilo přidat k předávaným parametrům i informaci jakou funkci je třeba zavolat, a protokol pro vzdálené volání funkcí byl na světě. 1.1 Vývoj standardu Nejdříve na takovém protokolu začala pracovat firma Microsoft v roce 1998, která ho nazvala SOAP, k ní se poté připojilo mnoho dalších firem včetně IBM. Jiné firmy vyvinuly podobné protokoly s názvy jako XML-RPC, WDDX a XMI. W3C konzorcium vzalo SOAP 1.1 na vědomí 8 vkvětnu 2000 a vzápětí ustavilo pracovní skupinu zvanou XML Protocol Working Group pro vývoj sjednocujícího protokolu pracovně nazvaného XMLP. Tato skupina vyprodukovala protokol nakonec nazvaný SOAP 1.2, který má od 19. 12. 2002 status kandidáta na doporučení. 9 6 XML Schema jazyk pro definice struktury a typovosti dat, viz článek XML snadno a rychle 7 XML Namespaces mechanismus pro rozlišení různých množin tagů v jednom dokumentu 8 SOAP 1.1 má status W3C Note (poznámka), což znamená pouhé zveřejnění a žádnou podporu ze strany W3C 9 Vývoj standardu W3C probíhá ve čtyřech fázích: první je W3C Working Draft (pracovní návrh), následuje W3C Candidate Recommendation (kandidát na doporučení) návrh určený k veřejné diskuzi, třetí fáze je W3C Pro- V současné době existuje několik desítek různých implementací SOAP na nejrůznějších platformách, od C/C++, přes Javu,.NET, Perl až po JavaScript v prohlížeči Mozilla. Jejich vzájemná kompatibilita je pravidelně testovanása- dou testů SOAPBuilders Interoperability Lab. Původní nápad přenášet SOAP zprávy protokolem HTTP byl později rozšířen na možnost přenosu jinými přenosovými protokoly, například SMTP (Simple Mail Transport Protocol), tedy elektronickou poštou, čímž slovo Web v názvu Web Services pozbylo trochu smysl, nicméně zůstalo zachováno. 1.2 Příklad volání Uved me si příklad, jak takové SOAP volání vlastně vypadá. Mějme například funkci boolean jeprvocislo(long cislo), kterámáčíselný parametr jménem cislo a vrací pravdivostní hodnotu podle toho, zda je parametr prvočíslo nebo ne. Vzhledem k tomu, že webová služba může být implementovaná v jakémkoliv programovacím jazyce, typy long a boolean jsou typy definované v XML Schema a ne nutně přítomné v daném programovacím jazyku. SOAP vyžaduje, aby jméno každé funkce bylo v určitém jmenném prostoru. U objektově orientovaných jazyků tento jmenný prostor odpovídá objektu a funkce jeho metodě, u implementace třeba v jazyku C tento jmenný prostor přímý smysl nemá, ale je nutné nějaký prostor definovat. Jmenný prostor je určen nějakým URI 10, zvolme třeba urn:mojeuri. Příklad SOAP zprávy volající takovou funkci je na obrázku č.1. Tato zpráva je přenesena na server, který funkci implementuje, obvykle metodou POST protokolu HTTP, nebo emailem či jiným způsobem. Postup, jímž je na serveru nalezena funkce, která má být zavolána, záleží na implementaci serveru, obvykle je funkce určena svým jménem a jmenným prostorem. Další možnosti jsou: URL na které přišel HTTP požadavek, obsah speciální HTTP hlavičky SOAPAction, uživatelem definovaný obsah tagu env:header, neboněco jiného. SOAP je posed Recommendation (navržené doporučení), a hotový standard se nazývá W3C Recommendation (doporučení). 10 Uniform Resource Identifier, URI jsou sjednocením URL a URN Uniform Resource Names 2

<env:envelope xmlns:env= http://schemas.xmlsoap.org/soap/envelope/ env:encodingstyle= http://schemas.xmlsoap.org/soap/encoding/ xmlns:xs= http://www.w3.org/1999/xmlschema xmlns:xsi= http://www.w3.org/1999/xmlschema-instance > <env:header/> <env:body> <m:jeprvocislo xmlns:m= urn:mojeuri > <cislo xsi:type= xs:long >1987</cislo> </m:jeprvocislo> </env:body> </env:envelope> Obrázek 1: Příklad SOAP zprávy pro volání funkce. <env:envelope xmlns:env= http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi= http://www.w3.org/1999/xmlschema-instance xmlns:xsd= http://www.w3.org/1999/xmlschema > <env:body> <ns1:jeprvocisloresponse xmlns:ns1= urn:mojeuri env:encodingstyle= http://schemas.xmlsoap.org/soap/encoding/ > <return xsi:type= xsd:boolean >true</return> <ns1:jeprvocisloresponse> <env:body> <env:envelope> Obrázek 2: Příklad SOAP zprávy vracející výsledek. v tomto benevolentní a nepředepisuje jeden povinný způsob. Všimněme si, že v XML představujícím toto SOAP volání jsou zavedeny čtyři prefixy jmenných prostorů: env použitý pro tagy samotného SOAP, xs pro XML Schema, použitý v označení typu xs:long, xsi pro instanci XML Schema, použitý pro odlišení atributu xsi:type určujícího typ parametru funkce a konečně námi definovaný m použitý pro označení naší funkce. Jak vyplývá z definice XML Namespaces, samotné řetězce použité jako prefixy nejsou důležité, a mohly být zvoleny libovolné jiné, důležité jsou jen URI, ke kterým se prefixy vážou. Například místo prefixu env mohl být použit prefix SOAP-ENV, nebo krteček, výsledekbytonezměnilo. 2 WSDL Možnost vzdáleně volat funkce pomocí SOAP je k ničemu, pokud nevíme, jaké funkce se dají zavolat, jaké mají parametry a jaké vrací hodnoty. Tento problém řeší jazyk WSDL (Web Services Description Language, česky jazyk popisu webových služeb), založený na XML a hojně využívající standardy XML Namespaces a XML Schema. Vznikl sloučením tří jazyků firem IBM, Microsoft a Ariba s názvy NASSL, SCL a SDL do jednoho jazyka nazvaného WSDL 1.1. W3C vzalo WSDL 1.1 na vědomí a ustavilo pracovní skupinu s názvem Web Services Description Working Group, která nyní pracuje na jeho novější verzi WSDL 1.2 (zatímjevefázipracovníhonávrhu). 2.1 Struktura WSDL dokumentů WSDL jazyk je velice obecný, aby zachoval platformovou nezávislost. Popišme si, jak takový popis webové služby ve WSDL vypadá. WSDL dokument obsahuje popis jedné služby (klíčové slovo service, viz obrázek č.3), což je největší jednotka. Jedna služba má jednu nebo více bran (port). Každá brána má vazbu (binding), což je způsob jak se daná brána volá (například SOAPpřes-HTTP), a nějakou přístupovou adresu (URL). Lze tedy teoreticky mít pro jednu službu více bran s různými vazbami, tj. volat jednu službu 3

<message name= jeprvocislorequest > <part name= cislo type= xsd:long /> </message> <porttype name= Cisla > <operation name= jeprvocislo parameterorder= cislo > <input message= m:jeprvocislorequest name= jeprvocislorequest /> <output message= m:jeprvocisloresponse name= jeprvocisloresponse /> </operation> </porttype> <binding name= cislasoapbinding type= m:cisla >... </binding> <service name= CislaService > <port binding= m:cislasoapbinding name= cisla > <wsdlsoap:address location= http://nekde.cz/cisla /> </port> </service> Obrázek 3: Část WSDL souboru definující funkci jeprvocislo různými způsoby, např. první SOAP-přes-HTTP, druhou SOAP-přes-HTTP-nad-SSL a třetí SOAPpřes-SMTP. Prakticky budou fungovat jen první dvě, protože WSDL 1.1 má definovánu syntaxi jen pro vazby založené na HTTP. Vazby odkazují na rozhraní (porttype), které je souhrnem operací (operation). Rozhraní vobjektově-orientovaných jazycích odpovídá objektu, jednotlivé operace odpovídají metodám objektu, nebo v jazyce C funkcím. Každá operace definuje obvykle dvě zprávy (message), jednu vstupní a jednu výstupní, ale může i míň. Každá zpráva obsahuje žádnou, jednu nebo více částí (part), které odpovídají parametrům a návratovým hodnotám. Z toho plyne, že volané funkce mohou mít více návratových hodnot než jen jednu! Typy parametrů a návratových hodnot jsou definovány pomocí XML Schema. Jako jednoduché typy jsou tedy k dispozici řetězce (string), čísla s pohyblivou (float) i pevnou (decimal) řádovou čárkou, pravdivostní hodnoty (boolean), binární data (base64binary), časový okamžik (datetime), časový interval (duration), URL (anyuri); dále jejich odvozeniny výčtové typy, číselné intervaly, záporná čísla (negativeinteger), celá čísla různého rozsahu (int, byte, short, long). Je možné definovat složené typy vzniklé jako souhrny nebo varianty z jiných typů, jednoduchých i složených, dokonce lze definovat jeden typ jako rozšíření druhého, lze tedy vyjádřit dědičnost objektů. 2.2 Nástroje pro práci s WSDL Dokument v jazyce WSDL příslušný k určité webové službě ji plně popisuje, pokud tedy máme WSDL popis, můžeme webovou službu začít používat. Dokonce existují automatizované nástroje, které z WSDL popisu vygenerují kód pro volání služby v nějakém konkrétním programovacím jazyce, a tento kód pak lze volat stejným způsobem jako by se jednalo o lokálně implementované funkce (takovému zástupnému kódu se říká proxy nebo stub). Dále ani není nutné WSDL dokumenty psát ručně, existují nástroje pro jejich generování přímo z kódu programovacího jazyka. Lze tedy s výhodou použít postup, kdy se nejdřív popíše jen rozhraní volatelných funkcí (vytvoří se jen interface v jazyce Java nebo deklarace funkcí v.h souboru v jazyce C), automatizovaným nástrojem se vygeneruje WSDL popis zatím neexistující webové služby, dalším automatizovaným nástrojem se z WSDL dokumentu vygeneruje kód pro volání i implementační serverovou část, a stačí pak dopsat vlastní funkcionalitu do vygenerovaného kódu. 3 UDDI a WSIL Zatímco SOAP a WSDL jsou zavedené a v praxi používané standardy, v oblasti nalézání webových služeb zatím není rozhodnut boj o to, jaký mechanismus se bude používat. 4

Historicky starší UDDI (Universal Description, Discovery and Integration, česky univerzální popis, objevování a spojování )nabízíveřejnou databázi (anglicky registry), do které poskytovatelé webových služeb mohou ukládat popisy služeb a uživatelé ji prohledávat. Dvě takové centrální databáze spravují firmy IBM a Microsoft. Praxe ale ukázala, že plné dvě třetiny záznamů v těchto databázích jsou neplatné. Druhý a hlavní problém je ten, že databáze nijak nezaručuje důvěryhodnost poskytovatelů služeb.představte si například, že si chcete založit bankovní účet a ovládat ho jako webovou službu. Vyberete si poskytovatele ve veřejné databázi, do které může kdokoliv zapisovat a svěřítemusvépeníze?rozhodně ne. Uděláte to opačně nejdřív si najdete poskytovatele služby, kterému věříte, a požádáte ho o popis rozhraní. Tímto mechanismem řeší nalézání WSIL (Web Services Inspection Language, česky jazyk přehlídky webových služeb), mimochodem také vyvinutý firmami IBM a Microsoft. WSIL popisuje služby poskytované nějakým poskytovatelem pomocí souboru jménem inspection.wsil umístěného vždy v hlavním adresáři webserveru poskytovatele. Tento popis je tedy na všeobecně známém místě, a prohledávací služby jako Google a Yahoo mohou nabízet vyhledávání v těchto souborech. Ani UDDI, ani WSIL nejsou standardy W3C konzorcia, ani neexistuje v rámci W3C pracovní skupina, která by se jim věnovala, lze tedy říci, že tyto technologie ještě dostatečně nedozrály. 4 Nástroje pro implementaci Nástrojů pro implementaci webových služeb je k dispozici hodně, komerčních i freewareových. Obvykle zahrnují generátor WSDL, generátor kódu pro klienta služby, generátor kódu pro serverovou implementaci služby, nějaký aplikační server ve kterém služba běží a komerční implementace i vývojové prostředí s GUI, kde si lze vše naklikat myší. Z free nástrojů je asi nejpoužívanější Apache Axis, implementace v jazyku Java, používající jako aplikační server libovolný Java servlet container 11. Zahrnuje nástroj Java2WSDL pro generování WSDL ze zdrojových kódů vjavě, i nástroj WSDL2Java pro generování klientských i serverových zdrojových kódů zwsdl. Asi nejrychlejší webové služby generuje freewareový gsoap, generátor implementací pro C/C++. Zatímco Axis dokáže zavolat libovolnou webovou službu pomocí dynamicky zkonstruovaného SOAP volání, gsoap vygeneruje natvrdo jednoúčelový kód pro volání konkrétní webové služby a obecnými věcmi se nezdržuje. Výměnou za menší flexibilitu je jeho extrémní rychlost. Obsahuje generátor WSDL z C/C++ kódu i generátor C/C++ kódu z WSDL. Mezi producenty komerčních nástrojů září pražskáfirmasystinetsimplementacemiprojavui C++, což dokazuje, že se česká firma dokáže udržet na špici světového vývoje. Dalšími velkými hráči jsou IBM (WebSphere), Microsoft (.NET) a Oracle (Oracle9iAS). 5 Budoucnost a perspektivy Webové služby mají velký potenciál. Už dnes umožňují, aby se informační systémy různých institucí snadno volaly navzájem, přestože jsou každý založen na úplně jiné platformě. Představte si na chvíli, že by státní úřady začaly poskytovat své služby jako webové služby. Když by někdo chtěl stavební povolení, zavolal by funkci vydejpovoleni() systému na stavebním úřadě, ten by automaticky zavolal informační systém katastrálního úřadu a zjistil kdo je vlastník, poté by se zeptal systému památkového úřadu, zda je to chráněná památka, systému hasičů byseze- ptal jestli nemá námitky, obratem by vydal povolení a zavolal službu České Pošty, aby povolení vytiskla na papír a doručila (ten papír je nutný, povolení se musí vystavit za okno :-). Krásná představa... Odvážil bych se říci, že webové služby jsou dnes v podobném stavu, jako byl World Wide Web dejme tomu v roce 1994 většina technologie je 11 Java servlet container v prostředí Javy obdoba webserveru spouštějícího programy, místo spouštění procesů ale volá metody Java objektů. Příkladem jsou Apache Tomcat nebo Jetty. 5

hotova, dá se to používat, ale ještě zbývádotáhnout do konce některé věci a hlavně jejichexistence musí vejít do obecného povědomí. 6 Odkazy http://www.w3.org/2002/ws/ W3C Web Services Activity http://www.w3.org/tr/soap/ definice SOAP http://www.w3.org/tr/wsdl definice WSDL http://www.w3.org/tr/xmlschema-2/ #built-in-datatypes typy definované XML Schema http://www.uddi.org/ definice UDDI http://www.ibm.com/developerworks/ library/ws-wsilspec.html definicewsil http://xml.apache.org/axis/ Apache Axis http://www.xmethods.com/ seznamveřejných služeb pro pokusy 6