Web Services Martin Kuba makub@ics.muni.cz Superpočítačové Centrum Brno, Masarykova Univerzita 15.10.2006 Web Services, DATAKON 2006 Obsah • definice webových služeb • historický vývoj ze strany WWW • pozadí distribuovaných systémů - RPC, RMI, SOA • SOAP webové služby - XML, URI, XML Namespaces, XML Schéma - protokol SOAP - jazyk WSDL, styly WSDL - nástroje • vyhledávání služeb - UDDI, WSIL • džungle specifikací WS-*, REST • Grid, OGSA • bezpečnost u webových služeb • ESB, WSBPEL • sémantické webové služby 15.10.2006 Web Services, DATAKON 2006 2 Co je web service • W3C WS-ARCH: „Webová služba je softwarový systém zkonstruovaný k podpoře interakce mezi stroji přes síť. Má rozhraní popsané ve strojově zpracovatelném formátu (specificky WSDL). Ostatní systémy interagují s webovou službou způsobem předepsaným jejím popisem za pomoci SOAP zpráv, typicky dopravovaných použitím HTTP s XML serializací v součinnosti s ostatními webovými standardy." 15.10.2006 Web Services, DATAKON 2006 3 WS DL < in p Lit m e ssage =" r o d n e Ci slo Ms g17 > SOAP 651002/3810 web service najdi( loveka(rc) ''. přidej ("lov ekafOov ek) . sm li /.(I lo v eka (rc) SOAP < j ni eno > Josef Novák 40 Výhody a nevýhody Web Services • výhody vyplývají z XML • žádné problémy s češtinou nebo i18n, díky XML - vše v UTF-8 nebo UTF-16 • nezávislost na programovacím jazyku, objektové orientovanosti, platformě • nízká vstupní bariéra • vhodné pro loosely coupled systémy - klient a server o sobě téměř nic nepředpokládají • nevýhoda - parsování XML je drahé/pomalé 15.10.2006 Web Services, DATAKON 2006 5 Anatomie URL • web je tvořen dokumenty adresovanými URL (Uniform Resource Locator) • protocol://user@host:port/path ?query#fragment • query má mít tvar (podle HTML4) - kytka =pampeli% C5%A1 ka &kytka -z vonek - nebo oddělený středníky či libovolný • kódování českých znaků nelze určit, tj. nelze české znaky spolehlivě předávat • informace pro aplikaci na straně serveru lze mít v path i query • délka URL je omezena na cca 4 kB 15.10.2006 Web Services, DATAKON 2006 6 Historický vývoj ze strany WWW 1. krok - HTTP metoda GET s URL parametry - omezení na 4kb GET /prog?a=1 &b=Pepa+Novak HTTP/1.0 2. krok - metoda POST s URL parametry - omezení na pouze páry řetězců - stále problémy s kódováním znaků POST /prog HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 16 a=1&b=Pepa+Novak 15.10.2UU5 Web Services, UAIAKUN 2006 Historický vývoj SOAP • 3. krok-metoda POSTs XML v těle • strukturovaná data, typovaná data • stejný nápad mělo více lidí a firem, vznikly XML-RPC, WDDX, XMIadalší • od r. 1998 Microsoft a IBM tvořili SOAP (Simple Object Access Protocol) • SOAP byl myšlen jako RPC pomocí XML a HTTP • r. 2000 přijato W3C SOAP 1.1 jako Note • r. 2003 vydalo W3C SOAP 1.2 jako Recommendation • r. 2004 WS-Interoperability www.ws-i.org vydalo BasicProfile 1.0 15.10.2006 Web Services, DATAKON 2006 8 Pozadí - RPC • distribuované systémy komunikují zasíláním zpráv • vhodná abstrakce - RPC - Remote Procedúre Calls • např. DCE RPC, SUN RPC, ... • synchronní volání požadavek-odpověď - volaná procedura, parametry předávané hodnotou - návratové hodnoty • IDL - Interface Definition Language • klient a server stubs - volané jako běžné funkce v daném prog. jazyce - zajišťují marshalling/serializaci, komunikaci, unmarshaling/deserializaci 15.10.2006 Web Services, DATAKON 2006 9 Komunikace v distribuovaných systémech • z hlediska synchronnosti - synchronní - volající strana zastaví a čeká, dokud nedostane odpověď - asynchronní - volající strana pokračuje v práci, na příchod odpovědi je upozorněna • z hlediska zajištění doručení zprávy - transientní (pomíjivá) - persistentní (vytrvalá) • webové služby obvykle používají transientní synchronní komunikaci, ale lze použít všechny kombinace 15.10.2006 Web Services, DATAKON 2006 10 Pozadí - RMI • distribuované objektově-orientované systémy potřebují předávat parametry odkazem • distribuovaný objekt má stav a metody -interface, a implementaci • Remote Method Invocation • např. CORBA, Java RMI, DCOM • binární protokoly, Object Request Broker • Java RMI umí předat objekt - stav i implementaci metod 15.10.2006 Web Services, DATAKON 2006 11 Pozadí - SO A • RMI funguje jen v systémech pod centrální správou, neškáluje na Internet-size - synchronní komunikace neškáluje - tight coupling, verzování a evoluce jsou obtížné - distribuovanost nelze schovat (partial failure) • SOA - Service Oriented Architecture - služby mají definovaný interface - interface je popsán zprávami, ne operacemi na datových typech - služby lze nalézt (např. v adresáři) 15.10.2006 Web Services, DATAKON 2006 12 SOA (2) • rozdíl mezi 00 a SOA - přehrávač CD poskytuje službu přehrání CD - různá kvalita služby ve walkmanovi nebo HiFi vezi -v objektově-orientovaném přístupu by každé CD bylo dodáno s vlastním přehrávačem, ze kterého by nešlo vyjmout • SOA patrně lépe odpovídá způsobu, jímž jsou organizovány lidské aktivity 15.10.2006 Web Services, DATAKON 2006 13 Co jsou SOAP Web Services • technologie pro vzdálené volání procedur pomocí výměny XML zpráv • tri časti - komunikační protokol SOAP (Simple Object Access Protocol) - popis služby ve WSDL (Web Service Description Language) -vyhledání služby (UDDI.WSIL) 15.10.2006 Web Services, DATAKON 2006 14 Vývoj SOAP • SOAP - komunikační protokol webových služeb • začal jako XML-based RMI - Simple Object Access Protocol • definoval vlastní typový systém - zdroj problémů s kompatibilitou • až později se začal používat podle zásad SOA a s typovým systémem XML Schema • tj. lze ho použít dobře i špatně 15.10.2006 Web Services, DATAKON 2006 15 URI • URI (Universal Resource Identifier) - URL (Universal Resource Locator) - URN (Universal Resource Name) • URL určuje zdroj jeho umístěním, např. http://www.nekde.cz/cesta/soubor.html • URN určuje zdroj jeho jménem, např. urn:isbn:628361298, ed2k:0b366c8e95b43 • URI jsou celosvětově jedinečná - nekolidují • !! URL použitá jako URI nemusí odkazovat na existující zdroj !!! • IRI (Internationalized Resource Identifier) smí obsahovat libovolné UNICODE znaky, URI jen ASCII znaky, je definován převod IRI na URI (RFC3987) 15.10.2006 Web Services, DATAKON 2006 16 Rychlokurz XML • XML je značkovací jazyk se stromovou strukturou, právě jeden kořen, tágy, atributy, texty nebezpečné znaky: < > & " ' & " ť ]]> 15.10.2006 Web Services, DATAKON 2006 17 XML Namespaces • zabraňují kolizím stejných jmen pro různé věci • týká se jmen tagů i atributů • qualified names - prefix:localpart • prefix je mapován na URI • významné je URI, ne prefix - dva prefixy mapované na stejné URI definují stejný jmenný prostor • mapování provedeno atributem xmlns:prefix="" • default namespace atributem xmlns="" 15.10.2006 Web Services, DATAKON 2006 18 XML Namespaces (2) Tohle jsou různé tágy: obraz styk dějství pohřeb úřední papír Tohle jsou stejné tágy: obraz zase obraz XML Schema • norma pro definici datových struktur a datových typů vXML • typy: - simple types • atomic types (string, byte, integer, long, double, boolean, base64Binary, date, duration, ...) • list types (pole) • union types (variantní typy) • derived types (vzniklé omezením, např. číselný interval) - complex types (složené typy) • parsery XML umí kontrolovat vůči konkrétnímu Schema při načítání dokumentu 15.10.2006 Web Services, DATAKON 2006 20 Built-in Datatype Hierarchy ! -EST— anyType duration dateTime time date gYearMonth gYear gMonthDay gDay gMonth I_„ I „I irJ I__I__I boolean base64Binary hexBinary float string double anyURI QName NOTATION decimal no rmali s e dS t r ing integer token nonPositive Integer long nonNegativeInteger language IJai ne NMTOKEN i NCName NMTOKENS ID IDREF ENTITY IDREFS ENTITIES short unsignedint byte unsignedShort unsignedByte 15.10.2006 □ □ ur types built-in primitive types built-in derived types complex type's derived by restriction derived by list --—.i---: derived by extension or restriction 21 XML Schéma (2) 1987 15.10.2006 Web Services, DATAKON 2006 26 SOAP response HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 433 Connection: close true 15.10.2006 Web Services, DATAKON 2006 27 SOAP (3) • název hlavního tágu ve volání = název operace • název hlavního tágu v odpovědi = název operace + Response • názvy vnořených tagů = názvy vstupních popř. výstupních parametrů operace • existují tzv. Faults, obdoba výjimek v Javě a C++ 15.10.2006 Web Services, DATAKON 2006 28 SOAP fault SOAP-ENV:Client Neplatny vstup cislo musi byt >= 2 -3 WSDL - Web Service Description Language • popisuje rozhraní služby • jména operací, jména a typy parametrů a návratových hodnot • kde a jak službu volat - HTTP/HTTPS, port, stroj, URL • WSDL je jako *.h v Céčku, interface v Javě, nebo IDL • nepopisuje sémantiku, pouze syntaxi • zcela stačí pro volání služby, automatizované nástroje z něj umí vygenerovat stub - zástupný kód pro volání ve zvoleném prog. jazyku • WSDL 1.1 je W3C Note od roku 2001 • WSDL 2.0 je W3C Candidate Recommendation od března 2006 15.10.2006 Web Services, DATAKON 2006 30 struktura WSDL popisu ... definice datových typů .... ... definice komunikačních zpráv pomocí typů ... ... definice operací pomocí komunikačních zpráv ... ... že se volá přes HTTP ... ... na jakém URL (stroji, portu) se volá ... WSDL - ukázka typů Spocita, zda cislo je prvocislo 5 15.10.2006 Web Services, DATAKON 2006 37 RPC/literal určen pro volání operací ušetří typovou informaci ve zprávách stále nelze snadno validovat zprávy neumožňuje cyklické odkazy a polymorfismus WSDL: