OHJ-5201 Web-palveluiden toteutustekniikat Kurssisisällöstä Tarja Systä 1
Yleistä Esitietovaatimukset OHJ-1400 Olio-ohjelmoinnin peruskurssi (pakollinen) OHJ-5010 Hajautettujen järjestelmien perusteet (suositus) OHJ-5100 Seittiohjelmointi (suositus) MATHM-47150 Rakenteiset dokumentit (mat, suositus) Muuta harjoitustöiden suorittaminen edellyttää Java-ohjelmointikielen tuntemusta kurssilla ei opeteta XML-kieltä! XML-kielen ja kielioppimääritysten perusasioita kerrataan lyhyesti XML-kieltä opetetaan esimerkiksi matematiikan laitoksen järjestämällä Rakenteiset dokumentit kurssilla Kurssimateriaali koostuu kalvoista (engl.) sekä niihin liitetystä selittävästä lisämateriaalista (suom.) 2 Kurssilla käydään läpi kertausluonteisesti perusteet XML-kielestä ja kielioppimääritysten antamisesta XML Schema kielen avulla. Kertaus ei kuitenkaan ole riittävä XML-kielen perusteelliseksi oppimiseksi. Suositeltava tapa tutustua XML-standardiperheeseen on suorittaa matematiikan laitoksen järjestämä kurssi Rakenteiset dokumentit.
Yleiskatsaus kurssin sisältöön Johdanto yleistä merkkauskielistä perusteet: XML and XML Schema XML-pohjaisen tiedon prosessointi Vilkaisu XPath-kieleen XML-pohjainen viestinvälitys ja XML-pohjaisen tiedon tallentaminen XML-pohjaisen viestinvälityksen eduista ja haitoista turvallinen viestinvälitys verkossa XML-pohjainen tieto ja tietokannat XML tiedonsiirtoformaattina (esim. XMI) Kurssin sisältö keskittyy XML-pohjaisiin menetelmiin, jotka tukevat sovellusten välistä integraatiota ja kommunikointia Kurssin sisältö keskittyy mahdollisesti Internetiä hyödyntäviin XML-pohjaisiin menetelmiin, jotka tukevat sovellusten välistä integraatiota ja kommunikointia. Sovellusten integroiminen on perinteisesti ollut vaikeaa ja kallista. Erityisesti liiketoiminnan kannalta kriittinen tiedonsiirto edellyttää esimerkiksi tietoturvan kannalta asioita, jotka tekevät usein integraation ja tiedonsiirron entistäkin monimutkaisemmaksi ja mahdollisesti myös rajoittuneemmaksi tai hitaammaksi. Kurssilla käsitellään sovellusten välistä integraatiota ja tiedonsiirtoa eri näkökulmista, keskittyen Web-palveluihin ja niiden toteuttamiseen. Kurssilla käsitellään erityisesti sellaisia XML-pohjaisia kieliä, jotka ovat oleellisia XML-pohjaisen tiedon ohjelmallisen käsittelyn kannalta ja näin ollen myös hyödyllisiä ja yleisesti käytettyjä erilaisissa ohjelmistointegraatiota tukevissa toiminnoissa. 3 Löyhä integraatio toteutetaan usein sopimalla yhteisestä tiedonsiirtoformaatista. Tämä on melko helppo ratkaisu, mutta ei sovellu läheskään kaikkiin tarpeisiin. Yhteisiä tiedonsiirtoformaatteja käytetään tosin myös tiiviimmässä sovellusten välisessä integraatiossa. Verkon ja erityisesti Internetin käyttö edellyttää sovellusten väliseltä kommunikoinnilta viestien prosessoinnin lisäksi esimerkiksi tietoturvaa koskevien vaatimusten toteuttamista. Tämä on erityisen tärkeää liiketoiminnan kannalta kriittisessä tiedonvälityksessä. Kurssilla käsitellään esimerkiksi digitaalisia allekirjoituksia ja tiedon kryptausta tukevia menetelmiä, joita esimerkiksi uusimmat Web-palvelujen toteuttamista tukevista työkaluista jo tukevat (ainakin osin). Joissain tapauksissa joko tarjottava palvelu itsessään on tietovarasto (esim. tietokanta) tai ko. palvelu käyttää tietokantaa tiedon varastoimiseen. XMLpohjaisen tiedon tallettaminen esimerkiksi relaatiotietokantaan ei kuitenkaan ole aina helppoa. Myös näitä ongelmia ja eri tietokantaratkaisuja käsitellään kurssilla.
Yleiskatsaus kurssin sisältöön Web-palvelut (Web services) ja palveluorientoituneet arkkitehtuurit palveluorientoitunut arkkitehtuuri (SOA) palveluiden arkkitehtuurista ja suunnittelusta palveluiden toteutuksesta standardit ja teknologiat palveluiden orkestrointi legacy-järjestelmät ja niiden käyttö Web-palveluina vaihtoehtoisia näkemyksiä Web-palveluihin: REST ja ebxml Kurssin sisältö keskittyy XML-pohjaisiin menetelmiin, jotka tukevat sovellusten välistä integraatiota ja kommunikointia 4 Yleisin skenaario Web-palvelun toteuttamiseksi on muuntaa olemassa oleva ohjelmisto toimimaan palveluna. Siihen saattaa riittää kyseisen ns. legacy-ohjelmiston paketointi ja sopivan rajapinnan määrittäminen. Web-palvelun arkkitehtuurin kannalta on yleisestikin hyödyllistä eriyttää varsinainen liiketoimintalogiikka (business logic layer) interaktion toteutuksesta (interaction layer), myös silloin kun koko palvelu rakennetaan alusta alkaen. Näihin ja muihin Web-palvelun arkkitehtuuria ja suunnittelua koskeviin asioihin esitetään näkökulmia tällä kurssilla. REST ja ebxml ovat yleiselle Web-palvelukonseptille vaihtoehtoisia tai rinnakkaisia näkemyksiä. REST on alun perin kehitetty arkkitehtuurityyliksi, joka tähtää yhteentoimivuuden säilyttämiseen sellaisissa hajautetuissa (hypermedia)järjestelmissä, joissa eri osapuolet kehittyvät ja muuttuvat itsenäisesti toisistaan riippumatta. Myöhemmin se on enenevissä määrin otettu käyttöön vaihtoehtoiena tapana toteuttaa löyhästi sidottuja palvelupohjaisia järjestelmiä. ebxml lähtee puolestaan selkeämmin liiketoimintaprosesseista ja se tukee paremmin sopimuspohjaista business-tobusiness (B2B) kommunikaatiota kuin yleinen Web-palvelukonsepti. REST ja ebxml esitellään kurssilla lyhyesti.
Vaatimukset Tentti (18 p.) Harjoitustyöt (18 p.) Harjoitustyö 1 DOM ja SAX rajapintoihin tutustuminen Harjoitustyö 2 Web-palvelun asiakassovelluksen toteuttaminen Harjoitustyö 3 Web-palvelun toteuttaminen Web-palveluiden tietoturva 5 Kurssi on hyvin harjoitustyöpainotteinen. Kurssin harjoitustyöt eivät ole pakollisia, mutta käytännössä läpi pääseminen edellyttää ainakin kahden harjoitustyön tekemistä. Hyvän arvosanan saamiseksi kannattaa tehdä kaikki kolme harjoitustyötä. Harjoitustöiden työmäärät ja vaikeustasot vaihtelevat. Ensimmäisessä harjoitustyössä toteutetaan tietopalvelu Web-sovellukselle käyttäen XML:n käsittelyn perustekniikoita ja rajapintoja. Tässä harjoitustyössä tutustutaan DOM ja SAX -jäsentäjiin, yksinkertaisten XPath-hakulausekkeiden ohjelmalliseen käsittelyyn sekä XML Schema -kieliopin validointiin. Toisessa harjoitustyössä tutustutaan Web-palveluita käyttäviin asiakassovelluksiin ja kolmannessa puolestaan Web-palveluiden toteuttamiseen. Lisäinformaatiota harjoitustöistä löytyy kurssin verkkosivulta.
1) XML ja XML Schema esitietoja esitellään kertauksenomaisesti 2) Merkkauskielet ja johdanto XML-kieleen merkkauskielten merkitys yleensä XML:n ominaisuuksia, edut ja haitat validi ja hyvin määritelty XML-dokumentti 6 Tällä kurssilla ei opeteta XML-kieltä. Sen pääominaisuuksia käydään kuitenkin läpi kertauksenomaisesti. Myös XML-kielten määritystapoja kerrataan. Yleisimmät tavat antaa näitä kielioppimäärityksiä ovat DTD ja XML Schema.
3) XML-pohjaisen tiedon prosessointi skannaus, jäsentäminen, prosessointi Tutustuminen yleisimpiin jäsentäjäratkaisuihin, perusperiaatteet ja käyttötarkoitukset seuraavista: SAX DOM StAX XML-pohjainen tieto ja ohjelman tietorakenteet XPath 7 Kurssilla käydään läpi DOM- ja SAX-jäsentäjien käyttöä ja ominaisuuksia. Niiden käytöstä annetaan myös käytännön esimerkkejä. Nämä tiedot on hyödynnettävissä ensimmäisessä harjoitustyössä. Lisäksi tutustutaan StAXiin, joka pyrkii yhdistämään DOMin helppouden ja SAXin tehokkuuden. Joissain tapauksessa XML-pohjaisen tiedon hyödyntäminen ohjelmassa ei kuitenkaan ole aivan suoraviivaista. Näin on erityisesti silloin, kun XML-merkkauksen mukainen rakenne ja ohjelman tietorakenteet eivät vastaa toisiaan. Kurssilla käydään läpi myös XPath-kieleen, joka itsessään ei ole XML-pohjainen mutta sillä on runsaasti sovelluksia ja sitä käytetään osoittamaan XML-dokumentin eri rakenteisiin monissa muissa XML-pohjaisissa kielissä.
5) Web-palvelut ja palveluorientoituneet arkkitehtuurit Web-palveluiden idea ja visio SOA (Service-Oriented Architecture) Web-palveluiden arkkitehtuurista ja suunnittelusta palvelu- ja asiakasnäkökulmat suunnittelu- ja toteutusprosesseista työkalut 2. harjoitustyön tekemiseksi tarvittavien työkalujen ja niiden käytön esittely legacy-järjestelmien paketointi legacy-järjestelmät miksi paketointi on välttämätöntä tai se kannattaa? edellytykset ja odotukset paketoinnille huomioitavia asioita paketoinnin toteuttamisessa 8 Web-palvelukonsepti ja siihen liittyvät teknologiat muodostavat kurssin ydinaihealueen. Webpalvelukonseptin käyttöönotto on lisääntynyt viime vuosia huomattavasti. Koska konseptiin liittyvät suunnittelua tukevat menetelmät ja siihen liitettävät teknologiat ovat vielä nuoria, liittyy Webpalveluiden todelliseen käyttöön myös useita ongelmia. Palveluiden ohjelmistoarkkitehtuuria ja suunnittelua tukevat menetelmät ja ohjeet ovat esimerkiksi vielä varsin kehittymättömiä tai ne ovat usein tiettyyn toteutustapaan sidottuja. Kurssilla esitellään muutamia yleisiä ydinasioita, jotka palveluiden suunnittelussa tulee ottaa huomioon. Kurssilla esitellään toisen ja kolmannen harjoitustyön toteuttamisessa käytettäviä työkaluja ja annetaan esimerkkejä niiden käytöstä. Työkalut esitellään viikkoharjoituksissa, joissa käydään läpi myös niiden asentaminen. Web-palvelu itsessään saattaa hyvin usein olla olemassa oleva ohjelmisto, joka halutaan ottaa käyttöön tai joka halutaan integroida laajempaan kokonaisuuteen. Tällöin ko. ohjelmalle tulee tehdä Webpalvelurajapinta paketoimalla se sopivasti. Legacy-järjestelmän uudelleenkäyttö saattaa olla vaihtoehto uuden järjestelmän toteuttamiselle, jonka tulee korvata ko. vanha järjestelmä. Tällöin tulee kuitenkin arvioida esimerkiksi paketoimisen antamat hyödyt ja haitat, uuden järjestelmän rakentamiseen liittyvä työ, legacy-järjestelmän luotettavuus, odotukset legacy-järjestelmän käyttöarvosta tulevaisuudessa jne.
6) Web-palvelut ja palveluorientoituneet arkkitehtuurit (jatkuu) SOAP käyttötarkoitus ja ominaisuuksia soveltuvuus ja haitat WSDL käyttötarkoitus ja ominaisuuksia tietosisältö rekisterit yleiset vaatimukset ja ominaisuudet tiedon kategorisointi UDDI perusidea, tietosisältö ( valkoiset, keltaiset ja vihreät sivut ) APIt ongelmat 9 Web-palvelukonseptin toteuttamiseksi on käytössä kieliä, jotka ovat saavuttaneet käytännön standardin aseman. Esimerkiksi sovellusten välinen kommunikointi tapahtuu yleisimmin SOAP-kielen avulla. WSDL on taas yleisimmin käytetty kieli palveluiden etsimiseksi ja kuvaamiseksi. Kurssilla esitellään nämä kielet ja niiden syntaksit. Web-palvelukonseptin kannalta oleellisia ovat myös rekisterit. Kurssilla käydään läpi yleisiä palvelurekistereiden ominaisuuksia ja vaatimuksia. Esimerkkinä käytetään niin ikään käytännön standardin aseman saanut UDDI-rekisteri.
7) Web-palvelut ja palveluorientoituneet arkkitehtuurit (jatkuu) SOAP+WSDL+UDDI yhteensovitus konseptin tämän hetken ongelmat Palveluiden orkestrointi BPEL ja BPMN WS-I yhteisö yhteisön merkitys, idea ja tavoitteet lyhyt katsaus REST ja ebxml -konsepteihin: miten ne poikkeavat SOAP+WSDL+UDDI lähestymistavasta tai mitä ne tuovat siihen lisää? 10 Web-palvelusysteemien toteuttamisessa ei itse palveluiden ja asiakassovellusten toteuttaminen aina riitä. Usein on oleellista tukea monimutkaisempia transaktioita eli karkeasti ottaen eri palveluiden ja palvelukutsujen ketjutusta. Pääpaino Web-palvelututkimuksessa ja ko. teknikoiden kehittämisessä onkin siirtymässä tuohon suuntaan, josta käytetään myös termiä programming-in-large. Tämä termi viittaa siihen, että itse palvelut oletetaan ja niiden ajatellaan olevan tietyssä mielessä peruspalikoita, joita hyödyntäen ja joita koostamalla itse järjestelmiä kasataan. Palveluiden koostamiseen ei kurssin harjoitustöissä kuitenkaan tutustuta. Osittain käytettävien teknologioiden jatkuvan kehityksen ja niiden sallivien vaihtoehtoisten käyttötapojen vuoksi on Web-palveluiden käytössä käytännössä usein törmätty esimerkiksi yhteensopivuusongelmiin. WS-I (Web Service Interoprability) on yhteisö, joka mm. pyrkii määrittelemään oheistusta, suosituksia ja tarkennuksia esimerkiksi SOAP ja WSDL kielten käyttöön. WS-I yhteisö on saavuttanut nopeasti laajasti tukea. Esimerkiksi useimmat Web-palvelutyökalujen tuottajat ovat mukana WS-I yhteisössä ja/tai ottavat työkaluissaan WS-I:n suositukset huomioon. Kurssilla annetaan lyhyt katsaus REST ja ebxml - konsepteihin, jotka antavat jossain mielessä vaihtoehtoisen lähestymistavan Web-palvelukonseptiin. Esimerkiksi ebxml-konseptissa ja SOAP+WSDL+UDDI lähestymistavassa on kuitenkin huomattavasti yhtäläisyyksiä, vaikkakin juuri niiden eroja yleensä painotetaan. ebxml.
8) turvallisuus XML-pohjaisessa viestinvälityksessä viestinvälityksen turvallisuusominaisuudet luottamuksellisuus, koskemattomuus, autentikointi, kiistämättömyys käyttöoikeudet turvallisuusomaisuudet eri tasoilla 1. taso (kuljetusprotokollat ja mekanismit), esim. SSL 2. taso (Web-palvelujen kielet jne.), esim. WS Security, sis. esim. kielet XML Encryption ja XML Signature XML Encryption ja XML Signature kielten perusperiaate kaikkia teknisiä detaljeja ei spesifikaatioista käydä läpi 11 Liiketoiminnan kannalta kriittisissä kommunikointiskenaarioissa XML:n kaltaisen merkkipohjaisen kielen käyttö sellaisenaan sisältää turvallisuusriskejä. Digitaalisia allekirjoituksia ja kryptausmenetelmiä voidaankin käyttää turvallisen viestinvälityksen toteuttamiseksi. Webpalvelukonseptissa turvallisuus voidaan huomioida eri tasoilla: Internet-pohjainen HTTP-yhteys voidaan esimerkiksi turvata SSL:n avulla ja toisaalta SOAP-viesteihin voidaan liittää digitaalisia allekirjoituksia ja kryptattuja osioita. Kurssilla käydään läpi perusvaatimuksia ja ominaisuuksia, jotka tulee huomioida turvallisessa viestinvälityksessä. Lisäksi tutustutaan lyhyesti WS Security suositukseen, joka puolestaan käyttää esim. XML Encryption ja XML Signature -kieliä.
9) XML ja tietokannat XML-pohjaisen tiedon tallentaminen tietokantaan tietokannan valinta dokumenttikeskeinen vs. datakeskeinen tieto XML ja relaatiotietokannat ongelmalliset tyypit ja rakenteet XML-pohjaisen tiedon tallettaminen relaatiotietokantaan kun DTD/Schema määrittely on olemassa ja kun DTD/Schema määrittelyä ei ole olemassa RDBMS Schema->DTD/Schema 12 XML-pohjaisen tiedon tallettamiseksi voidaan valita erilaisia tietokantaratkaisuja. Tietokantatyypin valintaan vaikuttaa esimerkiksi se, onko talletettava tieto dokumenttikeskeistä vai datakeskeistä. Kurssilla käydään lyhyesti läpi eri tietokantatyyppivaihtoehtoja XML-pohjaisen tiedon tallettamiseksi. Lisäksi käydään hieman tarkemmin läpi ongelmia, jotka esiintyvät erityisesti talletettaessa XMLpohjaista tietoa relaatiotietokantaan. Tietokantavalinta on oleellista usein myös Web-palvelukonseptin kannalta: itse tarjottava palvelu saattaa olla tietovarasto tai palvelu saattaa käyttää tietokantaa tiedon varastoimiseen.
10) XML-pohjaiset tiedonsiirtoformaatit merkityksestä, vahvuuksista ja heikkouksista tiedonsiirtoformaatit ja esim. CASE-työkalut SOA-to-SOA -integraatiosta XMI perusperiaate (XMI, MOF, UML) tuotantosäännöt sekä niiden rooli ja käyttö XMI:n laajennettavuus käyttötarkoitukset edut ja haitat round-trip XMI:n hyödyt ja ongelmat 13 XML-pohjaisia tiedonsiirtoformaatteja on lukuisia. Tällä kurssilla käydään läpi pääpiirteittäin niiden etuja ja haittoja. Lisäksi käsitellään problematiikka, joka liittyy kahden palveluorientoituneen järjestelmän integraatioon. Tällaisessa integraatiossa oleellisessa osassa ovat eri formaattien väliset muunnokset. Lisäksi tällä kurssilla käydään esimerkkinä läpi XMI, jota käytetään esimerkiksi UML-mallien ja palveluiden orkestraatiokuvausten tallettamiseen XML-muodossa. Koska useimmat CASE-työkalut tukevat XMI:tä ja se on näin ollen tunnettu ja laajasti käytetty, on XMI oleellinen ja hyvä esimerkki tiedonsiirtoformaatista. Monet XMI:n ominaisuuksista, eduista ja heikkouksista ovat yleisiä useimmille XML-pohjaisille tiedonsiirtoformaateille.