Hajauta yhdistäen ja yhdistä hajauttaen: Web Services Janne Saarela janne.saarela@profium.com 17.12.2002 Tampereen oliopäivät Esityksen sisältö Arvolupaus Johdanto teknologioihin Yhteensopivuuden taso tänä päivänä Katsaus ohjelmistotoimittajien tarjoamaan tukeen
Web Services: määrittely Liiketoimintapohjainen määrittely: yrityksen ydinosaamisen julkaiseminen verkkoon Tekninen määrittely heterogeenisten tietojenkäsittely-ympäristöjen integrointiteknologia Vielä teknisempi määrittely XML-muotoisten viestirakenteiden siirto esim. HTTPprotokollan avulla Web Services: arvolupaus Olemassa olevien tietojärjestelmien elinkaaren pidentäminen Web Services kuorrutus tarjoaa avoimiin standardeihin perustuvan kerroksen toiminnallisuuksien aktivointiin -> ROI-laskelmien takaisinmaksuvuodet kasvavat Palvelupohjainen arkkitehtuuri sovelluksien tarjoamat toiminnallisuudet rakennetaan useita prosesseja varten -> reagointinopeus uusiin tarpeisiin paranee
UDDI Johdanto Web Services teknologioihin WSDL SOAP SOAP Simple Object Access Protocol (SOAP) esitelty alun perin vuonna 1998. V1.0: DevelopMentor ja Microsoft edistivät IETF:n kautta RFCmuotoisina V1.1: DevelopMentor, Microsoft, Lotus, Userland ja IBM lähetetty Web-konsortiolle (W3C) ja siitä on tullut nk. NOTE-määrittely NOTE = määrittely, joka ei ole standardi ja jota konsortio ei aktiivisesti promotoi Web-konsortio on vuoden 2000 lopussa perustanut oman työryhmän, joka tekisi SOAP:ista avoimen teknologian XML Protocol Working Group (XMLP) tavoitteena SOAP V1.2 http://www.w3.org/tr/soap12-part1 http://www.w3.org/tr/soap12-part2
SOAP SOAP on XML-viestirakenteinen sovellusten väliseen kommunikointiin kehitetty protokolla SOAP-viestejä voi kuljettaa eri protokollilla HTTP yleisin toteutustapa tällä hetkellä SOAP:in Envelope-rakenne sallii sovellusten päättää mitä tietoa viesteissä kuljetetaan. Ei-XML muotoinen sisältö hallitaan SOAP with Attachments lisämäärittelyn avulla http://www.w3.org/tr/soap-attachments Esimerkki Sovellus voi tehdä esim. nosto-operaation taustajärjestelmässä DB1 käyttämällä HTTPprotokollaa SOAP/HTTP DB1
Oikeamman elämän esimerkki Esimerkki: tilisiirto kahden pankin Web Services järjestelmän välillä kaksi tietokantaa ja kaksi sovelluspalvelinta esim. J2EE/Oracle ja.net/sql Server Tilisiirtopalvelun tulisi kyetä tekemään nosto toisesta tietokannasta ja tekemään pano toiseen tietokantaan. SOAP (nosto) DB1 Internet SOAP (pano) DB2 SOAP ja transaktiot SOAP ei tällä hetkellä tarjoa tukea transaktiolle Haasteet tällä hetkellä atomisuus ja isolaatio miten DB1 tietää että sinne tehty nosto-operaatio oli transaktioon sidottu? mistä DB1 tietää milloin sinne tehty nosto-operaatio saa näkyä muille sovelluksille? ja sama DB2:lle...
Transaktiomalli käytännössä 1. tilisiirto 8. ack 2. begin transaction 3. tee nosto 6. commit phase 1 7. commit phase 2 4. begin transaction 5. tee pano 6. commit phase 1 begin commit1 commit2 rollback rollback DB1 begin commit1 commit2 rollback rollback DB2 7. commit phase 2 WSDL Web Service Description Language (WSDL) määrittelyn takana ovat Microsoft ja IBM Määrittelyn versiot 1.0 ja 1.1 on lähetetty Web-konsortiolle (W3C) ja niistä on tullut nk. NOTE-määrittelyjä määrittelyjä, jotka eivät ole standardeja ja joita konsortio ei aktiivisesti promotoi Web-konsortio on vuoden 2002 alussa perustanut oman työryhmän, joka tekee WSDL-kielestä avoimen standardin. Web Services Description Working Group Tavoiteaikataulu lopulliselle määrittelylle: toukokuu 2003 http://www.w3.org/tr/wsdl
WSDL (jatkuu) WSDL-dokumentti on XML-pohjainen sisältää sekä abstraktin että vähemmän abstraktin tason määrittelyjä: protokolla- ja suoritusympäristöriippumattomia: tietotyypit viestit portit protokolla- ja suoritusympäristöriippuvia: sidonnat porteista protokolliin sidontojen yhdistäminen URIosoitettuihin palveluihin WSDL-esimerkki suomalainen postinumero Client XML XML liukuluku välillä [-60,60] Oheinen esimerkki kuvaa RPC-muotoisen Web Services palvelun, jonka voi esittää WSDLmuodossa Lämpötilapalvelu
WSDL käsitteellisesti Composite XML HTTP WSDL Client Server UDDI Universal Description, Discovery, and Integration (UDDI) määrittelyn takana olivat alunperin Microsoft, IBM ja Ariba UDDI 1.0 syyskuu 2000 UDDI 2.0 kesäkuu 2001 UDDI 3.0 heinäkuu 2002 UDDI-työ on siirretty OASIS-organisaation alle jatkotyötä/standardointia varten
UDDI: toimintaperiaate 1. Uusi yritys rekisteröi palvelunsa johonkin julkiseen UDDIpalvelimeen 2. Julkiset palvelimet replikoivat palvelukuvauksia päivittäin toistensa välillä 3. Palveluja voi hakea mistä tahansa palvelimesta 2 Julkinen Internet 3 1 Private UDDI: toimintaperiaate 1. Yrityksellä on palomuurin takana yksi UDDIpalvelin, johon taustajärjestelmien palvelut rekisteröidään. 2. Tästä palvelimesta voidaan hakea keskitetysti yrityksen ITjärjestelmissä sijaitsevia palveluja. 1 2
UDDI (jatkuu) Palvelujen luokittelu jaettu karkeasti kolmeen: white pages tietoa yrityksestä/palveluntarjoajasta: nimi, yhteystiedot, kuvaus, tunnistin (DUNS, pörssin kaupankäyntikoodi,...) yellow pages toimialaluokittelu: NAICS (US), UN/SPSC (ECMA) geograafinen luokittelu: ISO 3166 green pages palvelun tekniset tiedot: miten palvelut ryhmitellään ja missä ne sijaitsevat Yhteensopivuuden taso tänä päivänä
SOAP-ongelmia kolmella tasolla 1. Kuljetustaso SOAPAction attribuutin käytössä eroavaisuuksia arvo on asetettu tai arvo on asetettu tyhjäksi merkkijonoksi tai koko attribuutti puuttuu Jotkut SOAP-palvelinpään ohjelmistot käynnistävät toiminnallisuuksia tämän attribuutin mukaan ja jotkut eivät Esim. SOAPAction: gettemperature SOAP-ongelmia kolmella tasolla 2. XML-taso Unicode-standardin käyttö XML:n yhteydessä on harvinaisen hyvin kuvattu UTF-8 ja UTF-16 ovat minimivaatimuksia XMLprosessoreille Nk. Byte-Order-Mark (BOM) on pakollinen UTF-16 koodatuissa XML-dokumenteissa siis big vs. little indian koodaus SOAP-toteutuksissa jotkut toteutukset käyttävät BOM:ia myös UTF-8:n yhteydessä ja jotkut eivät
SOAP-ongelmia kolmella tasolla 3. SOAP-taso jotkin SOAP-prosessorit eivät ymmärrä WSDL-kuvauksia, tarvitsevat tyyppi-informaation SOAP-viestissä kulkevien rakenteiden sitomiseksi natiivitietotyypeiksi. toiset taas ymmärtävät eivätkä eksplisiittisesti esitä tietotyyppejä viestirakenteissa. tyyppi-informaation voi indikoida xsi:type attribuutilla SOAP-viestissä <SOAP:Envelope xmlns:soap="soap-uri"> <SOAP:Body SOAP:encodingStyle="soap-enc-uri"> <my:gettemperature xmlns:my="uri"> <postalcode>02600</postalcode> </my:gettemperature> </SOAP:Body> <SOAP:Envelope> Ohjelmistotoimittajien tarjoaman tuen taso
SOAP-ohjelmistotuen tilanne markkinoilla Tuki SOAP V1.1:lle on todella laaja. Puhutaan ehkä n. 50-100 toteutuksesta, joista suuri osa kaupallisia toteutuksia eikä vain akateemisia proof-ofconcepteja. Nähtäväksi jää kuinka paljon W3C muuttaa SOAP V1.1:tä SOAP V1.2:ssa V1.2:sta on 5 jonkin tasoista referenssitoteutusta WSDL-ohjelmistotuen tilanne markkinoilla Kehitysympäristöjä: Altova: XML Spy 4.4, 5.0 BEA: WebLogic Workshop 7.0 Borland: JBuilder + Web Services Kit Cape Clear: CapeStudio ja CapeConnect 3 IBM: WebSphere SDK for Web Services, WebSphere Studio Application Developer Microsoft: Visual Studio.NET Sun: ONE Studio 7
UDDI-ohjelmistotuen tilanne markkinoilla Kehitystyökaluja CapeConnect, GLUE, juddi, Systinet WASP, IONA Palvelimia Fujitsu, IBM, Microsoft, Sun http://www.uddi.org/solutions.html Yhteenveto Arvolupaus Johdanto teknologioihin Yhteensopivuuden taso tänä päivänä Katsaus ohjelmistotoimittajien tarjoamaan tukeen
Yhteystiedot Janne Saarela Profium Oy Lars Sonckin kaari 12 02600 Espoo Tel. +358 (0)9 855 98 000 Fax. +358 (0)9 855 98 002 Email. janne.saarela@profium.com Internet. www.profium.com