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