Web-sovelluspalvelutekniikat (Web services)

Slides:



Advertisements
Samankaltaiset esitykset
Palvelut ja tiedot käyttöön: Palveluväylä
Advertisements

ENTERPRISE SEARCH Toteutustekniikka Mikko Uusitalo Tampereen ammattikorkeakoulu.
Ohjelmiston tekninen suunnittelu
Sisäinen integraation ratkaisut
JavaScript oliot © Reiska, DOM Oliot  JavaScript sisältää paljon valmiita DOM olioita, on sisältänyt jo DOM level 0 (ns. Legacy DOM) alkaen  WWW-ympäristössä.
IBM WebSphere Application Server Mediatekniikan Seminaari Mikko Matilainen.
1 Heli Lepomäki Yritysten ja muiden organisaatioiden käyttöön sähköinen työpöytä on jo leviämässä, koska niiden toiminta ja asiakaspalvelu.
1 Java-kieleen pohjautuvien ohjelmien käyttökohteita Ohjelmat Appletit JavaBeans JavaScript Java Server Pages (JSP) Java Servletit J2ME, mobiililaitteet.
Integrointi.
1.
Suunnitelma ohjelmiston testaukseen
Web-sovelluspalvelut terveydenhuollossa? Juha Mykkänen, Marko Sormunen, PlugIT, Kuopion yliopisto, HIS-yksikkö PlugIT-puolivuotisseminaari, Kuopio,
Luku 5 – Tietojen hakeminen sovelluksiin
Ohjaaja: Ville Hentilä, Elisa Oyj Valvoja: Prof. Jukka Manner
PlugIT-tietoiskut •PlugIT-projektin tuotokset –Tiivistetty luettelo tällä hetkellä saatavilla olevista tuotoksista •Ohjelmistotuotannon nykytila ja tarvekartoitus.
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Web Services ©Reino Aarinen, Miksi?  Web Services tekniikalla voi muuttaa valmiit sovellukset Web sovelluksiksi.  Sovellus voi julkaista toiminnon.
Carita, Kati ja Juuso OSAO Myllytulli ja Mytlpt09E 2010
Avointa-hanke ja Prime Solutions Oy PlugIT-loppuseminaari
Johdatus web-palveluihin
Erik Fallenius Kevät  Taustaa ◦ Ontologiat  Tavoitteet  Teknologiat ◦ Dojo/AJAX ◦ JSON ◦ SOAP  Projektin kulku  Lopputulos – demo.
W w w. h a m k. f i Wiki koulutus Leenakaija Lehto
EXtensible Markup Language
Internet  Lingua Franca, kaikkien ymmärtämä yhteinen kieli: TCP/IP tai UDP/IP. ”Kaikki maaiman tietokoneet, liittykää yhteen”.  Suomeen 1990-luvun alussa.
Yhteenvetoa ydin- rajapintojen aamupäivän PlugIT-työpajasta Marko Sormunen PlugIT, Kuopion yliopiston atk-keskus
PlugIT-seminaari Työpaja 2, ma 27.10: Kertomus- ja koodistoliittymät ja kansallisten hankkeiden yhteistyö Kertomus(arkisto)rajapinnat, klo.
PlugIT-seminaari, Työpaja 2 iltapäivä tulokset Kansallinen Koodistopalvelin Koodistorajapinnat PlugIT-projektissa – 16 Kansallisten.
Koodistorajapinnat: Tekniset liittymämäärittelyt XML- ja http- rajapinnoille Juha Mykkänen, PlugIT, Kuopion yliopisto, HIS-yksikkö PlugIT-puolivuotisseminaari,
Elinkeinopoliittinen mittaristo 2014
Tietoyhteiskunnan palveluarkkitehdit ja -rakentajat © 2014 Gofore 1 ePerusteet – tietomalli ja rajapinnat Jarkko Hyöty Opetushallituksen tarjoamien.
CASE: PlugIT- ja SerAPI-projektit
Suuntaamattoman graafin syvyyshaku
Johdatus ohjelmointiin Ohjelmistosuunnittelu Jaana Holvikivi.
XML -kielen perusteet SIMO Seminaari Antti Mäkinen.
Kontekstinhallinta ja muut rajapintatarpeet Mika Tuomainen Juha Mykkänen SerAPI-projekti, HIS-tutkimus Kuopion yliopisto, Tietotekniikkakeskus, Centek.
Web 2.0 tiivistetysti 1. Ohjelmistoalusta on Web. Webtop korvaa Desktopin. Keskeistä yhteisöllisyys ja ”Software as a Service”. 2. Kollektiivisen älyn.
PlugIT-ydinrajapintademo Marko Sormunen PlugIT-projekti, HIS-yksikkö Kuopion tietotekniikkakeskus Kuopion yliopisto
JHS:N SUOSITUKSET VAATIMUSMÄÄRITTELYLLE SEPPO RÄSÄNEN SAVONIA-AMMATTIKORKEAKOULU TERVEYSALA, KUOPIO Ohjelmistotekniikka ja projektinhallinta,
Ydinpalveluiden (käyttäjä, potilas).NET-asiakassovellus: PatientCoreClientDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat.
PlugIT-seminaari A ja E -työpajat Työpaja A, maanantai : PlugIT-rajapintojen toteuttaminen ja hyödyntäminen (how to plug your.
SerAPI Saara Savolainen Esa Paakkanen Marko Suhonen 1 OID-kohde OID- generointi (ja -kyselyt?)
1 Päätöksentuen arkkitehtuuri ja rajapinnat Päätöksentukihanke, neuvottelukunnan työkokous , Helsinki Juha Mykkänen, Marko Suhonen Kuopion yliopisto,
PlugIT-rajapintaesittely ja demo PlugIT-rajapintakoulutus , Kuopio.
SerAPI: SERvice-based architecture and web services in healthcare Application Production and Integration – Palveluarkkitehtuuri ja web-sovelluspalvelut.
Hyväksyttyjen palvelurajapintojen tilanne ja koulutustarpeet Uudet palvelurajapinnat ja SerAPI-hanke HL7 Finland Common Services SIG Juha Mykkänen,
Shibboleth 2 uudet ominaisuudet & päivän käytännöt Haka koulutus
XHTML-perusteita Teppo Räisänen
Minimitason kontekstinhallinnan määrittely Yhteenveto Mika Tuomainen
Heuristinen arviointi Käyttöliittymäseminaari Jere Salonen.
DTD Teppo Räisänen Liiketalouden yksikkö.
SerAPI-Potilaslista osa I: Alustus , Kuopio Juha Mykkänen, Marko Sormunen, Assi Pöyhölä, Hannu Virkanen.
KANSALLISKIRJASTO - Kirjastoverkkopalvelut UKJ toteutusvaihtoehtojen tutkiminen Minna Kivinen, UKJ-ohjausryhmän kokous
PlugIT-ydinrajapinnoista Marko Sormunen PlugIT-projekti, HIS-yksikkö Kuopion tietotekniikkakeskus Kuopion yliopisto
Kaksi- ja kolmitasoiset sovellukset Two and Three Tier Systems.
KuY/HIS / Juha Mykkänen Common Services SIG –tilanne + Standardointiselvitys HL7 Finland Dokumentti-SIG, Juha Mykkänen, Kuopion yliopisto, HIS-tutkimusyksikkö.
Pakkanen -arkkitehtuurin siirto toteutustekniikoihin
E-Työpaja: Rajapintamääritykset Rajapintamääritysten tilanne (Juha Rannanheimo) Kontekstinhallinta (Mika Tuomainen) Käyttäjä-, käyttöoikeus-,
XML Schema Teppo Räisänen Liiketalouden yksikkö.
HTTP (c) Reino Aarinen, HTTP yhteyskäytäntö Web asiakasohjelmat (yleensä erilaiset selaimet) käyttävät HTTP protokollaa tiedon siirtoon WWW sivustojen.
Pakkanen * * * Komponenttipohjaisen sovellustuotannon menetelmäpilotti PlugIT-seminaari Annamari Riekkinen ja Kirsi Karvinen FixIT-DoIT / HIS-tutkimusyksikkö.
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas).NET-palvelutoteutus: CoreServiceDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat.
Metadata editor - rakenteen luonnos 1. TEHTÄVÄ 1) Järjestelmä lukee xml-dokumentin ja xml- skeeman sekä tarkistaa niiden validiuden 2) Järjestelmä lukee.
XSL Teppo Räisänen
XSL Teppo Räisänen
SharePoint2010 ATK-seminaari Totti Nykvist.
TIETOTURVA INTERNETISSÄ. MITÄ ON TIETOTURVA? Tietoturvalla pyritään suojaamaan yritykselle tärkeitä tietoja ulkopuolisilta. Tietoturvalle on asetettu.
Kansallinen palveluväylä PERTIVA-kokous
Sosiaali- ja terveydenhuollon organisaatio- ja palvelutiedon hallinta
Web-sovellusten kehittäminen - Johdanto
1. Olio-ohjelmointi.
Esityksen transkriptio:

