Luento 8: XML-tuki ohjelmointikielissä & Web-palvelut



Samankaltaiset tiedostot
HOJ J2EE & EJB & SOAP &...

SOAPin nimen Object on harhaanjohtava, koska SOAPissa ei ole objektiviittauksia. Tähän ja muihin SOAPin puutteisiin palataan niin ikään myöhemmin.

HSMT J2EE & EJB & SOAP &...

Hohde Consulting 2004

Järjestelmäarkkitehtuuri (TK081702)

Hajauta yhdistäen ja yhdistä hajauttaen: Web Services

Tiedonsiirto- ja rajapintastandardit

X-Road ja WFS-rajapinnat, uudet APIt. Pekka Latvala , KaPA ja paikkatietoinfrastruktuurin kärkiteeman työpaja

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

SOAP protokollan hyödyntäminen PHPohjelmoinnissa

Luento 12: XML ja metatieto

Web-sovelluksen laajentaminen ulkoisilla webpalveluilla

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Web-palvelukonsepti tarjoaa yhden tavan toteuttaa SOA. Tämä tapa perustuu Web-palvelustandardien käyttöön: palvelut kuvataan WSDL-kielen avulla ja

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Julkinen sanomarajapinta ja

Luento 7: XML-ohjelmointirajapinnat

Omat Lähdöt ohjelmointirajapinta: Versio 1.01

Web-palveluiden alusta Axis2

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Pilottipalvelun esittely johtopäätökset

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Hohde Consulting 2004

Paikkatiedot palveluväylässä kehityksen tilanne Väylän varrelta - Kansallisen palveluväylän kehitystilanne -seminaari

Harri Kaukovuo Senior Sales Consultant Technology Sales Oracle Finland Oy

Sovellusarkkitehtuurit

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Sisällys. Valtion tietotekniikan rajapintasuosituksia. XML:n rooleja sähköisen asioinnin tavoitearkkitehtuurissa. dbroker - asiointialusta

K U U L A L A A K E R I LUOTTAMUKSELLINEN 1(6)

M. Merikanto 2012 XML. Merkkauskieli, osa 2

XML johdanto, uusimmat standardit ja kehitys

.NET ajoympäristö. Juha Järvensivu 2007

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Visma Nova Webservice Versio 1.1 /

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Tekstiviestipalvelun rajapintakuvaus

sertifikaattiratkaisu Apitamopki

Muutokset suoran sanoma-asioinnin webservicepalvelun

6 XML-työkalut 1. 6 XML-työkalut

Ohjelmistojen integroinnille on tunnetusti tarvetta ja tämä tarve on yhä kasvamassa. Asiaa voidaan tarkastella sekä ohjelmistoteknisestä näkökulmasta

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

in condition monitoring

Attribuutti-kyselypalvelu

Palvelukuvaukset ja niiden käyttö palvelujen toteutuksessa. Seminaarityö Tom Bertell

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

1. Olio-ohjelmointi 1.1

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

3 Verkkosaavutettavuuden tekniset perusteet

OHJ-5201 Web-palveluiden toteutustekniikat. Kurssisisällöstä. Tarja Systä

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Luento 3: Tietorakenteiden esittäminen

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Yksi hyvä tapa tutustua WSDL- kieleen ja oppia sitä on käydä läpi esimerkkejä.

ohjelman arkkitehtuurista.

Palveluväylä tekninen työpaja

10 Nykyaikainen WWW-arkkitehtuuri

Tehtävä 2: Tietoliikenneprotokolla

Sonera content gateway webservice-rajapinnan ohjelmointi

arvostelija OSDA ja UDDI palveluhakemistoina.

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Ohjelmoinnin peruskurssien laaja oppimäärä


Valppaan asennus- ja käyttöohje

Ohjelmoinnin peruskurssien laaja oppimäärä

Paikkatiedot palveluväylässä -hankkeen tilannekatsaus Lassi Lehto

W3C, Web-teknologiat ja XML

Johdatus rakenteisiin dokumentteihin

P e d a c o d e ohjelmointikoulutus verkossa

Web-palvelun toteuttaminen.net-alustalla

Tekninen rajapinta - Soveltamisohje Kansallisen tulorekisterin perustamishanke

