Title: Johdatus web-palveluihin
1Johdatus web-palveluihin
- Marko Sormunen
- SerAPI-projekti, HIS-yksikkö
- Tietotekniikkakeskus
- Kuopion yliopisto
- Marko.Sormunen_at_uku.fi
2Osa 1... web-palvelut paperilla
3Web-palvelut... mitä ne ovat?
- A Web service is a software application
identified by a URI RFC 2396, whose interfaces
and bindings are capable of being defined,
described, and discovered as XML artifacts. A Web
service supports direct interactions with other
software agents using XML based messages
exchanged via Internet-based protocols. A
collection of EndPoints. - Web services are loosely coupled software
components delivered over Internet standard
technologies - A self-contained, modular application that can
be described, published, located, and invoked
over the Web. Platform-neutral and based on open
standards, Web Services can be combined with each
other in different ways to create business
processes that enable you to interact with
customers, employees, and suppliers.
4Web-palvelut... mitä niillä tehdään?
- Nykyisten käytössä olevien sovellusten standardi
liittäminen muihin sovelluksiin - Uusien sovellusten rakentaminen
palvelu-arkkitehtuurin suuntaisesti - Sovellusten välinen liikennöinti HTTPn yli
- Kansainvälinen toiminta yhteistoiminnallisuuden
edistämiseksi - yhteiset standardit
- tärkeimmät organisaatiot WS-I, W3C ja OASIS
- Yhdistävä tekijä Java- ja Microsoft-maailman
välillä - myös Open Source / Unix / Linux tekijät mukana
(Perl, Python, PHP)
5Web-palvelut... perusstandardit
- HTTP (Hypertext Transfer Protocol)
- viestien siirtoprotokolla TCP/IPn päällä
- v1.1 vuonna 1999
- XML
- liittymien ja viestien kuvauskieli
- v1.0 vuonna 1996
- SOAP (Simple Object Access Protocol)
- viestintä web-palveluiden välillä
- v1.2 vuonna 2003
- WSDL (Web Services Description Language)
- web-palveluiden liittymien kuvaus
- v1.2 vuonna 2003
6Web-palvelut... ongelmakohdat
- Standardit pyrkivät edelleen mahdollisimman
vapaaseen liittymien kuvaamiseen XMLn avulla - ?useita yhtä hyviä keinoja kuvata samaa
toiminnallisuutta - ?turhan monimutkaiset standardit
- ?vaikeasti toteutettavia, ongelmia
yhteentoimivuudessa - ?vaikea tukea sovelluskehittimissä
monimuotoisuuden takia - ?käytännössä vaikeita opiskella
- Hyödyntämiskohteiden epäselvyydet
- Liiketoimintaprosessien mallintaminen
web-palveluihin vaikeaa - HTTP-liikenteestä johtuvat rajoitteet
kutsumekanismeissa
7Web-palvelut... kehitys?
- Web Services Interoperability (WS-I) pyrkii
ottamaan takapakkia standardeissa - tärkein tavoite ei ole toiminnallisuuden
monimuotoisuus vaan yhteentoimivuuden
parantaminen - vain kaksi tapaa julkaista rajapinta-tyylisiä
web-palveluita - best practises tyyppisiä määrityksiä
- WS-I Basic Profile -määritys
- miten luoda ja julkistaa yhteentoimivia
web-palveluita käyttäen SOAPpia, WSDLää ja
HTTPtä
8Web-palvelut... lisää kehitystä?
- WS-I Attachments Profile määritys
- miten soveltaa SOAP Attachments määritystä
liitetiedostojen lähettämiseen - WS-I Security Basic Profile -määritys
- miten soveltaa SOAP-viestien allekirjoitus ja
salaus WS-Security ja WS-Encryption -standardeja - Tulevaisuudessa toivottavasti WS-I Business
Process Profile
9Web-palvelut... standardeja
- W3Cn tai OASISn määrittelemiä
- WS-I pyrkii tarkentamaan valmiiden standardien
toteutustapoja - BPEL
- Business Process Execution Language
- yhden liiketoimintaprosessin kuvaus alusta
loppuun - pohjana Microsoftin ja IBMn määritykset
- WS-Security ja WS-Encryption
- SOAP-sanomien allekirjoitus
- SOAP-sanomien tai niiden osien salaaminen
- useita mahdollisuuksia esim. allekirjoituksen
esittämiseen - WS-I Security Basic Profile määritys tarkentaa
näiden käyttöä
10Web-palvelut... muita määrityksiä
- UDDI (Universal Description, Discovery and
Integration) - Hakemistopalvelu web-palveluille, mahdollisuutena
dynaaminen web-palveluiden käyttö - ei juurikaan käytetty
- WS-Addressing
- Web-palveluiden päätepisteiden kuvaus
- WS-Reliability
- SOAP-viestien luotettava toimittaminen
- muut WS-määritykset
- Lista jatkuu aika pitkälti
- vaikea ennustaa, mitkä näistä jäävät oikeasti
elämään - osittain päällekkäisiä määrityksiä
- parhaiten tuntuvat menestyvän määritykset
joissa mukana useampia isoista pelaajista (IBM,
Microsoft) - määritysten omistussuhteet joskus epäselvät
11Web-palvelut... kaavakuva
XML
WS-määritykset
WSDL
Web-palvelu
Rajapinnan kuvaus
Viestintä
SOAP
HTTP HTTPS
MIME
12Web-palvelut... miksi ne kelpaavat
- Pääperiaate Ihan sama millä web-palvelun
toteutus on tehty - WSDL/SOAP toiminnallisuus on hyvä myyntikeino
IDE-kehittäjille - SOAP-liikennöinti on tavallaan puolueeton
vyöhyke Microsoftin ja Java/Open Source
maailmojen välillä - XML tarjoaa mahdollisuuden lisätä yksinkertaisten
palveluviestien päälle monimutkaisia rakenteita
ilman että viestin tietosisältö muuttuu - HTTP-pohjainen liikennemalli on jo de facto
standardi Internetissä
13Osa 2... web-palveluiden kuvaus WSDLllä
14WSDL... mikä se on
- WSDL-dokumentti on itsenäinen XML-dokumentti joka
kuvaa web-palvelun rajapinnat, SOAP-viestien
tietosisältöä ja palvelun sijainnin - voi sisältää esimerkiksi myös dokumentaatiota
rajapinnasta - ei sisällä rajapintoihin liittymätöntä tietoa,
kuten SOAP-viestien - Standardi tapa julkistaa web-palvelu
- WSDL voidaan generoida automaattisesti olemassa
olevasta toteutuksesta - WSDLn formaatti ei ole tehty ihmisille vaan
automaattisille työkaluille ? vaikeasti
ymmärrettävä mutta erittäin monipuolinen
15WSDL... mitä sillä voi tehdä
- WSDL-kieli itsessään vain kuvaa abstraktia
tiedonsiirtorajapintaa - ? WSDL-dokumentin kuvaamat rajapinnat eivät
välttämättä ole Remote Procedure Call
(RPC)-tyyppisiä - ? WSDL voi esimerkiksi vain kuvata tietyn
muotoisen XML-dokumentin joka siirretään kahden
päätepisteen välillä - ? tarvitaan tietyn muotoinen WSDL-dokumentti,
joka voidaan tulkita esitävän RPC-tyyppistä
rajapintaa - Yleensä WSDL kuvaa kuitenkin RPC-tyyppistä
rajapintaa, joka voidaan myös esittää
perinteisillä ohjelmointikielillä - WSDL-dokumentin avulla voidaan tarvittaessa
validoida SOAP-sanomat
16WSDL... käyttötavat
- Kolme peruskäyttötapaa
- 1. luodaan runko web-palvelun toteutukselle
WSDL-dokumentista - 2. otetaan ulkoinen web-palvelu käyttöön WSDLn
avulla luomalla tynkä jota asiakassovellus voi
käyttää palvelun kutsumiseen - 3. web-palvelua kuvaava WSDL-dokumentti
generoidaan jostakin valmiista sovelluksesta tai
sen komponentista - Kaikki voidaan tehdä automaattisesti työkaluilla,
joita löytyy sovelluskehittimistä - uusimmissa työkaluissa WS-I Basic Profile
yhteensopivuus - HUOM! WSDLn, tyngän tai rungon käyttö ei ole
pakollista, SOAP-sanomat voi tehdä myös käsin
ja lähettää ne itse HTTPn avulla
17WSDL... käyttötavat
- Kaksi WSDL-tyyliä määritelty kutsurajapinta-tyylis
ille web-palveluille - document ja RPC - kummatkin tuottavat perus-web-palvelu -käytössä
täsmälleen samanlaisia SOAP-sanomia - Microsoft käyttää oletuksena document-tyyliä,
mutta tukee myös RPC-tyyliä - Java-puolella yleensä RPC-tyyli käytössä
oletuksena - Kummatkin tyylit ovat yleensä hyvin tuettuja
SOAP-välineissä - RPC-tyylin tarjoamia mahdollisuuksia
SOAP-viestintään voidaan ajatella document-tyylin
mahdollisuuksien osajoukkona - ?RPC-tyyliset WSDL-dokumentit ovat hieman
yksinkertaisempia
181. Web-palvelun rungon luominen
WSDL
työkalu
Palvelutoteutus
runko
192. Web-palvelun käyttöönotto
Asiakas sovellus
työkalu
tynkä
WSDL
Palvelutoteutus
203. WSDL-dokumentin generointi
Palvelutoteutus
työkalu
WSDL
21WSDLn osat (elementit) karkeasti
- schema (0-n kappaletta)
- jokaisen SOAP-viestien osien tietosisällön kuvaus
XML-scheman avulla - message (2-n kappaletta)
- jokaisen SOAP-viestin osien luettelo
- portType (yleensä 1 kappale)
- jokaisen SOAP-palvelukutsun viestit
(parametri-viesti, paluu-viesti,
virheilmoitus-viestit) - binding (yleensä 1 kappale)
- SOAP-palvelukutsujen ja esim. liitetiedostojen
sitominen HTTP tms. siirtoprotokollaan - service (1 kappale)
- web-palvelun yhteydet ulkomaailmaan, esim. sen
HTTP-osoite. Yleensä vain yksi yhteys on
edustettuna (HTTP).
22Osa 3... EchoApplication-palvelun WSDL-kuvaus
23EchoApplication web-palvelun kuvaus
- EchoApplication sisältää yhden palvelukutsun
(echoText) - parametrinä string-tyyppinen teksti
- paluuarvona string-tyyppinen teksti
- WSDL on document/literal -tyylinen
- WS-I Basic Profile 1.1 yhteensopivuus on
tarkistettu - Toimivuus
- Oracle JDeveloper 10g Web Service Stub/Skeleton
Generator - Delphi 7 WSDL Importer
- .NET Framework 1.1 SDK WSDL.EXE
- Apache Axis 1.2 WSDL2Java
24EchoApplication... WSDL-dokumentti
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdefinitions targetNamespace"urnserapiSOAPExamp
le" - xmlns"http//schemas.xmlsoap.org/wsdl/"
- xmlnsimpl"urnserapiSOAPExample"
- xmlnswsdlsoap"http//schemas.xmlsoap.org/wsdl/s
oap/" - xmlnsxsd"http//www.w3.org/2001/XMLSchema"gt
- lttypesgt...lt/typesgt
- ltmessagegt...ltmessagegt
- ltportTypegt...lt/portTypegt
- ltbindinggt...lt/bindinggt
- ltservicegt...lt/servicegt
- lt/definitionsgt
WSDL-dokumentin osien nimialue
Web-palvelun nimialue
25EchoApplication... service-elementti
- ltservice nameEchoService"gt
- ltport binding"implEchoBinding"
nameEchoApplication"gt - ltwsdlsoapaddress location"http//localhost/Ech
oService/services/EchoApplication"/gt - lt/portgt
- lt/servicegt
Web-palvelun nimi
Web-palvelun käyttämä HTTP-sidonta (binding)
Web-palvelun osoite URLina
26EchoApplication... binding-elementti
- ltbinding name"helloWorldBinding"
type"implEchoOperations"gt - ltwsdlsoapbinding style"document"
transport"http//schemas.xmlsoap.org/soap/http"/gt
- ltoperation nameechoText"gt
- ltwsdlsoapoperation soapAction"urnserapiSOAP
ExampleEchoText"/gt - ltinputgt
- ltwsdlsoapbody use"literal"/gt
- lt/inputgt
- ltoutputgt
- ltwsdlsoapbody use"literal"/gt
- lt/outputgt
- lt/operationgt
- lt/bindinggt
HTTP-sidonnan palvelukutsut (portType)
Palvelukutsujen sidontatyyli
echoText-palveluKutsun sidonta
27EchoApplication... portType-elementti
- ltportType nameEchoOperations"gt
- ltoperation nameechoText"gt
- ltinput message"implechoTextRq"/gt
- ltoutput message"implechoTextRsp"/gt
- lt/operationgt
- lt/portTypegt
echoText-palvelukutsun SOAP-viestit (input ja
output)
28EchoApplication... message-elementti
- ltmessage nameechoTextRq"gt
- ltpart element"implechoText"
name"parameters"/gt - lt/messagegt
- ltmessage nameechoTextRsp"gt
- ltpart element"implechoTextResponse"
name"parameters"/gt - lt/messagegt
echoText-palvelukutsun input ja output- viestien
osat
29EchoApplication... types-elementti
- lttypesgt
- ltschema elementFormDefault"qualified
- targetNamespace"urnserapiSOAPExample
- xmlns"http//www.w3.org/2001/XMLSchema"gt
- ltelement nameechoText"gt
- ltcomplexTypegt
- ltsequencegt
- ltelement name"text" type"xsdstring"/gt
- lt/sequencegt
- lt/complexTypegt
- lt/elementgt
- ltelement nameechoTextResponse"gt
- ltcomplexTypegt
- ltsequencegt
- ltelement name"echoedText"
type"xsdstring"/gt - lt/sequencegt
- lt/complexTypegt
- lt/elementgt
- lt/schemagt
echoText-palvelukutsun parametrit (input-viestin
sisältö). HUOM! Elementin nimen on oltava
echoText!
echoText-palvelukutsun paluuarvot (output-viestin
sisältö). HUOM! Elementin nimen on oltava
echoTextResponse!
30Osa 4... Web-palveluiden viestintä SOAPlla
31SOAP-sanoman osa-elementit
- Header ei ole pakollinen
- sisältää metatietoa viestistä
- Body sisältää itse sanoman tietosisällön, esim.
- kutsuttava web-palvelukutsu ja sille annettavat
parametrit - muu XML-dokumentti
Envelope
Header
Body
32SOAP-viestinvälitys
Asiakas
Palvelutoteutus
Aputyökalu palvelun löytämiseen
runko
tynkä
SOAP-vastaanottaja
SOAP-lähettäjä
HTTP / HTTPS
33SOAP-esimerkki... echoText-kutsu
- ltsoapenvEnvelope
- xmlnssoapenv"http//schemas.xmlsoap.org/soap/en
velope/ - xmlnsxsd"http//www.w3.org/2001/XMLSchema
- xmlnsxsi"http//www.w3.org/2001/XMLSchema-Insta
nce"gt - ltsoapenvBodygt
- ltechoText xmlns"urnserapiSOAPExample"gt
- lttextgtJeejeelt/textgt
- lt/echoTextgt
- lt/soapenvBodygt
- lt/soapenvEnvelopegt
Body-elementti
Web-palvelukutsu
parametri
34SOAP-esimerkki... echoTextResponse-vastaus
- ltsoapenvEnvelope
- xmlnssoapenv"http//schemas.xmlsoap.org/soap/en
velope/ - xmlnsxsd"http//www.w3.org/2001/XMLSchema
- xmlnsxsi"http//www.w3.org/2001/XMLSchema-Insta
nce"gt - ltsoapenvBodygt
- ltechoTextResponse xmlns"urnserapiSOAPExample
"gt - ltechoedTextgtPalvelu vastaa
Jeejeelt/echoedTextgt - lt/echoedTextResponsegt
- lt/soapenvBodygt
- lt/soapenvEnvelopegt
Vastaus
35Osa 5... WS-määritysten käyttö web-palveluissa
36Esimerkki Aikaleiman lisääminen
lt?xml version '1.0' encoding
'UTF-8'?gt ltsoapenvEnvelope xmlnssoapenv"http/
/schemas.xmlsoap.org/soap/envelope/"gt
ltsoapenvHeadergt ltwsuTimestamp
xmlnswsu"http//docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd"gt
ltwsuCreationgt2004-11-25T1516140200lt/wsuCreati
ongt lt/wsuTimestampgt lt/soapenvHeadergt
ltsoapenvBodygt ltechoTextResponse
xmlns"urnserapiSOAPExample"gt
ltechoedTextgtPalvelu vastaaJeejeelt/echoedTextgt
lt/echoedTextResponsegt lt/soapenvBodygt lt/soapenvE
nvelopegt
Header-elementti
Aikaleima (SOAP-vastauksen luontipäivämäärä)
37WS-määritykset... käyttö
- SOAP-sanoman tietosisältö ei muutu
- Body-elementti säilyy (yleensä) muuttumattomana
- Body-osio voidaan salata WS-Encryptionilla
- Vastaanottaja ei välttämättä hyödynnä esim.
aikaleimaa mutta se ei haittaa SOAP-sanoman
ymmärtämistä
38Linkkejä
- W3Cn standardit
- SOAP - http//www.w3.org/TR/soap/
- WSDL - http//www.w3.org/TR/wsdl12
- WS-In määritykset
- WS-I Basic Profile - http//www.ws-i.org/Profiles/
BasicProfile-1.1.html - WS-I Attachments Profile - http//www.ws-i.org/Pro
files/AttachmentsProfile-1.0.html - WS-I Basic Security Profile - http//www.ws-i.org/
Profiles/BasicSecurityProfile-1.0.html