IDU0075 Sissejuhatus veebiteenustesse Tarvo Treier Tarvo.treier@gmail.com
Tarvo Treier tarvo.treier@gmail.com Sisukord WSDL Kandidaatide tuvastamine Teenuse definitsioon Teenuste tüübid Modelleerimine WSDL kui süsteemile esitatud nõuete fikseerimise vahend WSDL kui süsteemi simuleerimise alus Tarvo Treier tarvo.treier@gmail.com
Veebiteenustega seotud standardid Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 3
WSDL (Web Service Definition Language) WSDL on XML põhine keel, mis kirjeldab veebiteenuseid Operatsioonid Sõnumid Andmetüübid Viited http://www.w3.org/TR/wsdl http://w3schools.com/wsdl/default.asp http://www.ws-standards.com/wsdl.asp Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 4
Tarvo Treier tarvo.treier@gmail.com 5
Operatsioonid ja sõnumid Allikas: http://msdn.microsoft.com/en-us/library/ms996486.aspx Tarvo Treier tarvo.treier@gmail.com
WSDL’i elemendid <definitions> <types>... </types> <message>... </message> <portType>... </portType> <binding>... </binding> <service>... </service> </definitions> Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 7
WSDL’i elemendid Types – siin saame XSD importida või kohapeal deklareerida Messages – iga requesti ja response jaoks on siin üks sõnum PortType – kirjeldab operatsioonid ja nende sisend ning väljund sõnumid. Binding - määratakse sõnumivahetuse transport iga operatsiooni kohta (document+literal recommended) Service – nimi ja asukoht Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 8
Näide <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> ... </operation> </portType> Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 9
Teenuse kanditaatide tuvastamine Kui sul on haamer, siis kõik asjad näivad naeltena. Kas kõiki süsteemis olevaid meetodeid on mõtet teha veebiteenusteks? Miks? Tarvo Treier tarvo.treier@gmail.com
Mis on veebiteenus? (Eben Hewitt) Defineeritud liidese abil, mis võib olla platvormist sõltumatu Kättesaadav üle võrgu Liideses defineeritud operatsioonid esinavad äri(toimimis)-funktsioone, mis opereerivad äriobjektidega Tarvo Treier tarvo.treier@gmail.com
Tarvo Treier tarvo.treier@gmail.com Teenuste tüübid 1/2 Olemiteenus (entity) Esindab ühte või mitut äriolemit. CRUD operatsioonid. Näiteks CustomerAccount võib vajada juba teiste osapooltega suhtlemist ja pole enam lihtne olemiteenus. Funktsionaalne teenus Tehnoloogiale orienteeritud teenus (mitte ärile). Abiteenused, mida teised saavad kasutada(logimine, emaili saatmine...) Tarvo Treier tarvo.treier@gmail.com
Tarvo Treier tarvo.treier@gmail.com Teenuste tüübid 2/2 Protsessiteenus Esinab teenust, kus on terve seeria omavahel seotud ülesandeid. Selliste teenuste tükeldamine muudab need teenused veel keerulisemaks. Tarvo Treier tarvo.treier@gmail.com
Teenuste modelleerimine Üldistamine Klient on inimene ja töötaja on inimene Dekomponeerimine Mida väiksemad tükid, seda suurem on tn taaskasutada Agregeerimine Analüüsime, millise teise elemendi osa see teenus olla võiks. See aitab ka dekomponeerida paremini. Tarvo Treier tarvo.treier@gmail.com
Modelleerimise soovitus Ära seo teenusega ühtegi kindlat äriprotsessi. Protsessi koodi hoia BPEL-s või mõnes muus protsessi teenuses. Näide Kui ühel protsessil on vaja kliendi andmeid koos krediidikontrolliga ja teisel ilma, siis tuleks eraldi teha teenus kliendi andmete küsimiseks ja krediidikontrolliks. Tarvo Treier tarvo.treier@gmail.com
WSDL kui süsteemile esitatud nõuete fikseerimise vahend WSDL-i saab edukalt kasutada kasutusjuhtumi lühikirjelduse või kasutusjuhtumi operatsioonide kirjelduse asendusena. Sarnaselt kasutusjuhtumitega saab WSDL-s kirjeldada eeltingimused ja järeltingimused. Eelis antud lähenemisel on võimalus kiirelt kogu protsessi simuleerida ja testida. Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 19
WSDL kui süsteemi simuleerimise alus Kui meil on WSDL-ga kirjeldatud teenus, mida me soovime kasutada, kuid reaalset veebiteenust veel ei eksisteeri, pole võrgust kättesaadav või on tasuline, kuid me soovime siiski WSDL-le vastavat teenust enda testkeskkonnas kasutada, siis aitavad meid Mock teenused. http://www.soapui.org/Service-Mocking/mocking-soap-services.html Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 20
Teenuse simulatsiooni (ServiceMock) kasutamine genereeri WSDL-i põhjal töötav teenuse Mock näiteks SoapUI-ga. http://www.soapui.org/Service-Mocking/mocking-soap-services.html Arendada enda süsteemi kasutades Mock teenust. Hiljem asenda lihtsalt Mock teenuse endpoint reaalse teenuse asukohaga. Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 21
WSDL-i põhjal loodud Mock-ide kasutamise eelised Reaalse teenusega asendamine on valutu. Me ei pea ootama reaalse teenuse arenduse või teenuse kättesaadavaks tegemise tõttu. Saame raha kokku hoida, kui kasutame arenduskeskkonnas reaalse tasulise teenuse asemel ise tehtud teenuse simulatsiooni. Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 22
Mobiil-id simuleerimise näide WSDL https://www.openxades.org:8443/?wsdl Loome ServiceMock-i antud WSDL-i põhjal SoapUI-ga järgmistele operatsioonidele: MobileAuthenticate GetMobileAuthenticateStatus SoapUI WebStart http://www.soapui.org/jnlp/4.0.1/soapui.jnlp Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 23
Mobiil-id näitepäringud MobileAuthenticate <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dig="http://www.sk.ee/DigiDocService/DigiDocService_2_3.wsdl"> <soapenv:Header/> <soapenv:Body> <dig:MobileAuthenticate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <IDCode xsi:type="xsd:string">382xxxxxxxx</IDCode> <CountryCode xsi:type="xsd:string">EE</CountryCode> <PhoneNo xsi:type="xsd:string">+372xxxxxxx</PhoneNo> <Language xsi:type="xsd:string">EST</Language> <ServiceName xsi:type="xsd:string">Testimine</ServiceName> <MessageToDisplay xsi:type="xsd:string">Message</MessageToDisplay> <SPChallenge xsi:type="xsd:string">12345678901234567890</SPChallenge> <MessagingMode xsi:type="xsd:string">asynchClientServer</MessagingMode> <ReturnCertData xsi:type="xsd:boolean">1</ReturnCertData> <ReturnRevocationData xsi:type="xsd:boolean">1</ReturnRevocationData> </dig:MobileAuthenticate> </soapenv:Body> </soapenv:Envelope> Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 24
Mobiil-id näitepäringud GetMobileAuthenticateStatus <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dig="http://www.sk.ee/DigiDocService/DigiDocService_2_3.wsdl"> <soapenv:Header/> <soapenv:Body> <dig:GetMobileAuthenticateStatus soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <Sesscode xsi:type="xsd:int">668477054</Sesscode> <WaitSignature xsi:type="xsd:boolean">true</WaitSignature> </dig:GetMobileAuthenticateStatus> </soapenv:Body> </soapenv:Envelope> Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 25
ÕIS-ile nõuete fikseerimise näide getTänaneTunniplaan Minu päevik (klient) ÕIS (server) getTänaneTunniplaanResponse SOAP/HTTP WSDL Tarvo Treier tarvo.treier@gmail.com Tarvo Treier tarvo.treier@gmail.com 26
REST teenused iseseisvaks uurimiseks http://www.tud.ttu.ee/material/treier/idu0075/2011/Loengud/L6_rest/L6_REST.ppt Tarvo Treier tarvo.treier@gmail.com