Web-sovelluspalvelutekniikat (Web services) Juha Mykkänen, Marko Sormunen Kuopion yliopisto, HIS-yksikkö HL7 SIG-seminaarin, Helsinki, 10.3.2004 pohjalta laajennettu versio, 16.11.2004 toimiiko ollenkaan? huippu-uutuus? vanhaa tavaraa uudessa paketissa?

Katsaus Perustekniikat lyhyesti Käyttötapojen perusvaihtoehdot SOAP ja WSDL-käyttötapoja Turvallisuuden tasot Tekniikoiden lupaukset ja ”lupaukset” Standardointi Käyttö terveydenhuollon sovelluksissa Konteksti : SerAPI-projekti, Tausta: PlugIT-projekti, Komponentti-FixIT-projekti

Hajautetun väliohjelmiston (Middleware) historiallinen kehityskaari etäohjelmakutsut (RPC) transaktiot mukaan -> TP Monitors (Tuxedo jne.) olio-ominaisuudet TP Monitoreihin -> oliosanomavälittimet (CORBA, COM, RMI) viestijonot TP Monitoreihin -> MOM, message-oriented middleware (MSMQ, MQSeries, monet integrointialustat jne.) Internet-tekniikat mukaan -> Web services ja niille ensimmäisenä etäohjelmakutsut… ei revoluutio, vaan evoluutio