Sosiaalihuollon asiakastiedon arkiston validointipalvelu. Käyttöohje

Ajankohtaista Ilmoitin.fi:stä

OnniSMS Rajapintakuvaus v1.1

Finnvalli Web Services. Pieter Starmans

Hintatiedotus ja tietojen välitys. Loppuraportti

XML ja Web Services update

Viimeinen rajoite (hypermedia as the engine of application state) tarkoittaa käytännössä sitä, että palvelimelta saadut vastaukset sisältävät URIt

Välineet ja Web Services - WSDL-dokumentin generointi koodista ja päinvastoin Versio 1.0

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Tietotekniikan valintakoe

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Lisää reititystä. Tietokoneverkot 2009 (4 op) Syksy Futurice Oy. Lisää reititystä. Jaakko Kangasharju

4. Lausekielinen ohjelmointi 4.1

Lisää reititystä. Tietokoneverkot 2008 (4 op) Syksy Teknillinen korkeakoulu. Lisää reititystä. Jaakko Kangasharju

WEB SERVICES RAJAPINTA SAMLINKIN TEKNINEN RAJAPINTAKUVAUS OHJELMISTOTALOILLE

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Tässä kertauksena SOA ja palvelu.

Microsoft Visual J++ ohjelmointiympäristö

Integraatioratkaisu joukkoviestintäverkkojen esittämiseen paikkatietojärjestelmässä

Transkriptio:

Luento 8: XML-tuki ohjelmointikielissä & Web-palvelut AS-0.110 XML-kuvauskielten perusteet Janne Kalliola 1 XML-tuki ohjelmointikielissä ja Web-palvelut XML-tuki ohjelmointikielissä Java PHP C, C++ Perl.NET, C#, Visual Basic Muut kielet Web-palvelut SOAP WSDL UDDI Web-palvelujen käyttö 2 1

XML-tuki ohjelmointikielissä Kaikissa olennaisissa ohjelmointikielissä on mahdollisuus käyttää XML-dokumentteja perustasolla tuki perustuu yleensä DOM- ja SAX-malleihin näiden lisäksi useissa kielissä on korkeamman tason rajapintoja, esimerkiksi olioiden sarjallistamiseksi XMLdokumenteiksi ja takaisn 3 Java Javassa lienee paras saatavilla oleva XML-tuki useat standardi- ja de-facto-standardi-api:t toteutettu Kirjastojen lisäksi Javalla on toteutettu useita hyviä XMLsovelluksia FOP - XSL-FO-dokumenttien käsittelyyn Batik SVG-kuvien näyttämiseen, luontiin ja manipulointiin Cocoon dynaamisten julkaisujärjestelmien ja WWWsivustojen rakentamiseen JSP-sivut ja servletit voivat käyttää samoja kirjastoja ja ohjelmistopaketteja kuin normaalitkin Java-ohjelmat 4 2

PHP PHP on skriptipohjainen kieli dynaamisten www-sivujen ja sivustojen laadintaan kielen rakenteet sijoitetaan yleensä HTML-koodin keskellä PHP:lla voi tuottaa myös dynaamisia XML-dokumentteja PHP:ssa on hyvä tuki HTTP-liikenteelle ja tietokannoille PHP on yleisimpiä WWW-hotelleissa tarjottavia ohjelmointiympäristöjä PHP:ssa on useita erilaisia tapoja muokata ja käsitellä XML-dokumentteja osa moduuleista on vielä kokeellisia ja kaikkia ei ole tarjolla hotelleissa PHP 5 selkeyttää tilannetta 5 C Koska C-kieli ei ole oliopohjainen, DOM- ja SAXmäärittelyt eivät kelpaa sellaisenaan XML-peruskäsittely löytyy kirjastoista libxml ja libxml2 rajapinnat muistuttavat DOM-rajapintoja myös SAX-tyyliset rajapinnat ovat olemassa Perustuen lisäksi C:lle löytyy suuri joukko erikoistuneempia kirjastoja libxsl XSLT-tyylisivujen käyttö xmlrpc-c XML-RPC -kutsut Kaikki PHP:n moduulit pohjautuvat näihin kirjastoihin moduuli tarjoaa yleensä osajoukon kirjaston kyvyistä kaikki PHP:lle tarjolla oleva löytyy siis myös C:lle 6 3

