1 / 38

Johdatus web-palveluihin

Johdatus web-palveluihin. Marko Sormunen SerAPI-projekti, HIS-yksikkö Tietotekniikkakeskus Kuopion yliopisto Marko.Sormunen@uku.fi. Osa 1... web-palvelut paperilla. Web-palvelut... mitä ne ovat?.

Télécharger la présentation

Johdatus web-palveluihin

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Johdatus web-palveluihin Marko Sormunen SerAPI-projekti, HIS-yksikkö Tietotekniikkakeskus Kuopion yliopisto Marko.Sormunen@uku.fi

  2. Osa 1... web-palvelut paperilla

  3. 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 Internet-based 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. ”

  4. 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)

  5. Web-palvelut... perusstandardit • HTTP (Hypertext Transfer Protocol) • viestien siirtoprotokolla TCP/IP:n päällä • v1.1 vuonna 1999 • XML • liittymien ja viestien kuvauskieli • v1.0 vuonna 1996 • SOAP (Simple Object Access Protocol) • viestintä web-palveluiden välillä • v1.2 vuonna 2003 • WSDL (Web Services Description Language) • web-palveluiden liittymien kuvaus • v1.2 vuonna 2003

  6. 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

  7. 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ä

  8. Web-palvelut... lisää kehitystä? • WS-I Attachments Profile –määritys • miten soveltaa SOAP Attachments –määritystä liitetiedostojen lähettämiseen • WS-I Security Basic Profile -määritys • miten soveltaa SOAP-viestien allekirjoitus ja salaus WS-Security ja WS-Encryption -standardeja • Tulevaisuudessa toivottavasti ”WS-I Business Process Profile”

  9. Web-palvelut... standardeja • W3C:n tai OASIS:n määrittelemiä • WS-I pyrkii tarkentamaan valmiiden standardien toteutustapoja • BPEL • 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öä

  10. 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

  11. Web-palvelut... kaavakuva XML WS-määritykset WSDL Rajapinnan kuvaus Viestintä Web-palvelu SOAP HTTP HTTPS MIME

  12. Web-palvelut... miksi ne kelpaavat • Pääperiaate: ”Ihan sama millä web-palvelun toteutus on tehty” • WSDL/SOAP –toiminnallisuus on hyvä myyntikeino IDE-kehittä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ä

  13. Osa 2... web-palveluiden kuvaus WSDL:llä

  14. 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 SOAP-viestien • 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

  15. 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 XML-dokumentin 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

  16. WSDL... käyttötavat • Kolme peruskäyttötapaa: • 1. luodaan runko web-palvelun toteutukselle WSDL-dokumentista • 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 • Kaikki voidaan tehdä automaattisesti työkaluilla, joita löytyy sovelluskehittimistä • 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

  17. 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 SOAP-välineissä • RPC-tyylin tarjoamia mahdollisuuksia SOAP-viestintään voidaan ajatella document-tyylin mahdollisuuksien ”osajoukkona” RPC-tyyliset WSDL-dokumentit ovat hieman yksinkertaisempia

  18. 1. Web-palvelun rungon luominen WSDL työkalu Palvelutoteutus runko

  19. 2. Web-palvelun käyttöönotto Asiakas sovellus työkalu tynkä WSDL Palvelutoteutus

  20. 3. WSDL-dokumentin generointi Palvelutoteutus työkalu WSDL

  21. WSDL:n osat (elementit) karkeasti • schema (0-n kappaletta) • jokaisen SOAP-viestien osien tietosisällön kuvaus XML-scheman avulla • message (2-n kappaletta) • jokaisen SOAP-viestin osien luettelo • portType (yleensä 1 kappale) • jokaisen SOAP-palvelukutsun viestit (parametri-viesti, paluu-viesti, virheilmoitus-viestit) • binding (yleensä 1 kappale) • SOAP-palvelukutsujen ja esim. liitetiedostojen sitominen HTTP tms. siirtoprotokollaan • service (1 kappale) • web-palvelun yhteydet ulkomaailmaan, esim. sen HTTP-osoite. Yleensä vain yksi yhteys on edustettuna (HTTP).

  22. Osa 3... EchoApplication-palvelun WSDL-kuvaus

  23. 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

  24. EchoApplication... WSDL-dokumentti <?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> <portType>...</portType> <binding>...</binding> <service>...</service> </definitions> WSDL-dokumentin osien nimialue Web-palvelun nimialue

  25. EchoApplication... service-elementti <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

  26. EchoApplication... binding-elementti <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"/> </output> </operation> </binding> HTTP-sidonnan palvelukutsut (portType) Palvelukutsujen sidontatyyli echoText-palveluKutsun sidonta

  27. EchoApplication... portType-elementti <portType name=“EchoOperations"> <operation name=“echoText"> <input message="impl:echoTextRq"/> <output message="impl:echoTextRsp"/> </operation> </portType> echoText-palvelukutsun SOAP-viestit (input ja output)

  28. EchoApplication... message-elementti <message name=“echoTextRq"> <part element="impl:echoText" name="parameters"/> </message> <message name=“echoTextRsp"> <part element="impl:echoTextResponse" name="parameters"/> </message> echoText-palvelukutsun input ja output- viestien osat

  29. 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> </element> </schema> </types> echoText-palvelukutsun parametrit (input-viestin sisältö). HUOM! Elementin nimen on oltava echoText! echoText-palvelukutsun paluuarvot (output-viestin sisältö). HUOM! Elementin nimen on oltava echoTextResponse!

  30. Osa 4... Web-palveluiden viestintä SOAP:lla

  31. SOAP-sanoman osa-elementit • Header ei ole pakollinen • sisältää metatietoa viestistä • Body sisältää itse sanoman tietosisällön, esim. • kutsuttava web-palvelukutsu ja sille annettavat parametrit • muu XML-dokumentti Envelope Header Body

  32. SOAP-viestinvälitys Asiakas Palvelutoteutus Aputyökalu palvelun löytämiseen tynkä runko SOAP-vastaanottaja SOAP-lähettäjä HTTP / HTTPS

  33. 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

  34. SOAP-esimerkki... echoTextResponse-vastaus <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

  35. Osa 5... WS-määritysten käyttö web-palveluissa

  36. 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-wss-wssecurity-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> </soapenv:Body> </soapenv:Envelope> Header-elementti Aikaleima (SOAP-vastauksen luontipäivämäärä)

  37. 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ä

  38. 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.ws-i.org/Profiles/BasicProfile-1.1.html WS-I Attachments Profile - http://www.ws-i.org/Profiles/AttachmentsProfile-1.0.html WS-I Basic Security Profile - http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html

More Related