Web-sovelluspalvelutekniikat Tiedon siirtoesitys ja siirto tiedonvälitys verkossa yleensä http –siirtoprotokollan avulla SOAP, määrittelee ”kirjekuoren” siirrettävälle sanomalle, voidaan käyttää eri siirtoprotokollien päällä (http, sähköposti, FTP, Jabber..) Rajapintojen (tiedot, toiminnot) määrittely WSDL, määrittelee operaatiot, tietotyypit ja sidonnat alemman tason protokolliin (esim. SOAP), luodaan/luetaan yleensä automaattisesti välineillä XML-RPC käyttää http-protokollaa, määrittelee yksinkertaisia etäohjelmakutsuja ebXML CPP/A tai muut XML-dokumenttimääritykset voivat määritellä tiedonsiirrossa käytettäviä dokumenttityyppejä ja -merkkauksia Palveluiden dynaaminen löytäminen, rekisterit UDDI ebXML registry, välipalvelin..) Lisämääritykset (-tasot) toimintaprosessien määrittely, sopimukset, reititys, turvallisuus jne. SOAP, WSDL, UDDI, ebXML, XML-RPC jne. perustuvat XML:ään, ja ”pelkkää” XML:ää mahdollista käyttää eri tasoilla

Web-sovelluspalveluiden käyttötapoja Palvelukutsut etäoperaatio, RPC, pyyntö - vastaus, ”puhelinkeskustelu” tyypillisin yhdistelmä: SOAP+WSDL (+UDDI) + välitön vastaus palvelukutsuun (synkroninen) välineistöt piilottavat tekniikat, helppo päästä alkuun SOAPin kautta laajennettavuutta ja mukautettavuutta pelkkä http ja XML-operaatiot yksinkertaisuus, matala aloituskynnys Dokumenttisiirrot tietopaketti, fire and forget, ”putkiposti” (tai pyyntö- ja vastausdokumentit) SOAP + XML-dokumentit (esim. ebXML, Open CDA) + synkroninen tai asynkroninen kutsutapa joustavuus, laajennusten käyttö (sekä liikenteessä että sisällössä) mahdollista myös ilman SOAPia tai käyttäen SOAP + WSDL-tekniikoita pelkkä http ja XML-dokumentit

Etäohjelmakutsu yleisesti (eri vaihtoehtoja) XML-RPC, SOAP, http WSDL WSDL XML vastaus ”Tyypillinen” välineistötuettu web-sovelluspalvelu-arkitehtuuri UDDI WSDL WSDL SOAP WSDL