C++ DOM-rajapinta löytyy C++ esimerkiksi Apache Foundationin Xerces C++ sama toiminnallisuus kuin Java-versiossa myös Xalan C++ XSLT:ta varten on olemassa SOAP on tarjolla esimerkiksi EasySoap++ -kirjastolla on olemassa muitakin toteutuksia C++ voi käyttää myös kaikkia C:n kirjastoja 7 Perl Perlin XML-tuki pohjautuu PHP:n tavoin moduuleihin sama toiminnallisuus on saatettu toteuttaa eri tavoilla eri moduuleihin Perliin löytyy ainakin viisi erilaista XML-jäsennintä suureen osaan C-kirjastoista löytyy myös Perl-rajapinta esimerkiksi libxml tai XSLT-kirjastot myös SOAP on tuettu 8 4

.NET.NET on Microsoftin määrittelemä viitekehys, joka käyttää Web-palveluita järjestelmien kytkentään.net on tarjolla sekä kehitystyökaluina (Visual Studio yms.) ja palvelimina (IIS ja Exchange) kaikki Microsoftin ohjelmointiympäristöt voivat käyttää.netpalveluja Visual Basic, C++ ja C# Microsoft tarjoaa valmiit kirjastot.net ei ole suljettu palveluja käytetään normaaleilla SOAP-mekanismeilla Java ja Unix-ohjelmat voivat kytkeytyä.net Web-palveluihin ja päinvastoin 9 C# C# on Microsoftin kehittämä uusi ohjelmointikieli muistuttaa ominaisuuksiltaan Javaa, tiettyjä asioita on parannettu C#-ohjelmat käännetään Common Language Infrastructureen (CLI) ja ne suoritetaan CLI-virtuaalikoneessa CLI-ympäristöön voidaan kääntää myös muillakin ohjelmointikielillä C# sisältää sisäisen XML-tuen System.XML joukossa (assembly) tuki DOM- ja SAX-tyyliselle jäsennykselle tapahtumamallin sijaan käytetään pyyntömallia (pull mechanism) XML:n jäsentämiseen sama malli löytyy myös Javalle (XPP2) samanlaisia kirjastoja ei ole muissa kielissä 10 5

Visual Basic Visual Basicia käytetään laajalti Windows-ympäristöissä piilottaa järjestelmien monimutkaisuudet ja ohjelmoija voi keskittyä sovellukseen liittyvien ongelmien ratkontaan ohjelmat voidaan suorittaa joko palvelimissa tai omina sovelluksinaan Visual Basicista löytyy sidonnat.net-ympäristöön MSXML-kirjaston avulla Visual Basic voi käyttää DOM- ja SAX-rajapintoja myös XSLT-tuki on samassa kirjastossa SOAP-tuki löytyy erikseen 11 Muut kielet Suuressa osassa kielistä on sidonta joukkoon C-kielen XML-kirjastoja esimerkiksi Python, Pascal, Ruby, Tcl Aina koko kirjaston toiminnallisuus ei ole käytettävissä riippuu osittain myös kielen ilmaisuvoimasta kaikkia C:n rakenteita ei voida helposti siirtää rajoitetummille kielille osoittimet, structit ja unionit 12 6

Web-palvelut 13 Web-palvelut Web-palveluissa kaksi sovellusta vaihtaa tietoa verkon yli käyttäen hyväkseen XML:a ja jotakin yleiskäyttöistä protokollaa SOAP määrittää Web-palvelujen toimintamallin WSDL määrittää palveluiden rajapinnan Näiden lisäksi voidaan puhua laajennetusti Webpalveluista, joissa pyyntö lähetetään normaalina HTTP GET-pyyntö ja vastaus saadaan XML-dokumenttina XML over HTTP 14 7

