Web Services Martin Kuba makub(5)Jcs.muni.cz Superpočítačové Centrum Brno, Masarykova Univerzita 15.10.2006 Web Services, DATAKON 2006 1 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 VVSDL < to 111 plcxTy pc nam e=1 'Cl o vck' ;> ■ ■ j ^operation nanie^'iiajdiCloveka1' > < hi p li t 111 e ssa g e='' r o d n e Ci sloMs g17 > < najdiCloveka Resp onso < j in cno> Josef Novak 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%A 1ka&kytka=zvonek - 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ů 15.10. POST /prog HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 16 a=1 &b=Pepa+Novak 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, XMI a další • 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 anyType all' .'cauipléjí'. "t ýp.^š' ■'' II__I I I I duration dateTime time date gYearMonth g Year gMonthDay gDay gMonth boolean base64Binary hexBinary float string double anyURI QName NOTATION decimal no rmali z e dS t r ing integer token language Nai ne NMTOKEN nonPositiveInteger long no nlle gat ive Integer NCName NMTOKENS negative Integer int unsignedLong positive Integer ID IDREF ENTITY short unsignedlnt byte unsignedShort IDREF5 ENTITIES unsignedByte 15.10.2006 ur types built-in primitive types I j built-xii derived -types I I complex types -■ derived by restriction ------ derived by list ----■■ derived by extension .or. restriction 21 XML Schéma (2) 15.10.2006 Web Services, DATAKON 2006 23 SOAP - Simple Object Access Protocol • není simple © • umožňuje vzdáleně volat funkce • HTTP protokol přenese XML zprávu • zpráva popisuje volanou funkci a její parametry • jako odpověď přenese HTTP zpět opět XML zprávu reprezentující výsledná data • teoreticky nemusí být HTTP (ale SMTP, FTP, JMS, MQSeries, ... ), může být jen jednosměrný přenos 15.10.2006 Web Services, DATAKON 2006 24 SOAP (2) • příklad - mějme funkci (operaci) boolean jePrvocislo(long cislo) • typy boolean a long jsou z XML Schema • operace musí být světově jedinečně pojmenovaná, proto je v namespace, třeba urn:mojeURI 15.10.2006 Web Services, DATAKON 2006 25 SOAP request POST/HTTP/1.1 Content-Type: text/xml; charset=utf-8 Content-Length: 411 Connection: close SOAPAction: "" 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ů 15.10.2006 Web Services, DATAKON 2006 33 WSDL - operace Spocita, zda cislo je prvocislo • jméno portType je v Javě použito pro název interface • jméno operation je použito pro název funkce (v C) či metody (v Javě) • input, output a fault odkazují na zprávy definující vstup, výstup, popř. výjimky • všechny tři jsou nepovinné • v tagu documentation je popis lidskou řečí, lze použít jako komentář ve vygenerovaném stubu 15.10.2006 Web Services, DATAKON 2006 34 Použití WSDL • typový systém SOAP způsobuje problémy - nepoužívat • datové typy v různých jazycích jsou nekompatibilní, kdežto XML zprávy jsou vždy stejné • typový systém XML Schéma je společná půda pro všechny programovací jazyky • je dobré používat contract-first přístup -vždy začínat od WSDL 15.10.2006 Web Services, DATAKON 2006 35 Styly WSDL • historicky 4 styly WSDL - RPC/encoded - RPC/literal - document/literal - document/literal wrapped • dnes se prosazuje doc/lit wrapped • WS-I Basic Profile zakazuje RPC/encoded • MS .NET podporuje pouze doc/lit wrapped 15.10.2006 Web Services, DATAKON 2006 36 RPC/encoded • určen pro volání operací, vznikl před dokončením XML Schéma a WSDL • typová informace v SOAP zprávách • zprávu nelze snadno validovat vůči XML Schéma • zdroj nekompatibilit • umožňuje cyklické odkazy mezi přenášenými objekty a polymorfismus (j:Jablko místo j:Ovoce) WSDL: SOAP: 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: 1TAKON 2006 SOAP: 5 39 document/literal wrapped document/literal s názvem operace WSDL: SOAP: 5 15.10.2006 Web Services, DATAKON 2006 Změny WSDL • změna WSDL je změnou rozhraní služby • pokud je zpětně kompatibilní (přidání operací), lze ponechat namespace • při změně stávajících operací je doporučováno změnit namespace • pak je možno provozovat i více verzí stejné služby na stejném URL, tj. obsluhovat staré i nové klienty 15.10.2006 Web Services, DATAKON 2006 41 Pomněnka pro WSDL • používejte jen wrapped document/literal! • začínejte vždy od WSDL, nikdy od funkce/metody v nějakém programovacím jazyce ! (Java2WSDL je špatnost) • proč ? protože - datové typy nejsou přenositelné mezi různými programovacími jazyky -XML je přenositelné mezi různými prog. jazyky 15.10.2006 Web Services, DATAKON 2006 42 WS-I • specifikace SOAP 1 .x a WSDL 1.1 jsou místy vágní, potíže s interoperabilitou • vznikla organizace WS-I Web Services Interoperability Organization www.ws-i.org • BasicProfile 1.0 (2004) a 1.1 (2006) vyjasňuje sporná místa a zakazuje některé rysy • např. zakazuje SOAP encoding, DTD nebo Processing Instructions v XML, vyžaduje WSDL 1.1 a SOAP 1.1 • Basic Security Profile je ve vývoji 15.10.2006 Web Services, DATAKON 2006 43 Nástroj gSOAP • autor Robert van Engelen, Florida State University, Genivia Inc. • nejrychlejší, nejoblíbenější pro akademické použití, zdarma • optimalizováni na výkon - např. zásobník syntaktických analyzátorů pro konkrétní zprávy, minimalizace kopírování v paměti, atd. • generátor zdrojových kódů pro C/C++ • program wsdl2h z WSDL popisu služby vygeneruje speciální .h soubor • program soapcpp2 z .h vygeneruje stub v C nebo C++ • lze z .h vygenerovat WSDL popis služby 15.10.2006 Web Services, DATAKON 2006 44 Nástroj Apache Axis • projekt z rodiny Apache, zdarma, Java • součásti - knihovny pro komunikaci - nástroj WSDL2Java - nástroj Java2WSDL - servletová aplikace pro umístění serverové části služby • umožňuje sestavit SOAP volání dynamicky, ale je 9-12x (IBM 1.4) resp. 13-15x (SUN 1.5) pomalejší než gSOAP • (243 resp. 163 versus 2060 msg/s na Pentium4 2.5GHz) • (310 resp. 230 versus 3600 msg/s na AMD FX-53) 15.10.2006 Web Services, DATAKON 2006 45 Vyhledávání služeb • umístění služby je popsáno ve WSDL • jak však nalezneme WSDL ? • můžeme ho od někoho dostat • můžeme ho vyhledat • UDDI - Universal Description, Discovery and Integration • WSIL - Web Service Inspection Language 15.10.2006 Web Services, DATAKON 2006 46 UDDI • iniciativa z roku 2000 publikovaná na uddi.org • centralizovaný seznam služeb (white pages, yellow pages) s vyhledáváním i podle oborů • verze 2 v roce 2001, verze 3 v roce 2002 • verze 3.0.2 jako OASIS standard v roce 2005 • veřejné UDDI rejstříky (IBM, Microsoft, SAP) vypnuty v lednu 2006 • většina záznamů veřejného UDDI byla špatných • velmi obecné (tModels), jako seznam webových služeb nepříliš praktické • nejdřív výběr služby, pak obchodního partnera 15.10.2006 Web Services, DATAKON 2006 47 WSIL • jednoduchý XML formát pro seznam webových služeb dané instituce • IBM a Microsoft, listopad 2001 • soubor http://nekde.com/inspection.wsil • nejdřív výběr obchodního partnera, pak služby 15.10.2006 Web Services, DATAKON 2006 48 WS-* džungle • existuje přes 30 dalších a soupeřících dodatečných specifikací • WS-Addressing, WS-Eventing, WS-Transfer, WS-Policy, WS-ReliableMessaging, .... • mají smysl ve složitých enterprise systémech • pro jednoduché Internetové aplikace mnohdy stačí XML-over-HTTP nebo REST 15.10.2006 Web Services, DATAKON 2006 49 WS-* • WS-Addressing - přidává do SOAP hlavičky informace obdobné e-mailovým From:, To: • WS-Policy a WS-SecurityPolicy - rámce pro popisy vlastností, které nejde popsat ve WSDL • WS-Transfer - obdoba protokolu HTTP nad SOAP, umožňuje operace Get, Put, Create • WS-Eventing (MS), WS-Notification (IBM) - zasílání událostí, budou spojeny do nové specifikace WS-EventNotification 15.10.2006 Web Services, DATAKON 2006 50 Plain Old XML • amazon.com má dvě rozhraní ke službám - SOAP - 20% provozu -jednoduché XML dotazy - 80% provozu • XML+HTTP poskytují všechna prostředí • SOAP+WS-* potřebují spec. nástroje • webovým aplikacím stačí XML+HTTP • podnikové aplikace potřebují SOAP+WS-* 15.10.2006 Web Services, DATAKON 2006 51 REST • REpresentational State Transfer • styl architektury webových aplikací • veškerá informace v požadavku, bezestavovost • Roy Fielding, disertace, rok 2000 • webový zdroj je XML adresované přes URI • HTTP metody PUT,GET,POST,DELETE • zdroje jsou podstatná jména, metody slovesa • škáluje velmi dobře 15.10.2006 Web Services, DATAKON 2006 52 REST versus SOAP • SOAP služba pro zjištění teploty - operace getTemperature - parametr „city" • REST služba generující odpovědi pro různá URL obsahující města - http://pocasi.cz/teplota/Brno - http://pocasi.cz/teplota/Praha • WSDL 2.0 umožňuje popsat i REST služby s parametry v URL • zdroje orientované na činnost se lépe vyjadřují jako webové služby, zdroje poskytující data se lépe vyjadřují pomocí REST 15.10.2006 Web Services, DATAKON 2006 53 Grid, OGSA • Grid je infrastruktura pro sdílení zdrojů nepodléhajících centralizované správě • problémy s heterogenitou prostředí • OGSA - Open Grid Services Architecture - grid založený na webových službách - potřebuje správu životního cyklu a stavu - potřebuje notifikace • 1. verze - OGSI - webové služby jako objekty • 2. verze - WSRF - webové služby + WS-Resources • služby jsou bezestavové, zdroje mají stav a cyklus • 3. verze - sloučení s WS-Transfer/WS-Eventing 15.10.2006 Web Services, DATAKON 2006 54 Bezpečnost • SOAPaWSDL ji neřeší • na transportní vrstvě - HTTP nad SSL - rychlé, funkční, odzkoušené - nelze zpětně prokazovat, co kdo zaslal - pouze dva komunikující body • na úrovni zpráv - XML Encryption, XML Signatuře - lze podepisovat - lze budovat řetězce zpracovatelů zpráv • WS-Security - integrace s PKI, Kerberos, hesly, ... - zatím neusazená technologie - nelze popsat ve WSDL, je třeba WS-Policy, WS-SecurityPolicy 15.10.2006 Web Services, DATAKON 2006 55 Co jsou tedy webové služby ? • z pohledu webu a jeho aplikací -důležité jsou HTTP,XML, adresovatelnost URI - SOAP je nadbytečnou komplikací • z pohledu enterprise aplikací - důležité je SOAP pro jeho hlavičky a nezávislost na transportním protokolu - HTTP není nutné • shoda - strojová interakce pomocí XML 15.10.2006 Web Services, DATAKON 2006 56 ESB • Enterprise Service Bus • pojem zaveden v prosinci 2002 v předpovědi firmy Gartner na rok 2003 • pokud všechny enterprise aplikace jsou služby, lze je propojit sběrnicí pro zasílání zpráv • obchodní procesy jsou dány a měněny nastavením ESB, ne změnami služeb • větší flexibilita propojení služeb 15.10.2006 Web Services, DATAKON 2006 57 WSBPEL • Web Services Business Process Execution Language • nástupce BPEL4WS (2002) od IBM, MS, BEA • jazyk (založený na XML) pro zápis procesů volajících webové služby • orchestrace webových služeb • proměnné, programovací struktury (if-then-elseif-else, while, paralelismus), fault-handlers, event-handlers, compensation-handlers • pro vykonání potřebuje BPEL engine 15.10.2006 Web Services, DATAKON 2006 58 Semantic Web Services • „Sémantický web je rozšíření současného webu, ve kterém je informacím přiřazen dobře definovaný význam, což umožní lidem a počítačům lépe spolupracovat" • Tim Berners-Lee (vynálezce WWW) et al, Scientific American, 2001 • všechna data na webu budou sémanticky označkována a tudíž přístupna strojovému zpracování • postupy sem. webu lze aplikovat i u webových služeb 15.10.2006 Web Services, DATAKON 2006 59 Ontológie • pojem z oboru umělé inteligence • výslovný formální zápis konceptualizace • konceptualizace je systém pojmů modelující určitou část světa • jazyk W3C OWL umožňuje zapisovat ontologi jako soubory tříd, individuí a vlastností • sémantický web je spíš „logický web" • při omezení na logiku DL (Description Logic) I automatizovaně odvozovat 15.10.2006 Web Services, DATAKON 2006 Semantic Web Services (2) • současné (konkurující si) aktivity - WSMO - Web Services Modeling Ontology - WSDL-S - WSDL s možností přidávat sémantické odkazy - OWL-S (OWL for Services) • může značně vylepšit automatizované vyhledávání webových služeb • ve fázi výzkumu 15.10.2006 Web Services, DATAKON 2006 61 Konec • Dokumentace viz Google, hesla gSOAP, Apache Axis, WSDL, SOAP atd. • Děkuji za pozornost 15.10.2006 Web Services, DATAKON 2006 62