SOAP ja veebiteenused Web Services Web Services SOAP WSDL Ühilduvus UDDI Kihiline arhitektuur masinsuhtluse jaoks erinevate süsteemide vahel Transport sõnumite edastamiseks: HTTP, SMTP, FTP, mistahes failiedastus, XMLsõnumid XML-RPC,SOAP,REST Teenuse masinloetav kirjeldus WSDL, nimeteenused Teenuste avastamine tsentraliseeritud register teenuste kohta(uddi, nimeteenused) MEELIS ROOS 1 MEELIS ROOS 2 SOAP SOAP teade SOAP Simple Object Access Protocol "See, mis laseb Java ja.net komponentidel omavahel suhelda" :-) XML struktuuriga päringud ja vastused Transporteonerinevaid HTTP,HTTPS,SMTP, XML DTD/Schema võib olla eraldi kokku lepitud või omakorda masinloetavalt publitseeritud Ümbrik(envelope) identifitseerib XML teate SOAP-ina (kohustuslik) Päis(header) teate lisainfo(mittekohustuslik) Keha(body) päring või vastus ise, konkreetse nimeruumi XML(kohustuslik) Veateade(fault) keha sees vea puhul(mittekohustuslik) Manused(MIME kodeeringus HTTP puhul) XML tasemel kasutatakse nimeruume sisu elementide kirjeldamiseks SOAP enda XML struktuur fikseerib XML puu"tipmise osa", sealt seest viidatakse konkreetsetele nimeruumikirjeldustele alamtippude interpreteerimiseks MEELIS ROOS 3 MEELIS ROOS 4
SOAP teate struktuur SOAP näide(päringu ümbrik) <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding" <soap:header> </soap:header> <soap:fault> </soap:fault> </soap:envelope> <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4="http://x-tee.riik.ee/xsd/xtee.xsd" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> MEELIS ROOS 5 MEELIS ROOS 6 SOAP näide(päringu jätk) SOAP näide(vastuse ümbrik) <SOAP-ENV:Header> <ns4:asutus xsi:type="xsd:string">10239452</ns4:asutus> <ns4:andmekogu xsi:type="xsd:string">xtee</ns4:andmekogu> <ns4:isikukood xsi:type="xsd:string">ee30101010007</ns4:isikukood> <ns4:id xsi:type="xsd:string">9900d3c472326a112f048571</ns4:id> <ns4:nimi xsi:type="xsd:string">xtee.listproducers</ns4:nimi> <ns4:toimik xsi:type="xsd:string" /> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns4:listproducers> <keha xsi:type="xsd:string" /> </ns4:listproducers> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/enve xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4="http://x-tee.riik.ee/xsd/xtee.xsd" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> MEELIS ROOS 7 MEELIS ROOS 8
SOAP näide(vastuse jätk) SOAP adresseerimine <SOAP-ENV:Body> <ns4:listproducersresponse> <keha xsi:type="soap-enc:array" SOAP-ENC:arrayType="SOAP- ENC:Struct[1]" SOAP-ENC:offset="[0]"> <item> <name xsi:type="xsd:string">autoregister</name> <description xsi:type="xsd:string">eesti riiklik liiklusregister</description> </item> </keha> </ns4:listproducersresponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Staatiline Lubab ainult jäika klient-server mudelit Näiteks hardcoded HTTP URL Dünaamiline Lubab objektide vahelist hajussuhtlust igas suunas WS-Addressing objektiviited WS jaoks EPR Endpoint Reference Teatega kaasa käiv metainfo(siht, saatja EPR, vastuse saaja EPR, vea saaja EPR, action, ID) ESB Enterprise Service Bus kah dünaamilisema suhtluse jaoks SOAP teate edastamine mitme sõlme vahel enne kohale jõudmist, vahepealsed actor id MEELIS ROOS 9 MEELIS ROOS 10 WSDL WSDL sisu XML-formaadis kirjeldus veebiteenuste kohta Kirjeldab porte(viise teenuseni jõudmiseks) ja teenuseid endid Mis operatsioone teenus pakub? Missugused parameetrid ja tagastusväärtused? Mismoodi andmeid esitatakse? Mis aadressil ja protokolliga ligi pääseb? Mõnevõrra analoogne IDL-iga Ligipääsuks SOAP või tavaline HTTP Andetüübid Sageli kasutatakse XML Schema tüüpe nagu SOAP-iski Neist ehitatakse lihtsad teate tüübid Pordi tüüp kirjeldab operatsiooni nime ja seob sellega sisend-väljundi teatetüübid Sidumine(binding) määrab andmevahetuseks näiteks SOAP-i, HTTP, MIME Port seostab sidumise konkreetse URL-iga MEELIS ROOS 11 MEELIS ROOS 12
SOAP ühilduvus SOAP rpc/encoded kodeering SOAP erinevad versioonid(1.1, 1.2) Kodeeringud rpc/encoded, rpc/literal, document/encoded, document/literal RPCstiil:SOAPkehaksonüksXMLelementpäringnimega Dokumendistiil: päringu sisu on otse SOAP kehaks Encoded USE: iga element on tüübitud tüübiatribuudiga Literal USE: iga elemendi tüüp on tuletatav XML skeemist implitsiitselt <soap:body soap:encodingstyle=""> <q1:getusername xmlns:q1="http://www.eherenow.com"> <Where xsi:type="xsd:string">string</where> </q1:getusername> WSI(Web Service Interoperability) profiil, mis fikseerib hulga parameetreid MEELIS ROOS 13 MEELIS ROOS 14 SOAP document/literal kodeering SOAP document/literal wrapped(ms) kodeering <Where xmlns="http://www.eherenow.com">string</where> <GetUserName xmlns="http://www.eherenow.com"> <Where>string</Where> </GetUserName> MEELIS ROOS 15 MEELIS ROOS 16
UDDI Universal Description Discovery and Integration Veebiteenuste register, et kliendid ja serverid üksteist automaatselt leida suudaksid Teenuste registreerimine ja pärimine Juurdepääs SOAP protokolliga MEELIS ROOS 17