SOAP Simple Object Access Protocol on XML-pohjainen protokolla koneiden väliseen kommunikointiin tietoverkoissa SOAP on W3C:n kehittämä ja tällä hetkellä suosituksen versio on 1.2 15 Sidonta protokollaan SOAP ei määritä mitään tiettyä protokollaa viestien siirtämiseen yleensä käytetään HTTP:ta SOAP-viestintä sidotaan tiettyyn protokollaan (binding) tämä sidonta määrittää, kuinka viestit siirretään verkon solmulta toiselle SOAP-viesti voi kulkea usean SOAP-solmun kautta SOAP määrittää joukon elementtejä ja attribuutteja viestinnän kontrollointiin 16 8

SOAP-viesti ja -kirjekuori SOAP-viesti (message) on XML-dokumentti, joka lähetetään sovellukselta toiselle yleensä verkon yli viesti on yksisuuntainen, toinen sovelluksista (SOAP node) on lähettäjä (SOAP sender) ja toinen vastaanottaja (SOAP receiver) SOAP-viesti lähetetään SOAP-kirjekuoressa (envelope) kirjekuori sisältää valinnaiset otsikkotiedot (SOAP header) ja itse viestin (SOAP body) 17 Kirjekuoren koodaus SOAP-kirjekuori on XML-dokumentti, jonka juurielementti on env:envelope nimiavaruuden URI on http://www.w3.org/2003/05/soapenvelope SOAP-otsikot sijoitetaan elementin env:header sisään Vastaavasti, viesti on elementin env:body sisässä 18 9

Esimerkki kirjekuoresta <?xml version='1.0'?> <env:envelope xmlns:env="http://www.w3.org/ 2003/05/soap-envelope"> <env:header>... </env:header> <env:body>... </env:body> </env:envelope> 19 Header ja body SOAP-otsikko mahdollistaa sovelluksen lähettää itse viestistä riippumatonta tietoa vastaanottajalle tällä tavalla voidaan koodata esimerkiksi sovelluskohtaisia toimintaohjeita otsikkotiedoissa voidaan käyttää omaa XML-pohjaista syntaksia SOAP-viesti sisältää XML-sirpaleen, jossa määritellään viestin sisältö yleensä omassa nimiavaruudessaan 20 10

SOAP-viestien vaihto Yksisuuntaiselle kommunikaatiolla ei tee käytännössä juuri koskaan mitään tämän takia keskustelevat sovellukset ovat sekä lähettäjiä että vastaanottajia SOAP-viestissä saapuvaan kyselyyn tai pyyntöön vastataan erillisessä SOAP-viestissä lähetettävällä vastauksella 21 Virheviestit SOAP määrittää myös toimintoja virhetilanteisiin koska SOAP ei ota kantaa käytettyyn protokollaan, kaikkia virhetilanteita ei välttämättä edes huomata järjestelmien täytyy kyetä toimimaan epäluotettavassa ympäristössä tai protokolla täytyy vaihtaa luotettavampaan Virhetilanne kirjataan viestin sisään elementillä env:fault, jonka sisällä täytyy olla elementit env:code ja env:reason env:code määrittää virhekoodin env:reason kertoo virheen syyn näiden lisäksi on mahdollista käyttää elementtiä env:detail kuvaamaan sovelluskohtaista tietoa env:node voi kertoa sovelluksen URI:n 22 11

Esimerkki virheviestistä <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:rpc='http://www.w3.org/2003/05/soap-rpc'> <env:body> <env:fault> <env:code> <env:value>env:sender</env:value> <env:subcode> <env:value>rpc:badarguments</env:value> </env:subcode> </env:code> <env:reason> <env:text xml:lang="en-us">processing error</env:text> </env:reason> <env:detail> <e:myfaultdetails xmlns:e="http://travel.example.org/faults"> <e:message code="999">name does not match card</e:message> </e:myfaultdetails> </env:detail> </env:fault> </env:body> </env:envelope> 23 SOAP:n käyttö SOAP-viestejä ei yleensä tulkita itse, vaan käytetään erillistä SOAP-kirjastoa lukee viestin sisään ja tarjoaa sen sisällön jossakin tietorakenteessa ja vastaavasti osaa muuntaa tietorakenteita SOAP-viesteiksi kirjastoissa on tuki myös virhetilanteille 24 12