Dokumenttipohjainen yhteistoiminta SOAP, http, FTP.. (dokumentti) XML, CDA (XML), (HTML, .doc) ebXML esimerkkinä ebXML registry CPP CPP CPA SOAP dokumentti CPA

SOAP-tiedonsiirto kirjekuori XML-sanomille envelope (viestin alku ja loppu) header (viestin välityksen ja käsittelyn tiedot, turvallisuus, autentikointi, transaktio) body (XML-sisältö, dokumentti tai operaatiokutsu tai -vastaus) (liitteet) viestien vaihto SOAP-node:jen välillä sender, receiver, intermediary välinetuki nojautuu osin nimeämiskäytäntöihin (response, request jne.) asynkronista viestintää varten headerin kentillä ”mustUnderstand” arvoja viestien kustomointi SOAP-tasolla tarkoituksena voidaan käyttää joustavasti ja monella tavalla mutta kutakin kustomoitua kohtaa varten pitää ohjelmiston tietää mitä tehdä versiot 1.1 ja 1.2, jälkimmäinen tarkempi (ja joustavampi)

http + SOAP RPC-kutsu POST /ibm-soap/rpcrouter.jsp HTTP/1.1 Host: localhost Content-Type: text/xml; charset="utf-8" Content-Length: 484 SOAPAction: "http://www.psol.com/soap/reverse" <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema/instance/" xmlns:xsd="http://www.w3.org/1999/XMLSchema/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <ns1:reverse xmlns:ns1="http://www.psol.com/soap/reverse" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> <st xsi:type="xsd:string">Pineapplesoft</st> </ns1:reverse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

SOAP-dokumenttiviesti header <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ar="http://www.hl7.fi/ar2002/refdb"> <SOAP-ENV:Header> <ar:MessageHeader SOAP-ENV:mustUnderstand="1"> <ar:From> <ar:PartyId>1.2.246.537.10..koodistopalvelin..</ar:PartyId> <ar:Role>codeServer</ar:Role> </ar:From> <ar:To> <ar:PartyId>1.2.246.537.10.245.1</ar:PartyId> <ar:Role>codeUser</ar:Role> </ar:To> <ar:CPAId>1.2.246.777.11.2003.1</ar:CPAId> <ar:ConversationId>1.2.246.537.10..1075300247088</ar:ConversationId> <ar:Service>codeServer</ar:Service> <ar:Action>termItemEntry</ar:Action> <ar:MessageData> <ar:MessageId>1.2.246.537.10..koodistopalvelin..1075300697375</ar:MessageId> <ar:Timestamp>2004-01-28T16:38:17</ar:Timestamp> </ar:MessageData> </ar:MessageHeader> <ar:AckRequested SOAP-ENV:mustUnderstand="1"/> <ar:HL7FIBodyCount SOAP-ENV:mustUnderstand="1">1</ar:HL7FIBodyCount> </SOAP-ENV:Header>

SOAP-dokumenttiviesti body <SOAP-ENV:Body> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="koodistosiirto_V05.xsd"> <header>Stakes koodistopalvelin ohjelmisto: Datawell: CodeServer 3.0 [20031214]</header> <body> <termSystem id="1.2.246.777.5.164.2003.1" language="fi" beginDate="2003-01-01T00:00:01.0" expirationDate="2020-12-31T23:59:59.0" lastModifiedDate="2003-12-02T10:19:52.0" lastModifiedBy="Lehtonen, Jari"> <attribute type="longname" dataType="ST" language="fi">HL7-Laeaekkeenantolaite 2003</attribute> <attribute type="status" dataType="ST">1</attribute> … </termSystem> </body> </document> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

WSDL-rajapintakuvaus web-sovelluspalvelun liittymän määrittely kuvauksen osat types: tyyppijärjestelmä (esim. Schema) message: tyypitetty siirrettävä tieto part: tiedon elementti portType: kokoelma toimintoja operation: palvelun tukema toiminto input, output, viittaa messageen binding: protokolla, jota kutsumiseen käytetään (tarkentaa edellisiä) viittaa portTypeen operation, input, output service: liittymäpisteiden kokoelma port: verkon liittymäpiste, binding ja verkko-osoite

