Johdatus web-palveluihin
Marko Sormunen
SerAPI-projekti, HIS-yksikkö
Tietotekniikkakeskus
Kuopion yliopisto
[email protected]
Osa 1... web-palvelut
paperilla
Web-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 Internetbased 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. ”
Web-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 HTTP:n 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)
Web-palvelut... perusstandardit

HTTP (Hypertext Transfer Protocol)



XML



liittymien ja viestien kuvauskieli
v1.0 vuonna 1996
SOAP (Simple Object Access Protocol)



viestien siirtoprotokolla TCP/IP:n päällä
v1.1 vuonna 1999
viestintä web-palveluiden välillä
v1.2 vuonna 2003
WSDL (Web Services Description Language)


web-palveluiden liittymien kuvaus
v1.2 vuonna 2003
Web-palvelut... ongelmakohdat

Standardit pyrkivät edelleen mahdollisimman vapaaseen
liittymien kuvaamiseen XML:n 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
Web-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 SOAP:pia, WSDL:ää ja HTTP:tä
Web-palvelut... lisää kehitystä?

WS-I Attachments Profile –määritys


WS-I Security Basic Profile -määritys


miten soveltaa SOAP Attachments –määritystä
liitetiedostojen lähettämiseen
miten soveltaa SOAP-viestien allekirjoitus ja salaus WSSecurity ja WS-Encryption -standardeja
Tulevaisuudessa toivottavasti ”WS-I Business Process
Profile”
Web-palvelut... standardeja

W3C:n tai OASIS:n määrittelemiä


BPEL




WS-I pyrkii tarkentamaan valmiiden standardien
toteutustapoja
Business Process Execution Language
yhden liiketoimintaprosessin kuvaus alusta loppuun
pohjana Microsoftin ja IBM:n 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öä
Web-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
Web-palvelut... kaavakuva
XML
WS-määritykset
WSDL
Rajapinnan
kuvaus
Web-palvelu
MIME
Viestintä
HTTP
HTTPS
SOAP
Web-palvelut... miksi ne kelpaavat





Pääperiaate: ”Ihan sama millä web-palvelun toteutus on
tehty”
WSDL/SOAP –toiminnallisuus on hyvä myyntikeino IDEkehittä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ä
Osa 2... web-palveluiden
kuvaus WSDL:llä
WSDL... 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 SOAPviestien
Standardi tapa julkistaa web-palvelu
WSDL voidaan generoida automaattisesti olemassa
olevasta toteutuksesta
WSDL:n formaatti ei ole tehty ihmisille vaan
automaattisille työkaluille  vaikeasti ymmärrettävä
mutta erittäin monipuolinen
WSDL... 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 XMLdokumentin 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

WSDL... käyttötavat

Kolme peruskäyttötapaa:




Kaikki voidaan tehdä automaattisesti työkaluilla, joita
löytyy sovelluskehittimistä


1. luodaan runko web-palvelun toteutukselle WSDLdokumentista
2. otetaan ulkoinen web-palvelu käyttöön WSDL:n avulla
luomalla tynkä jota asiakassovellus voi käyttää palvelun
kutsumiseen
3. web-palvelua kuvaava WSDL-dokumentti generoidaan
jostakin valmiista sovelluksesta tai sen komponentista
uusimmissa työkaluissa WS-I Basic Profile –yhteensopivuus
HUOM! WSDL:n, tyngän tai rungon käyttö ei ole
pakollista, SOAP-sanomat voi tehdä myös ”käsin” ja
lähettää ne itse HTTP:n avulla
WSDL... käyttötavat

Kaksi WSDL-tyyliä määritelty kutsurajapinta-tyylisille
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 SOAPvälineissä
RPC-tyylin tarjoamia mahdollisuuksia SOAP-viestintään
voidaan ajatella document-tyylin mahdollisuuksien
”osajoukkona”
RPC-tyyliset WSDL-dokumentit ovat hieman
yksinkertaisempia

1. Web-palvelun rungon luominen
WSDL
työkalu
runko
Palvelutoteutus
2. Web-palvelun käyttöönotto
Asiakas
sovellus
WSDL
työkalu
tynkä
Palvelutoteutus
3. WSDL-dokumentin generointi
Palvelutoteutus
työkalu
WSDL
WSDL:n osat (elementit) karkeasti

schema (0-n kappaletta)


message (2-n kappaletta)


jokaisen SOAP-palvelukutsun viestit (parametri-viesti,
paluu-viesti, virheilmoitus-viestit)
binding (yleensä 1 kappale)


jokaisen SOAP-viestin osien luettelo
portType (yleensä 1 kappale)


jokaisen SOAP-viestien osien tietosisällön kuvaus XMLscheman avulla
SOAP-palvelukutsujen ja esim. liitetiedostojen sitominen
HTTP tms. siirtoprotokollaan
service (1 kappale)

