web servisi n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Web servisi PowerPoint Presentation
Download Presentation
Web servisi

Loading in 2 Seconds...

play fullscreen
1 / 47

Web servisi - PowerPoint PPT Presentation


  • 202 Views
  • Uploaded on

Aplikativni softver. Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu. Web servisi. 2007/2008. Violeta Tomašević Literatura Internet. Šta su Web servisi?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Web servisi


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
    Presentation Transcript
    1. Aplikativni softver Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu Web servisi 2007/2008. Violeta Tomašević Literatura Internet.

    2. Web servisi Šta su Web servisi? Web servisisu samostalne (self-contained i self-describing) aplikacione komponente koje se publikuju, pronalaze i koriste putem Web-a. Njima mogu da pristupaju druge aplikacije ukoliko im je potrebna neka od usluga koje oni pružaju. Takođe, Web servisi mogu datu Web aplikaciju učiniti dostupnom na Web-u. Platforma koja omogućava rad sa Web servisima predstavlja jednostavno, interoperabilno okruženje koje se zasniva na razmeni poruka. U osnovi ove platforme je XML, kao jezik koji omogućava izražavanje složenih poruka i funkcija primenljiv u različitim okruženjima. Interoperabilnost, koja ima najviši prioritet u radu sa Web servisima, se odnosi na mogućnost interakcije između različitih platformi zahvaljujući korišćenju Webbrowser-a.

    3. Web servisi Upotreba Web servisa • Web servisi mogu imati dvostruku ulogu: • Višestruko korišćenje aplikacionih komponenata Postoji realna potreba da različite aplikacije koriste iste aplikacione komponente, kao što su na pr. konverzija valuta, vremenska prognoza, prevođenje sa jednog na drugi jezik i sl. Idealno bi bilo da postoji samo jedna aplikaciona komponenta koju bi sve aplikacije mogle da koriste prema svojim potrebama. Tu mogućnost obezbeđuju Web servisi. • Povezivanje postojećeg softvera Web servisi nude mogućnost povezivanja i razmene podataka između različitih aplikacija i različitih platformi.

    4. Web servisi Definicija Web servisa Web servis je“softverski sistem identifikovan uz pomoć URI, definisan, opisan i otkriven pomoću XML artefakta, koji interaguje sa drugim softverskim sistemima koristeći XML poruke preko protokola baziranih na Internetu.“ (W3C Web Services Architecture Group) Navedena definicija ne obavezuje na korišćenje neke posebne specifikacije, kao ni na primenu nekog određenog protokola.

    5. Web servisi Paltforma za Web servise • Platforma za rad sa Web servisima obično obuhvata sledeće standarde: • SOAP (Simple Object Access Protocol) SOAP je jednostavan protokol dizajniran za komunikaciju između aplikacija putem Internet-a. On se zasniva na slanju XML formatiranih poruka. Platformski i jezički je nezavisan. • WSDL (Web Services Description Language) WSDL je jezik za opisivanje Web servisa i njihovo lociranje (kako da im se pristupi). Ovaj jezik se, takođe, zasniva na XML-u. • UDDI (Universal Description, Discovery and Integration) UDDI je direktorijum za smeštanje informacija o Web servisima. U njemu se nalaze interfejsi za Web servise pisani u WSDL jeziku. Sa ovim direktorijumom se komunicira preko SOAP-a.

    6. Web servisi Web servis aplikacija Posrednik servisa Turističko udruženje UDDI UDDI aplikacija WSDL Korisnik WSDL WSDL SOAP SOAP Automobil Avion Travel Plus Hotel Aplikacija za rezervacije Hotelski rezervacioni sistem SOAP Pozivalac servisa Provajder servisa

    7. Web servisi SOAP SOAP je protokol za razmenu struktuiranih informacija (poruka) u distribuiranim, decentralizovanim okruženjima. On omogućava komunikaciju između aplikacija koje rade pod različitim OS i koriste različite tehnologije i programske jezike. SOAPje XML zasnovan protokol. Razmenu informacija između aplikacija omogućava korišćenjem HTTP protokola koji je podržan od svih Internet browser-a i servera. Danas mnogi Web servisi koriste SOAP protokol za razmenu poruka (zahteva i odgovora). Stoga se može reći da je SOAP protokol za pristup Web servisima. Internet SOAP čvor SOAP čvor SOAP poruka

    8. Web servisi SOAP sintaksa • SOAPporukaje u suštini XML dokument koji sadrži sledeće elemente: • Envelope element, koji identifikuje XML dokument kao SOAP poruku. Ovo je obavezan element. • Header element, koji sadrži zaglavlje sa informacijama. Ovo je opcioni element. • Body element, koji sadrži informacije o pozivu i odgovoru. Ovo je obavezan element. • Fault element, koji daje informacije o greškama koje nastaju tokom procesiranja poruke. Ovo je opcioni element. • Svi navedeni elementi se deklarišu u podrazumevanim (default) prostorima imena za SOAP envelopu • http//:www.w3.org/2001/12/soap-envelope • i za SOAP kodiranje i tipove podataka • http//:www.w3.org/2001/12/soap-encoding

    9. Web servisi SOAP poruka (1) Omotač sadrži ostatak SOAP poruke, ali ne i adresu Zaglavlje sadrži instrukcije za isporuku specifične za aplikaciju Envelope Header Body Telo sadrži aktuelnu poruku

    10. Web servisi SOAP poruka (2) Format SOAP poruke <?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>

    11. Web servisi Envelope element • Envelope element je osnovni (root) element u SOAP poruci. On definiše XML dokument kao SOAP poruku. • <soap:Envelope • xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> • ... • </soap:Envelope> • Prilikom definisanja Envelope elementa, obavezno je korišćenje xmlns:soap prostora imena koji treba uvek da ima vrednost http://www.w3.org/2001/12/soap-envelope, čime je Envelope element definisan kao SOAP Envelope. U slučaju korišćenja drugog prostora imena, aplikacija će generisati grešku i obrisati poruku. • SOAP encodingStyle atribut služi za definisanje tipova podataka koji se koriste u dokumentu. Sintaksa za definisanje ovog atributa je: • soap:encodingStyle=“URI" • SOAP poruka nema predefinisan (default) ovaj atribut. • Envelope element može da sadrži samo dva neposredna podelementa: Header i Body.

    12. Web servisi Header element (1) Header element sadrži informacije o SOAP poruci specifične za aplikaciju (na pr. instrukcije za isporuku). To je opcioni element, koji, ukoliko postoji u poruci, mora biti prvi (dete) element u okviru Envelope elementa. U okviru Header elementa mogu se pojaviti samo elementi koji koriste prostore imena. Primer <?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> <m:Trans xmlns:m="http://www.w3schools.com/transaction/" soap:mustUnderstand="1">234</m:Trans> </soap:Header> ... </soap:Envelope>

    13. Web servisi Header element (2) • U okviru podrazumevanog prostora imena • http://www.w3.org/2001/12/soap-envelope • SOAP definiše tri atributa: actor, mustUnderstand i encodingStyle. Atributi actor i mustUnderstand u okviru SOAP Header elementa definišu kako primalac treba da procesira SOAP poruku. • Atribut actor • Na svom putu od pošiljaoca do primaoca, SOAP poruka može da prolazi kroz različite čvorove (endpoints).Za obradu poruke ne mora biti odgovoran samo poslednji čvor na putu, već mogu biti zaduženi i drugi čvorovi. Tako pojedini čvorovi mogu imati različite uloge u obradi poruke (na pr. autentifikator, loger, ruter i dr.). Header element sadrži informacije o ulogama prisutnim tokom puta poruke. Atribut actor definiše URI koji specificira ulogu čvora za obradu zaglavlja. Sintaksa za definisanje ovog atributa je: • soap:actor=“URI"

    14. Web servisi Header element (3) • Atribut mustUnderstand • Ovaj atribut se koristi da indicira da li čvor mora da razume informacije u zaglavlju ili ne. • Atribut mustUnderstand može da ima samo dve vrednosti, pa je sintaksa za njegovo definisanje: • soap:mustUnderstand=“0|1" • Ako je vrednost atributa mustUnderstand u okviru elementa koji se nalazi unutar Header elementa postavljena na 1, to znači da čvor koji procesira Header mora prepoznati element. Ako pomenuti čvor ne prepozna element, pojaviće se greška pri procesiranju zaglavlja.

    15. Web servisi Body element (1) • Body element sadrži aktuelnu SOAP poruku i stoga je obavezan. On mora koristiti prostor imena i to isti kao i Header element. • Body element može imati proizvoljan broj podelemenata. Kao podelementi se mogu pojaviti: • Fault element za upravljanje greškama • Ovaj element je definisan SOAP specifikacijom. • Ukoliko je prisutan, ovaj element može biti jedini u okviru Body elementa. • podelemenati vezani za aplikaciju • Ovi elementi nisu definisani SOAP specifikacijom, jer su specifični za aplikaciju. • Ovi elementi bi trebalo da budu u vezi sa prostorom imena specifičnim za aplikaciju.

    16. Web servisi Body element (2) SOAP zahtev: poruka u kojoj se zahteva cena jabuka <soap:Body> <m:GetPrice xmlns:m="http://www.w3schools.com/prices"> <m:Item>Apples</m:Item> </m:GetPrice> </soap:Body>Ovo su elementi specifični za aplikaciju i nisu deo SOAP standarda. SOAP odgovor: poruka u kojoj je navedena cena jabuka <soap:Body> <m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body>

    17. Web servisi Fault element (1) • Ukoliko tokom obrade SOAP zahteva dođe do neke greške, to se signalizira pošiljaocu pomoću specijalne SOAP poruke - SOAP fault, koja je definisana u SOAP specifikaciji kao standardni mehanizam za prijavljivanje grešaka. • Nastala greška se obrađuje tako što se unutar SOAP poruke umesto elementa odgovora uvodi Faultelement. Faultelement sadrži informacije o greškama i statusne informacije koje se odnose na SOAP poruku. Ovo je opcioni element, koji, ako postoji, mora biti u okviru Body elementa. Fault element se može pojaviti samo jednom u SOAP poruci. • SOAP Fault element ima sledeće podelemente: • <faultcode>- kod za identifikaciju greške • <faultstring> - objašnjenje greške razumljivo za korisnika • <faultactor> - informacija o uzročniku greške • <detail> - sadrži informacije o aplikacijski specifičnim greškama u vezi sa Body elementom

    18. Web servisi Fault element (2) • Po SOAP specifikaciji, u <faultcode>elementu se koriste sledeća četiri koda za obradu najčešćih grešaka: • VersionMismatch – nađen je nevalidan prostor imena za SOAP Envelope element • mustUnderstand – podelement Header elementa koji je imao setovan mustUnderstand atribut na 1 nije prepoznat • Client – poruka nije korektno formirana, ili sadrži nekorektne informacije • Server – postoje problemi sa serverom, tako da poruka ne može biti obrađena Element <detail>sadrži informacije o greškama koje su se desile unutar tela (Body elementa) SOAP poruke. Greške koje su se dogodile tokom procesiranja zaglavlja (Header element) ili pri transportu poruke do sledećeg čvora se ne prijavljuju u okviru <detail>elementa.

    19. Web servisi Fault element (3) Primer SOAP fault poruke <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/” xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault xmlns=“”> <faultcode>SOAP-ENV:Client</faultcode> <faultstring>Client Error</faultstring> <faultactor>Some-URI</faultactor> <detail> <e:myfaultdetails xmlns:e="Some-URI"> <e:message>Stock symbol not found.</e:message> <e:errorcode>404</e:errorcode> </e:myfaultdetails> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Vrednost iz prostora imena. Objašnjenje greške Čvor gde se desila greška Element detail se koristi samo ako se greška desila tokom obrade tela poruke.

    20. Web servisi Razmena SOAP poruka • Postoje dva načina razmene SOAP poruka: • razmena dokumenata SOAP telo poruke sadrži jedan ili više podelemenata koji mogu da poštuju bilo koji format (specifičan za aplikaciju). Na pr. SOAP telo može sadržavati XML formatiranu narudžbenicu. • poziv udaljene procedure (RPC-Remote Procedure Call) SOAP poruka identifikuje ime operacije podržane u prijemnom čvoru i uključuje parametre potrebne za njeno izvršenje (na pr. zahtev za najnovijom cenom akcije).

    21. Web servisi Razmena dokumenata Primer <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <purchaseOrder xmlns="http://purchaseorder.beans”> <orderInfo> <orderId> 9876</orderId> <itemName>Car</itemName> </orderInfo> <custInfo> <customerId> 9876</customerId> <customerName>John Doe</customerName> </custInfo> </purchaseOrder> </soapenv:Body> </soapenv:Envelope> Pri SOAP razmeni dokumenata, format informacije je specifičan za aplikaciju i nije pokriven SOAP specifikacijom. Sadržaj poruke mora biti dobro formatiran XML dokument. Aplikaciji koja obrađuje SOAP poruku potreban je pristup XML šemi koja definiše strukturu i sintaksu poruke. Sekvenca poruka koje se razmenjuju na ovaj način može biti usklađena sa unapred definisanim tokom rada.

    22. Web servisi RPC (1) • RPC je framework za udaljeni poziv procedure koji je definisan u okviru SOAP specifikacije. • Da bi se omogućio poziv udaljene procedure potrebno je: • u telu poruke imati jedan podelement koji predstavlja koren (root) dokumenta zahteva • u korenu dokumenta zahteva nevesti naziv udaljene procedure • svaki argument procedure uključiti kao ugnježden tag u koren dokumenta zahteva <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:q0="http://calculator.ibm.com"> <soapenv:Body> <q0:addOp> <q0:input1 type="xsd:int">5</q0:input1> <q0:input2 type="xsd:int">3</q0:input2> </q0:addOp> </soapenv:Body> </soapenv:Envelope> Primer: SOAP RPC zahtev

    23. Web servisi RPC (2) • Na RPC zahtev, odgovor u vidu poruke se vraća u dva slučaja: • kada RPC vraća neku vrednost, jer operacija koja se izvršava ima povratnu vrednost • kada se pojave izuzeci (exceptions) pri izvršenju RPC operacije • Da bi se dobio odgovor na SOAP RPC zahtev, potrebno je: • u telu poruke imati koren dokumenta odgovora koji sadrži rezultate • da naziv korena dokumenta odgovora imenu RPC zahteva kome je dodat sufiks Response • da podelement korena dokumenta zahteva sadrži rezultat koji vraća RPC <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:q0="http://calculator.ibm.com"> <soapenv:Body> <addOpResponse xmlns="http://calculator.ibm.com"> <return>8</return> </addOpResponse> </soapenv:Body> </soapenv:Envelope> Primer: SOAP RPC odgovor

    24. Web servisi RPC (3) Uzorak RPC poruke public int addOp(int input1, int input2); Procesor 1 Procesor 2 addOp Input1 = 5 Input2 = 3 vreme return = 8

    25. Web servisi SOAP povezivanje SOAP povezivanje se odnosi na protokol koji se koristi za prenos SOAP poruka između SOAP čvorova. SOAP metodologija dopušta da se između svakog para čvorova na putanji može koristiti drugi protokol. SOAP poruke ne sadrže informacije o povezivanju. Za SOAP razmenu poruka, uobičajeno je da se koristi HTTP protokol. SOAP čvor SOAP čvor SOAP čvor

    26. Web servisi HTTP protokol HTTP (HypertextTransportProtocol) radi tako što se klijent konektuje na HTTP server korišćenjem TCP. Nakon uspostavljanja konekcije, klijent šalje serveru HTTP poruku sa određenim zahtevom. Server procesira zahtev i šalje HTTP odogovor klijentu. Odgovor sadrži statusni kod koji ukazuje na status zahteva. Primer: HTTP zahtev HTTP odgovor (uspešno obrađen zahtev, kod 200) POST /item HTTP/1.1 200 OK Host: 189.123.345.239 Content-Type: text/plain Content-Type: text/plain Content-Length: 200 Content-Length: 200 HTTP odgovor (zahtev nije obrađen) 400 Bad Request Content-Length: 0

    27. Web servisi SOAP preko HTTP-a (1) • SOAP metod radi na principu HTTP zahteva i odgovora koji su u skladu sa SOAP pravilima kodiranja. • HTTP poruka zahteva je podeljena u dve sekcije: • zaglavlje poruke – sadrži informacije o adresi primaoca SOAP poruke • telo poruke – sadrži samu SOAP poruku • SOAP zahtev može biti HTTP POST ili HTTP GET zahtev. HTTP POST zahtev sadrži najmanje dva elementa: • Content-Type – definiše tip poruke i način kodovanja karaktera u XML telu poruke (bilo zahteva ili odgovora) • Content-Length – specificira broj bajtova u telu zahteva ili odgovora HTTP zaglavlje sadrži atribut SOAPAction koji identifikuje zahtev na Web serveru kao SOAP zahtev.

    28. Web servisi SOAP preko HTTP-a (2) POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 SOAPAction: “” Content-Length: nnn <?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:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Primer Serveru se šalje zahtev GetStockPrice. Zahtev ima parametar StockName. Parametar koji se vraća u odgovoru je Price. Prostor imena za ovu funkciju je definisan na http://www.example.org/stock adresi. SOAP zahtev HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelopexmlns:soap=“http://www.w3.org/2001/12/soap-envelope” soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope> SOAP odgovor

    29. Web servisi WSDL • WSDL (Web Services Description Language) je XML zasnovan jezik koji služi za opisivanje samih Web servisa, kao i načina pristupa Web servisima. • WSDL omogućava: • dinamičko otkrivanje i povezivanje servisa • opis servisa se nalazi u WSDL fajlu • registar servisa ukazuje na WSDL fajlove da bi omogućio njihovo dinamičko otkrivanje i upotrebu • da industrija definiše standardne interfejse za servise • na ovaj način se pruža normalizovani opis heterogenih aplikacija

    30. Web servisi WSDL dokument (1) • WSDLdokumentje XML dokument koji sadrži skup definicija za opisivanje Web servisa. • Osnovni elementi u strukturi WSDL dokumenta su: • <portType> - definiše operacije koje Web servis izvršava • <message> - definiše poruke koje Web servis koristi • <types> - definiše tipove podataka koje Web servis koristi • <binding> - definiše komunikacione protokole koje Web servis koristi Osnovna struktura WSDL dokumenta <definitions> <types> definition of types........ </types> <message> definition of a message.... </message> <portType> definition of a port....... </portType> <binding> definition of a binding.... </binding> </definitions> osnovni (root) element

    31. Web servisi WSDL dokument (2) Element portType je najvažniji element u WSDL dokumentu. On daje apstraktnu definiciju Web servisa, opisuje operacije koje mogu biti izvršene i poruke koje su uključene. Element portType se može uporediti sa bibliotekom funkcija, modulom ili klasom u tradicionalnim programskim jezicima. Element message definiše elemente sa podacima neke operacije. Svaka poruka može da sadrži jedan ili više delova. Delovi se mogu uporediti sa parametrima u pozivu funkcije u tradicionalnim programskim jezicima. Element types definiše tipove podataka koje Web servis koristi. Da bi se postigla potpuna nezavisnost od korišćene platfrome, WSDL obično koristi XML Schema sintaksu za definisanje tipova podatka. Element binding kazuje kako treba pristupiti portu. On definiše format poruke i detalje protokola za svaki port.

    32. Web servisi WSDL dokument (3) Primer <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation></portType> U ovom primeru <portType> element definiše “glossaryTerms” kao ime porta, i “getTerm” kao ime operacije. Operacija “getTerm” ima ulaznu poruku nazvanu “getTermRequest” i izlaznu poruku“getTermResponse”. Element <message> definiše delove svake poruke i pridružene tipove podataka. U poređenju sa tradicionalnim programiranjem, “glossaryTerms” je biblioteka funkcija, “getTerm” je funkcija sa ulaznim parametrom “getTermRequest” i izlaznim parametrom “getTermResponse” koji se vraća.

    33. Web servisi WSDL port (1) • WSDLportopisuje interfejse legalnih operacija koje su dostupne preko Web servisa. Stoga se može reći da port definiše tačku pristupa Web servisu. • WSDL definiše četiri tipa operacija: • One-way – operacija može primiti poruku, ali ne vraća odgovor • Request-response – operacija može primiti poruku i vraća odgovor; ovo je najčešće korisšćeni tip operacije • Solicit-response – operacija može poslati zahtev i čekati na odgovor • Notification – operacija može poslati zahtev, ali ne čeka odgovor

    34. Web servisi WSDL port (2) Primer One-way operacije <message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm“ message="newTermValues"/> </operation> </portType > U ovom primeru port “glossaryTerms” definiše one-way operaciju nazvanu “setTerm” . Operacija “setTerm” dopušta unos novih termova u rečnik korišćenjem ulazne poruke “newTermValues” koja ima ulazne parametre “term” i “value”. Izlaz operacije nije definisan.

    35. Web servisi WSDL port (3) Primer Request-response operacije <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation></portType> U ovom primeru port “glossaryTerms” definiše request-response operaciju nazvanu “getTerm” . Operacija “getTerm” zahteva ulaznu poruku “getTermRequest” koja ima parametar “term”. Operacija vraća izlaznu poruku “getTermResponse” sa parametrom “value”.

    36. Web servisi Generisanje WSDL fajlova • WSDL fajlovi sadrže nekoliko sekcija koje se mogu ponovo (više puta) koristiti. Ponovno korišćenje je olakšano formiranjem više posebnih fajlova. Ovi odvojeni fajlovi mogu biti korisni ako treba ponovo upotrebiti: • tipove • definicije poruka • portType • WSDL fajlovi se mogu sklopiti iz više delova korišćenjem elementa import. • WSDL fajlovi se mogu generisati: • ručno – obično se koristi ako je netipičan dizajn; neka okruženja daju grafički prikaz WSDL fajla (na pr. Rational Application Developer) • automatski – postoji više mehanizama za automatsko generisanje WSDl fajla

    37. Web servisi WSDL povezivanje <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation></portType> <binding type="glossaryTerms" name="b1"> <soap:binding style="document“transport="http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> Element <binding> ima dva atributa: type – ukazuje na port za vezivanje name – definiše ime veze Element <soap:binding> ima dva atributa: style – vrednost može biti rpc ili document transport – definiše SOAP protokol koji se koristi Primer: povezivanje request-response operacije sa SOAP-om Element <operation> definiše sve operacije koje port dopušta. Za svaku operaciju mora biti definisan SOAPAction atribut.Takođe mora biti specificirano kako su ulazi i izlazi kodovani.

    38. Web servisi UDDI • UDDI (Universal Description, Discovery and Integration) je platformaski nezavisan uslužni direktorijum (registar, repozitorijum) na kome se mogu registrovati, odnosno tražiti Web servisi. UDDI serveri su replicirani kako bi se obezbedila redundantnost. Sve informacije su dostupne na svakom repliciranom čvoru. • UDDI omogućava sledeće: • čuvanje informacija o Web servisima • pristup interfejsima Web servisa definisanih WSDL-om • komunikaciju preko SOAP-a • integraciju različitih Web servisa korišćenjem Internet-a UDDI je omogućio rešavanje sledećih problema: • nalaženje odgovarajuće usluge u mnoštvu trenutno raspoloživih • pronalaženje novih klijenata i poboljšanje pristupa trenutnim klijentima • proširivanje ponude i tržišta • uklanjanje barijera za brzo priključivanje globalnoj Internet ekonomiji • programsko opisivanje usluga i poslovnih procesa u jednom otvorenom i sigurnom okruženju

    39. Web servisi Korišćenje UDDI-ja Avioprevoznici UDDI Primer Registruju svoje usluge u UDDI direktorijum. Industrija Publikuje UDDI standard za rezervaciju letova. Turističke agencije Pretražuju UDDI direkrtorijum kako bi našle interfejs za rezervacije avioprevoznika. Nakon nalaženja interfejsa, mogu neposredno komunicirati sa servisom.

    40. Web servisi Sadržaj UDDI registra Business Entity discoveryURLs name description businessKey contacts operator categoryBag identifierBag authorizedName Binding Template description accessPoint hostingRedirector serviceKey bidingKey Business Service name serviceKey description categoryBag sadrži sadrži referencira Načini povezivanja servisa Objavljeni servisi tModel name description overviewDoc identifierBag categoryBag tModelKey operator authorizedName Oglašavač servisa Otisak objavljenog interfejsa (služi za razne vrste klasifikacija)

    41. Web servisi Pretraživanje UDDI registra (1) Registar je logički organizovan u tri sekcije, od kojih je svaka nemenjana specifičnoj vrsti upotrebe. Registar Web servisa Ručna pretraga Naći poslovne projeke po detaljima Vrste pretrage Bele strane Naći servis po kategoriji Automatska pretraga Žute strane Naći servis preko interfejsa Zelene strane

    42. Web servisi Pretraživanje UDDI registra (2) U ovom primeru treba naći sve registrovane poslovne projekte čije ime počinje sa “IMPCorporation”. Zahtev za nalaženje poslovnog projekta <?xml version="1.0" encoding="UTF-8"?> <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope"> <Body> <find_business generic="2.0" xmlns="urn:uddi-org:api_v2"> <name>IBM Corporation</name> </find_business> </Body> </Envelope> UDDI verzija 2.0 UDDI verzija 2.0 prostor imena

    43. Web servisi Pretraživanje UDDI registra (3) Odgovor na zahtev za nalaženje poslovnog projekta <?xml version="1.0" encoding="UTF-8" ?> <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <businessList generic="2.0" xmlns="urn:uddi-org:api_v2" operator="www.ibm.com/services/uddi" truncated="false"> <businessInfos> <businessInfo businessKey="D2033110-3AAF-11D5-80DC-002035229C64"> <name xml:lang="en">IBM Corporation</name> <description xml:lang="en">At IBM, ... microelectronics.</description> <serviceInfos> <serviceInfo serviceKey="894B5100-3AAF-11D5-80DC-002035229C64" businessKey="D2033110-3AAF-11D5-80DC-002035229C64"> <name xml:lang="en">Buy from IBM</name> </serviceInfo> ... </serviceInfos> </businessInfo> </businessInfos> </businessList> </Body> </Envelope> jedinstveni business key raspoloživi servisi jedinstveni servis key

    44. Web servisi Publikovanje informacija u UDDI registru (1) Ažuriranje UDDI registra zahteva autorizaciju korisnika pre publikovanja informacija. Autorizacija se radi pozivanjem get_authToken. Autorizacija korisnika <?xml version="1.0" encoding="UTF-8"?> <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope"> <Body> <get_authToken generic="2.0" xmlns="urn:uddi-org:api_v2" userID="aUserID" cred="someValue"/> </Body> </Envelope>

    45. Web servisi Publikovanje informacija u UDDI registru (2) Prilikom publikovanja, prvi argument za sve operacije je element <authInfo> koji sadrži autorizacioni token prethodno odobren od strane strane repozitorijuma. Struktura tokena je specifična za implementaciju , ali je obično jednostavan niz karaktera. Zahtev za objavljivanje poslovnog projekta <?xml version="1.0" encoding="UTF-8"?> <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope"> <Body> <save_business generic="2.0" xmlns="urn:uddi-org:api_v2"> <authInfo>token</authInfo> <businessEntity businessKey=""> <name>Sample Business</name> </businessEntity> </save_business> </Body> </Envelope> Element save_business prihvata više businessEntity elemenata. Ako je neka vrednost ključa unutar strukture prazna, server pretpostavlja da je element o kome je reč nov i generiše ključ za njega.

    46. Web servisi Publikovanje informacija u UDDI registru (3) Odgovor na zahtev za objavljivanje poslovnog projekta ... <businessDetail generic="2.0" xmlns="urn:uddi-org:api_v2" operator="www.mycompany.com/uddi"> <businessEntity businessKey="142426F1-14B9-443B-8A7C-2A3213FF28C6" operator="www.mycompany.com/uddi" authorizedName="uddiUser"> <discoveryURLs> <discoveryURL useType="businessEntity"> http:/.../get?businessKey=142426F1-14B9-443B-8A7C-2A3213FF28C6 </discoveryURL> </discoveryURLs> <name xml:lang="en-US">Sample Business</name> </businessEntity> </businessDetail> ... operator repozitorijuma y URL koji se moze koristiti za dobijanje businessEntity elementa jedina dostupna informacija generisani business key

    47. Web servisi Prikaz izvršnog okruženja Web servisa • Izvršno okruženje Web servisa radi na sledeći način: • osluškuje zahteve upućene Web servisu • parsira dolazeće poruke • mapira poruku u implementacionu klasu i metodu u skladu sa podacima o postavljanju servisa • mapira SOAP poruku u odgovarajuće objekte (JAX-RPC) • poziva obradu koja se odnosi na servis • prihvata odgovor • pravi SOAP poruku na osnovu odgovora • pravi omotač poruke potreban za transport • šalje poruku odgovarajućem Web servis klijentu