<?xml version="1.0" encoding="UTF-8" ?> <wsdl:definitions targetNamespace="http://kettinki.uku.fi:81/axis/services/LDAPWebService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="http://kettinki.uku.fi:81/axis/services/LDAPWebService" xmlns:impl="http://kettinki.uku.fi:81/axis/services/LDAPWebService"> <wsdl:message name="identifyByUserNameRequest"> <wsdl:part name="userName" type="xsd:string" /> </wsdl:message> <wsdl:message name="identifyByUserNameResponse"> <wsdl:part name="identifyByUserNameReturn" type="xsd:string" /> <wsdl:portType name="LDAPServant"> <wsdl:operation name="identifyByUserName" parameterOrder="userName"> <wsdl:input name="identifyByUserNameRequest" message="impl:identifyByUserNameRequest" /> <wsdl:output name="identifyByUserNameResponse" message="impl:identifyByUserNameResponse" /> </wsdl:operation> </wsdl:portType>

<wsdl:binding name="LDAPWebServiceSoapBinding" type="impl:LDAPServant"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="identifyByUserName"> <wsdlsoap:operation soapAction="" /> <wsdl:input name="identifyByUserNameRequest"> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ldap" /> </wsdl:input> <wsdl:output name="identifyByUserNameResponse"> namespace="http://kettinki.uku.fi:81/axis/services/LDAPWebService" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="LDAPServantService"> <wsdl:port name="LDAPWebService" binding="impl:LDAPWebServiceSoapBinding"> <wsdlsoap:address location="http://kettinki.uku.fi:81/axis/services/LDAPWebService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>