WSDL Web Serviced Description Language (WSDL) on kieli, jolla voidaan määrittää Web-palveluiden rajapintoja tässä Web-palvelulla viitataan konekäytettävään palveluun (web services) WSDL sisältää rajapinnan kuvauksen lisäksi tietoa palvelun semantiikasta ja käytännön asioista (kytkeytymistapa, palvelun osoite) WSDL-määrityksen avulla Web-palvelun rajapintaa vastaan voidaan laatia sovellus sovellus kytkeytyy palveluun ja käyttää sen tarjoamia rajapintoja 25 Web-palvelun määrittäminen Yksi WSDL-dokumentti voi määrittää useita Webpalveluita jokainen palvelu määritetään elementillä porttype palvelun yhteydessä määritetään käytössä olevat operaatiot ja niihin liittyvät viestit Operaatio voi olla yksi- tai kaksisuuntainen one-way operaatio ottaa vastaan viestejä, mutta ei vastaa request-response operaatio ottaa vastaan viestejä ja vastaa niihin solicit-response operaatio voi lähettää viestin ja odottaa vastausta notification operaatio voi lähettää viestin ja ei odota vastausta 26 13

Esimerkki yksisuuntaista palvelusta <message name="newtermvalues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <porttype name="glossaryterms"> <operation name="setterm"> <input name="newterm" message="newtermvalues"/> </operation> </porttype > 27 Esimerkki kaksisuuntaisesta palvelusta <message name="gettermrequest"> <part name="term" type="xs:string"/> </message> <message name="gettermresponse"> <part name="value" type="xs:string"/> </message> <porttype name="glossaryterms"> <operation name="getterm"> <input message="gettermrequest"/> <output message="gettermresponse"/> </operation> </porttype> 28 14

SOAP-sidonta Rajapinta kytketään SOAP-malliin käyttämällä elementtiä binding jokaista operaatiota varten täytyy määrittää SOAP-toiminto samalla määritetään kuinka toimintoon liittyvät viestit koodataan SOAP-viestin sisään tässä yhteydessä määritetään myös käytettävä siirtoprotokolla palvelun URI asetetaan 29 Esimerkki sidonnasta <binding type="glossaryterms" name="b1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http " /> <operation> <soap:operation soapaction="http://example.com/getterm"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> 30 15

UDDI Universal Description, Discovery and Integration on luettelopalvelu, jonne voidaan rekisteröidä Web-palveluita UDDI sisältää Web-palveluiden WSDL-kuvaukset Periaatteessa voisi olla olemassa julkisia UDDI-palvelimia, joista voisi pyytää Web-palveluiden osoitteita ja rajapintakuvauksia käytännössä nykyään Web-palveluita ei rekisteröidä (ainakaan julkisesti) UDDI:in sen sijaan, Web-palvelun dokumentaatio antaa ohjeet palveluun kytkeytymiseen 31 Web-palvelujen käyttö Käytännössä Web-palvelut toteutuaan puoliautomaattisesti generoimalla koodia Web-palvelun WSDL-kuvauksen pohjalta laaditaan valmis toteutus, joka pystyy lähettämään ja vastaanottamaan SOAPviestejä tämä toteutus käyttää sisäisesti edellisen kalvon kirjastoa jokainen WSDL:ssa kuvattu palvelu muuntuu metodiksi tätä metodia voidaan kutsua ohjelmassa normaalisti SOAP:n käyttö saattaa lisätä joitakin poikkeustilanteita, joita ei normaalisti olisi Web-palveluun liittymisen voi tehdä myös käsin kaikille ohjelmointikielille tai ympäristöille ei ole välttämättä automaattista generointia tai muutakaan SOAP-tukea 32 16

Web-palvelujen laadinta Vastaavasti Web-palvelujen laadinnassa ei tarvitse enää kirjoittaa WSDL-dokumenttia sovellukseen laaditaan normaali rajapinta ohjelmointikielen omilla primitiiveillä tämä rajapinta muunnetaan SOAP-rajapinnaksi erillisellä generaattorilla tuotetaan WSDL-kuvaus rakennetaan komponentti, joka tulkitsee SOAP-viestejä ja kutsuu niiden pohjalta rajapinnan metodeja Mikään ei tosin estä toteuttamasta kaikkea käsin 33 Kysymyksiä? Kommentteja? 34 17