SOAP ja veebiteenused Web Services SOAP WSDL Ühilduvus UDDI MEELIS ROOS 1
Web Services 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 2
SOAP 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 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
SOAP teade Ü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) MEELIS ROOS 4
SOAP teate struktuur <?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:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope> MEELIS ROOS 5
SOAP näide(päringu ümbrik) <?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 6
SOAP näide(päringu jätk) <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> MEELIS ROOS 7
SOAP näide(vastuse ümbrik) <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soa 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/encodin MEELIS ROOS 8
SOAP näide(vastuse jätk) <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> MEELIS ROOS 9
SOAP adresseerimine 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 10
WSDL 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 MEELIS ROOS 11
WSDL sisu 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 12
SOAP ühilduvus 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 WSI(Web Service Interoperability) profiil, mis fikseerib hulga parameetreid MEELIS ROOS 13
SOAP rpc/encoded kodeering <soap:body soap:encodingstyle="..."> <q1:getusername xmlns:q1="http://www.eherenow.com"> <Where xsi:type="xsd:string">string</where> </q1:getusername> </soap:body> MEELIS ROOS 14
SOAP document/literal kodeering <soap:body> <Where xmlns="http://www.eherenow.com">string</where> </soap:body> MEELIS ROOS 15
SOAP document/literal wrapped(ms) kodeering <soap:body> <GetUserName xmlns="http://www.eherenow.com"> <Where>string</Where> </GetUserName> </soap:body> 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