WSDL-käyttötavat valitaan käyttötarpeen perusteella: halutaanko validoida schema, haittaako ylimääräisen tyyppitiedon siirtäminen SOAPin yli, halutaanko pitää WSDL-määrittely ”luettavana”, halutaanko käsitellä ”operaatioita” wsdl:binding:istä ”löytyviä” rpc tai document (<wsdlsoap:binding style=..>) encoded tai literal (<wsdlsoap:body use=..> vaikuttavat WSDL:stä syntyvään SOAPiin ja asettavat välineille yhteentoimivuushaasteita rpc/encoded yksinkertainen WSDL, operaation nimi näkyvissä (helppo yhdistää toteutukseen) tyyppitieto (ylimääräistä SOAPissa), validointi vaikeaa (vain myMethod-määrittely on schemassa, loput WSDL:ää) rpc/literal yksinkertainen WSDL, operaation nimi näkyy, tyyppitietoa ei SOAPissa validointi vaikeaa (edelleen vain myMethod-sisäinen määrittely schemassa) (document/encoded) document/literal tyyppitietoa ei SOAPissa, schemassa määritelty koko SOAP body WSDL:n luettavuus kärsii, operaation nimeä ei ole SOAPissa (välineen vaikeaa yhdistää vastaavaan metodiin) document/literal wrapped SOAPissa ei tyyppitietoa, schemassa määritelty koko SOAP body, operaation nimi ”ujutetaan elementtinä” takaisin sanomaan WSDL on monimutkainen, ei voi käyttää polymorfisia operaatioita, ei sovi datagraafeihin

rpc/encoded <message name="myMethodRequest"> <part name="x" type="xsd:int"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> <!-- I won't bother with the details, just assume it's RPC/encoded. --> yksinkertainen WSDL, operaation nimi näkyvissä (helppo yhdistää toteutukseen) tyyppitieto (ylimääräistä SOAPissa), validointi vaikeaa (vain myMethod-määrittely on schemassa, loput WSDL:ää) <soap:envelope> <soap:body> <myMethod> <x xsi:type="xsd:int">5</x> </myMethod> </soap:body> </soap:envelope>

rpc/literal <message name="myMethodRequest"> <part name="x" type="xsd:int"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> <!-- I won't bother with the details, just assume it's RPC/literal. --> yksinkertainen WSDL, operaation nimi näkyy, tyyppitietoa ei SOAPissa validointi vaikeaa (edelleen vain myMethod-sisäinen määrittely schemassa) <soap:envelope> <soap:body> <myMethod> <x>5</x> </myMethod> </soap:body> </soap:envelope>

document/literal <types> <schema> <element name="xElement" type="xsd:int"/> </schema> </types> <message name="myMethodRequest"> <part name="x" element="xElement"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> <!-- I won't bother with the details, just assume it's document/literal. --> tyyppitietoa ei SOAPissa, schemassa määritelty koko SOAP body WSDL:n luettavuus kärsii, operaation nimeä ei ole SOAPissa (välineen vaikeaa yhdistää vastaavaan metodiin) <soap:envelope> <soap:body> <xElement>5</xElement> </soap:body> </soap:envelope>

document/literal wrapped <types> <schema> <element name="myMethod"/> <complexType> <sequence> <element name="x" type="xsd:int"/> </sequence> </complexType> </element> </schema> </types> <message name="myMethodRequest"> <part name="parameters" element="myMethod"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> ei tyyppitietoa, schemassa määritelty koko SOAP body, operaation nimi ”ujutetaan elementtinä” takaisin sanomaan WSDL on monimutkainen, ei voi käyttää polymorfisia operaatioita, ei sovi datagraafeihin <soap:envelope> <soap:body> <myMethod> <x>5</x> </myMethod> </soap:body> </soap:envelope>

UDDI-rekisterit palveluiden löytämiseen (SOAP)-operaatiot: registration: palvelukuvaus rekisteriin lookup: palvelun haku useanlaista tietoa white pages: palvelun tuottajatiedot yellow pages: palvelun luokittelu (esim. hakukone, kirjakauppa) green pages: palvelun rajapinta, WSDL:n sijainti jne. julkiset ja yksityiset rekisterit muistuttaa naming service, trader service / CORBA mutta UDDI-rekisterit ovat enimmäkseen ihmisten luettaviksi tarkoitettuja: vaikka esim. operaatiokuvaus saadaan rekisteristä, ei parametrien merkitystä ole kuvattu onko ”avoimelle palveluhakemistolle” todellinen tarve esim. terveydenhuollon sovellusintegraatiossa? lähinnä ”monien osoitteiden löytyminen yhdestä paikasta”, muun tyyppinen ”dynaaminen sidonta” on jo systeemiohjelmointia (CORBA DII) hoidetaanko tarpeet (osoitteet yms.) paikallisella konfiguroinnilla, LDAP-/ ActiveDirectory-hakemistoilla jne?

Mitä saavutetaan milläkin tekniikalla? http+XML hajautus, avointen Internet-tekniikoiden hyödyntäminen, sovitut rajapinnat, ymmärrettävyys suhteellisen kevyt toteutettavuus myös vanhoihin ympäristöihin http+SOAP+XML kirjekuoren hyödyt: osoitteet, aikaleimat, palautus jos viestiä ei voitu toimittaa tai postinumero on väärin, sisällön ”piilotus”, omat koristelut… viestinvälitys: jos käytetään reititystä, integrointialustaa, salausta, autentikointia tms, headerin käsittely erillään sisällöstä dokumenttisisältö – monta tapaa toteuttaa rajapintoja (myös ”operaatiot” onnistuvat: ks. <ar:Action>-elementti) http+SOAP+WSDL sovelluskehityksen suoraviivaisuus (WSDL->ohjelmointikieli->WSDL) välinetuki, tekniikat halutessa pois näkyvistä omimmillaan operaatiot (API-rajapinnat) ohjelmointiympäristöissä dokumentit integrointialustoissa tai –välineissä kehityksen suunta (WSDL:n päälle tulevat standardit, esim. prosessien määrittely BPEL4WS)

Web-sovelluspalveluiden turvallisuus Web-palveluliikenne http-protokollaa ”tyypillisesti” käyttämällä luo tietoturva- aukon (sovellusliikenne läpi palomuurin ”selainportin” 80) Yhteyden turvaaminen (salaus) https, SSL (kevyt sovelluskehittäjälle, raskas suoritus) VPN (vaatii lisätyötä, paikallisia asetuksia) Viestitason salaukset ja allekirjoitukset SOAP-tasolla XML digital signatures vaativat lisätyötä, -suunnittelua ja sopimista Turvallisuusinfrastruktuurin käyttö (ei enää alustaneutraalia!) esim. JAAS Java-sovelluspalvelimille, NTLM + Kerberos Windows-sisäverkoissa, sovelluspalvelinkohtaiset turvallisuuspiirteet ”palomuuri-reikä” voidaan tukkia esim. sisältötietoisten palomuurien avulla Sovellustason tietoturva (sisäänkirjaus, yhteiset turvallisuuspalvelut) tulossa vähitellen, ei selkeitä standardeja

Web-sovelluspalveluiden lupaukset ”Alusta- ja tekniikkavaihtoehtojen tuki” totta, merkki-, XML- ja Internet-pohjaisille sovelluksille runsaasti toteutusvälineitä eri alustoille ”Yleisten, laajalti levinneiden tekniikoiden hyödyntäminen” totta, Internet-tekniikat laajasti käytössä (myös terveydenhuollossa) ”Löysä kytkentä sovellusten välillä” (loose coupling) RPC-tavan palveluiden käyttö on tiukkaa kytkentää, löysäämistä dokumenttien tai tietopohjaisen käytön (kopioinnin) avulla XML:ssä löysä kytkentä lisää joustavuutta mutta myös sovelluskohtaista toteutustyötä kytkentää tiukennetaan tietotyyppien (mm. Schema) ja lisämäärittelyjen (mm. käytettävät SOAP-lisätasot) kautta ”Palvelut ovat itsensä kuvaavia” XML-taso: metatason (kuvailutiedon) merkitys on edelleen sovittava sovellusten välillä ”<person>” (XML-merkkaus voi helpottaa ihmisen ymmärtämistä) WSDL-taso: vaikka liittymän (muuttunut) määritys luetaan haluttaessa, on toteutus silti tehtävä / muutettava vastaamaan määritystä (vasta) tutkimusaiheena semanttinen web, yleisten ontologioiden määrittely ja käyttö

Web-sovelluspalveluiden lupaukset.. ”Palvelut löydetään dynaamisesti ajon aikana” onnistuu rekistereitä käyttämällä, onko kuitenkaan tavoitteena, myös mediaattoreiden / integrointialustojen avulla reititykset ja muunnokset ”Toimittajariippumattomuus” ”peruspiirteitä” käyttämällä yhteentoimivuus ilman suuria muutoksia epäyhteensopivuuksia, standardien versiot ja ”pinot”, puutteellinen standardituki ”Kevyt teknologia, helppo opittavuus” pitää paikkansa yksinkertaisimpien käyttömallien kohdalla (XML+http, XML-RPC) + välineet tekevät paljon WSDL-SOAPin joillain tyyleillä jo SOAPin laajennusten käytössä paljon opiskeltavaa ja sovittavaa määritysten ja versioiden lukumäärän jatkuva kasvu, määritysten väliset suhteet Russel Butek: WSDL usage styles: IBM DeveloperWorks, Which style of WSDL shoud I use? Timo Tarhonen: SOAP 1.1:n ja 1.2:n pikavertailu, Open CDA tulospaketti.

Lupaukset ja myytit… ”Globaalit, kaikkialla käytettävät standardit” eivät tule korvaamaan jo tehtyjä ratkaisuja (EDI, HL7 jne.) ratkaisut rakennetaan olemassa olevien sovellusten päälle -> niiden vaikutus näkyy myös uusilla tekniikoilla suorituskyky ”lisäkerroksia” muutenkin monimutkaisiin järjestelmiin XML (tiedonsiirto, DOM-parserit) ”Web-sovelluspalvelut normaaleina sovelluksina” ”tietokoneiden käyttämiä sovelluksia”, ei käyttöliittymää kutsun seurauksena tavoitteena A2A (RPC) tai B2B (dokumentit) (ei B2C) luottamuskysymykset sovellusten välillä (ulkoiset web-palvelut) Uudet välineet tukevat, vahvuutena alustaneutraalius, web-tekniikat Paisuneet odotukset, standardoinnin hajanaisuus, lastentaudit

Web-sovelluspalvelut -standardointi W3C XML-perusstandardit (Schema, Xpath, XML namespaces jne.), SOAP, arkkitehtuuri OASIS UDDI, (ebXML yhdessä YK:n kanssa, XML.org-schemavarasto), turvallisuus (SAML jne.) WS-I profiles, WS-I basic profile, testaus jne. OMG WSDL mappings (C++, CORBA …), UML Web Services JCP (Java) WS-Composite Application Framework, JAX-RPC, JAXR jne.

Integrointitarpeisiin vastaaminen Alueellinen tiedonsiirto tietojen saatavuuden ja siirron toteutus, tietoturva huomioiden dokumenttipohjaiset ratkaisut, organisaatioiden väliset ratkaisut SOAPilla turvallisuutta, integrointialustojen käyttö reititykseen jne., myös asynkroninen käyttö XML ei erityisen käytännöllistä massasiirroissa adapterikehitys, loose binding (Keskitetyt tai sovellusten väliset) palvelut käyttäjän ja ylläpitäjän työn helpottaminen (päällekkäisyyden väheneminen) välitön vastaus, kevyt toteutus moniin sovelluksiin? http+XML -> SOAP+WSDL jos välineet tukevat (työmäärä kasvaa joka lyhenteestä ilman välineitä) sovellusten muuttaminen (adapteri + oma toteutus?), sovellusten luottamus Käyttäjälle tarvittavat palvelut, käyttöliittymäintegraatio eivät web-sovelluspalveluita (osin asiaan liittyviä – Web Services for Remote Portals) voitaisiin tosin tukea esim. (Web service -kontekstipalvelun avulla) Prosessi-integraatio vaatii ”tapahtumia, operaatioita tai toiminnallisia dokumentteja” BPEL4WS yms. rakentuvat SOAP/WSDL (tai ebXML perusstandardien) päälle

HL7 international ja (web) services Common Terminology Services-määritys Messaging API Vocabulary API (vastaavuudet PlugIT-määrityksiin) sisältää esimerkit Java-työkalujen kautta WSDL-rajapinnoista ServicesBOF: servicesbof@lists.hl7.org Jo CCOW oli API-rajapinta, keskustelua siitä millä kielellä rajapinnat määriteltävä (ISO IDL vai ”HL7 IDL”) XML ITS (Implementation Technology Specifications) [Harold Solbrig, Mayo Clinic: Common Terminology Services, Presented to the HL7 Service SIG, San Diego, January 2004]

Web-sovelluspalvelut terveydenhuollon sovellusintegraatiossa Suomessa Avoimet rajapinnat HL7 CDA Avoimet rajapinnat + Open CDA: web services-valmius: SOAP 1.1 (ja 1.2) dokumentti- + tarvittaessa asynkroninen malli: viestitiedot SOAP headerissa, XML (CDA) SOAP Bodyssa sanoma + kuittaus –malli viestinvälitys, tietojen siirto (ja kopiointi?) HL7 Common Services SIG + PlugIT ”pienemmät” operaatiot, käyttäjäläheisyys, enemmän kutsuja, pienempiä tietojoukkoja PlugIT http- ja XML-määritysten päivitys SOAP/WSDL:ksi? Open CDA ja r2-sisältöjen hyödyntäminen palvelukutsut, tietojen keskitys (ja riippuvuus keskitetystä palvelusta?) Ristiinhyödyntäminen: CDA henkilötietolomake PlugITissa, Open CDA koodistosiirto PlugITissa, ”PlugIT PIDS” potilasrajapinta Open CDA:ssa, ”työpöytäintegraatio” kans. terveyshankkeessa molemmissa pohjana kansainväliset toimialan standardit Paikalliset ja kahdenväliset ratkaisut http ja XML yleisiä, selaimen käynnistykset jne. XML-RPC-toteutuksia SOAP-toteutuksia Jatko CDAr2 SerAPI-jatkohanke

Lopuksi oikean tekniikkajoukon valinta erilaisiin vaatimuksiin aluksi käyttöön pisimmälle standardoituneet osat: perus-http(s)-pohjaiset palvelut, XML, perus-SOAP ja sitten: keveys, avoimuus, nopea toteutus, ohjelmakutsut (RPC-tyyli) laajennettavuus, varmennukset, reititykset, viestit (dokumentit) SerAPI-jatkohanke: Web-sovelluspalvelut ja palveluarkkitehtuuri terveydenhuollon sovellustuotannossa ja –integraatiossa palvelut oikeaan paikkaan, WS ei sovi kaikkeen (tarpeet), migraatio tieto-, palvelu-, käyttäjä- ja prosessi-integraatio teknisten nippelien ”piilotus” vai ”opettelu”? menopeli monenlaiseen maastoon uusi tekniikkaperhe, ydin kypsymässä hyödyntää vanhoja ajatuksia (liittymät, web-tekniikat) vanhat sovellukset uusien palvelujen pohjana toimii varmimmin (ja löytyy paras välinetuki), kun pitäydytään peruspiirteissä ja -tekniikoissa

ja muutkin kuin tekninen näkökulma juha.mykkanen@uku.fi