web-palvelun yhteydet ulkomaailmaan, esim. sen HTTPosoite. Yleensä vain yksi yhteys on edustettuna (HTTP).
Osa 3... EchoApplicationpalvelun WSDL-kuvaus
EchoApplication –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
EchoApplication... WSDLdokumentti
<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="urn:serapi:SOAPExample"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:impl="urn:serapi:SOAPExample"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>...</types>
<message>...<message>
WSDL-dokumentin
<portType>...</portType>
<binding>...</binding>
<service>...</service>
Web-palvelun nimialue
</definitions>
osien nimialue
EchoApplication... serviceelementti
<service name=“EchoService">
<port binding="impl:EchoBinding" name=“EchoApplication">
<wsdlsoap:address
location="http://localhost/EchoService/services/EchoApplication"/>
</port>
</service>
Web-palvelun nimi
Web-palvelun käyttämä HTTP-sidonta (binding)
Web-palvelun osoite URL:ina
EchoApplication... bindingelementti
<binding name="helloWorldBinding" type="impl:EchoOperations">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name=“echoText">
<wsdlsoap:operation soapAction="urn:serapi:SOAPExample#EchoText"/>
<input>
<wsdlsoap:body use="literal"/>
</input>
<output>
<wsdlsoap:body use="literal"/>
HTTP-sidonnan palvelukutsut (portType)
</output>
</operation>
</binding>
Palvelukutsujen sidontatyyli
echoText-palveluKutsun sidonta
EchoApplication... portTypeelementti
<portType name=“EchoOperations">
<operation name=“echoText">
<input message="impl:echoTextRq"/>
<output message="impl:echoTextRsp"/>
</operation>
</portType>
echoText-palvelukutsun SOAP-viestit
(input ja output)
EchoApplication... messageelementti
<message name=“echoTextRq">
<part element="impl:echoText" name="parameters"/>
</message>
<message name=“echoTextRsp">
<part element="impl:echoTextResponse" name="parameters"/>
</message>
echoText-palvelukutsun input ja outputviestien osat
EchoApplication... types-elementti
<types>
<schema elementFormDefault="qualified“
targetNamespace="urn:serapi:SOAPExample“
xmlns="http://www.w3.org/2001/XMLSchema">
<element name=“echoText">
<complexType>
<sequence>
<element name="text" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name=“echoTextResponse">
<complexType>
<sequence>
<element name="echoedText" type="xsd:string"/>
</sequence>
</complexType>
echoText-palvelukutsun parametrit
</element>
(input-viestin sisältö). HUOM! Elementin
</schema>
nimen
on oltava echoText!
</types>
echoText-palvelukutsun
paluuarvot
(output-viestin sisältö). HUOM! Elementin
nimen on oltava echoTextResponse!
Osa 4... Web-palveluiden
viestintä SOAP:lla
SOAP-sanoman osa-elementit
Envelope

Header ei ole pakollinen


Header
Body sisältää itse sanoman tietosisällön,
esim.


Body
sisältää metatietoa viestistä
kutsuttava web-palvelukutsu ja sille
annettavat parametrit
muu XML-dokumentti
SOAP-viestinvälitys
Asiakas
tynkä
Palvelutoteutus
Aputyökalu
palvelun
löytämiseen
runko
HTTP / HTTPS
SOAP-lähettäjä
SOAP-vastaanottaja
SOAP-esimerkki... echoText-kutsu
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/“
xmlns:xsd="http://www.w3.org/2001/XMLSchema“
xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance">
<soapenv:Body>
<echoText xmlns="urn:serapi:SOAPExample">
<text>Jeejee</text>
</echoText>
</soapenv:Body>
</soapenv:Envelope> Body-elementti
Web-palvelukutsu
parametri
SOAP-esimerkki... echoTextResponsevastaus
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/“
xmlns:xsd="http://www.w3.org/2001/XMLSchema“
xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance">
<soapenv:Body>
<echoTextResponse xmlns="urn:serapi:SOAPExample">
<echoedText>Palvelu vastaa: Jeejee</echoedText>
</echoedTextResponse>
</soapenv:Body>
</soapenv:Envelope>
Vastaus
Osa 5... WS-määritysten
käyttö web-palveluissa
Esimerkki: Aikaleiman lisääminen
<?xml version = '1.0' encoding = 'UTF-8'?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsu:Timestamp
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd">
<wsu:Creation>2004-11-25T15:16:14+0200</wsu:Creation>
</wsu:Timestamp>
</soapenv:Header>
<soapenv:Body>
<echoTextResponse xmlns="urn:serapi:SOAPExample">
<echoedText>Palvelu vastaa:Jeejee</echoedText>
</echoedTextResponse>
Header-elementti
</soapenv:Body>
</soapenv:Envelope>
Aikaleima (SOAP-vastauksen
luontipäivämäärä)
WS-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ä
Linkkejä

W3C:n standardit
SOAP - http://www.w3.org/TR/soap/
WSDL - http://www.w3.org/TR/wsdl12

WS-I:n määritykset
WS-I Basic Profile - http://www.wsi.org/Profiles/BasicProfile-1.1.html
WS-I Attachments Profile - http://www.wsi.org/Profiles/AttachmentsProfile-1.0.html
WS-I Basic Security Profile - http://www.wsi.org/Profiles/BasicSecurityProfile-1.0.html
Descargar

PlugIT-ydinrajapinnat HTTP/XML