Sunteți pe pagina 1din 26

SERVICII WEB Partea I

Servicii Web

Servicii SOA Standarde SOAP WSDL UDDI

Servicii Web

Serviciile Web au aparut ca o tehnologie comuna de integrare Serviciile Web par a fi baza noii generatii de aplicatii distribuite Arhitecturile Orientate pe Servicii utilizeaza servicii Web Orchestrarea serviciilor permite orientarea pe servicii

Servicii Web

O tendinta moderna in construirea sistemelor distribuite -> orientarea pe obiect + reutilizarea => descompunerea aplicatiilor in multimi de componente si incapsularea functionalitatii oferita de acestea sub forma de servicii aplicatiile distribuite se transpun in multimi de servicii expuse utilizatorilor umani sau artificiali si respectiv interni sau externi. definitie generala a conceptului de serviciu: useful labour that does not produce a tangible commodity in cadrul eB. -> servicii livrate prin software ce furnizeaza la cerere resurse de calcul sau resurse informationale necesare pentru implementarea proceselor adaptive de business.

Serviciile software

Servicii utilizator inteligente si adaptive la context.-> servicii de inteligenta ambientala ce ofera utilizatorilor acces convenabil la diverse functionalitati, de oriunde, oricand si de pe orice tip de dispozitiv. Servicii informationale -> servicii prin care se ofera informatie personalizata sau cu valoare adaugata, de ex. prin compararea, clasificarea, sau rezumarea uneia sau mai multor surse de informatie. Servicii de intermediere -> servicii care sprijina gasirea altor servicii corespunzator cerintelor clientilor. Servicii dependente de locatie -> o familie de servicii a caror functionalitate depinde de cunoasterea locatiei geografice a utilizatorului disponibila prin intermediul dispozitivelor mobile.

Caracteristici

Un serviciu software furnizeaza o functionalitate precisa prin intermediul unei interfete software bine definite. Serviciile pot fi compuse in scopul definirii unor servicii complexe. Serviciile necesita definirea rolurilor de furnizor si consumator de servicii. Furnizor = ofera un serviciu spre a fi folosit de unul sau mai multi consumatori, fara ca acestia sa trebuiasca sa cunoasca detaliile interne de implementare ale serviciului respectiv. Consumatorii pot fi la randul furnizori de servicii compuse, bazate pe serviciile oferite de alti furnizori.

Servicii Web

furnizeaza o cale de a asigura interoperabilitatea intre aplicatii software diferite, ruland pe o varietate de platforme organizatiile folosesc tehnologia serv.Web in integrarea aplicatiilor de intrepr.(EAI) si integrarea business-tobussines(B2B) pe Internet serviciile Web pot varia in complexitate de la functii simple de tip cerere-raspuns, pana la tranzactii foarte complicate intre multe parti, pe multiple planuri si pe termen lung. serviciile Web sunt folosite pentru integrarea flexibila de sisteme slab cuplate care pot fi descompuse si recompuse pentru a reflecta natura dinamica a afacerii Aplicatiile software disponibile pe Web pot fi accesate, executate si compuse datorita ideii de Servicii Web.

Definitii

orice aplicatie accesibila altor aplicatii prin intermediul Web-ului, de ex.orice aplicatie care are un URL public, de la un script CGI pana la o aplicatie stabila cu o interfata de programare precisa, posibil descrisa intr-un serviciu de directoare. Conform organismului de standardizare OASIS, serviciile Web permit aplicatiilor sa comunice independent de platforma si limbajul de programare folosind protocoale standard bazate pe XML=> aspecte ale unui serviciu Web: independenta de platforma si de lb. prg, standardizarea protocoalelor de comunicare si folosirea XML. Consortiul Web: un serviciu Web= un sistem software proiectat pentru a sprijini interoperabilitatea interactiunilor intre calculatoare intr-o retea. Are o interfata descrisa printr-un format procesabil de calculator (mai precis WSDL). Alte sisteme interactioneaza cu un serviciu Web intr-o maniera prestabilita in descrierea sa, folosind mesaje SOAP transportate utilizand HTTP un sistem identificat printr-un URI, ale carui interfete publice si legaturi sunt definite si descrise folosind XML. Definitia sa poate fi descoperita de alte sisteme software. Aceste sisteme pot interactiona cu serviciul Web intr-o maniera prestabilita de definitia sa, utilizand mesaje bazate pe XML si transportate de protocoalele Internet. Serviciile Web = o modalitate de a expune functionalitatea unui sistem informatic si de a o face disponibila altor aplicatii prin tehnologii Web standardizate. In acest fel serviciile Web deschid in mod natural perspective pentru noi arhitecturi si paradigme in directia calculului orientat pe servicii.

Tehnologii pentru servicii Web

probleme: descrierea, descoperirea, interactiunea si compunerea Consortiul W3C -> specificatiile legate de SOAP, WSDL, XML, XML Schema, HTTP, etc. + arhitectura serviciilor web, WS-Architecture Organization for the Advancement of Structured Information Standards (OASIS)-> specificatiile pentru UDDI, securitatea serviciilor web (WS-Security), SAML, etc.

standarde pentru serviciile web

SOAP-> Simple Object Access Protocol= o specificatie care defineste o gramatica XML pentru trimiterea si primirea de mesaje. Scopul specificatiei SOAP - de a descrie un format de mesaje care sa nu depinda de arhitectura hardware sau software, capabil sa transmita si sa receptioneze mesaje la/de la orice platforma. Extensible Markup Language (XML) - meta-limbaj de baza peste care sunt construite limbajele pentru serviciile Web. XML este mai mult un meta-limbaj decat un limbaj, deoarece este folosit pentru a crea gramatici. Aceste gramatici sunt descrise in scheme XML care specifica tag-urile care sunt permise de legaturile dintre elementele definite de aceste tag-uri. SOAP, WSDL si UDDI sunt gramatici bazate pe XML. Hypertext Transport Protocol (HTTP) - un standard care precede aparitia serviciilor Web, dezvoltat pentru a facilita trasnsferul de cereri dintre navigator (browser) si serverul Web. Serviciile Web transmit mesaje SOAP si documente WSDL de la un calculator la altul. FTP, SMTP Web Services Description Language (WSDL)- o specificatie despre modalitatea de a descrie un program software in functie de apelurile de metode la care trebuie sa raspunda. Aceste metode sunt descrise intr-un mod abstract independent de lb. prg. in care este scris serviciul, de calculator sau de SO. WSDL contine o sectiune in care sunt descrise detalii de conectare la serviciu. Universal Discovery, Description, Integration (UDDI) - descrie cum un potential client al serviciului Web poate invata despre capabilitatile serviciului si cum poate obtine informatia de baza necesara pentru a face contactul cu site-ul.

Arhitectura serviciilor Web

Serviciile Web -> Service-Oriented Architecture (SOA) = functionalitatea software este distribuita intr-un set de servicii. Pt. ca un serviciu sa existe in domeniul SOA, este necesar un mecanism care sa descrie, sa descopere si sa faca apel la servicii

Arhitectura SOA - roluri

Service Provider=furnizor de servicii - responsabil cu implementarea serviciilor Web. 1- determina functionalitatea pe care o ofera ca serviciu. 2 - descrie interfata acestei functionalitati intr-o metoda standard. 3- publica aceasta interfata intr-un registru pentru a oferi consumatorilor de servicii posibilitatea de a-si gasi servicii web. Service Registry =registrul de servicii - functioneaza ca un repozitoriu de servicii Web. Ofertantii de servicii publica in acest registru definitiile serviciilor lor =>au facilitatea de publicare a serviciilor web si functioneaza ca un repozitoriu pentru consumatorii de servicii, pentru a le permite acestora sa gaseasca aceste servicii Web si de a le asigura informatia necesara pentru a apela serviciul Web. Service Consumer= consumatorul de servicii - foloseste serviciile Web create de ofertantul de servicii. Regaseste toata informatia necesara pentru a se conecta (bind) la serviciul web din registrul de servicii, incluzand interfata la serviciul respectiv publicat de provider-ul de servicii. Interfata ofera detalii ale metodelor, parametrilor si protocolului de transport necesar pentru utilizarea lui.

Stiva de specificatii pentru servicii Web

Stiva de specificatii pentru servicii Web

nivelul cel mai de jos - nivelul de transport responsabil cu comunicarea intre porturile de comunicare care pot trimite si primi mesaje. Se poate folosi orice protocol de transport nivelul de mesaje, responsabil cu invocarea serviciilor web de catre consumator. Consumatorul foloseste mesaje SOAP pentru a apela metodele oferite de serviciul Web ofertantul de servicii descrie interfata respectiva intr-o metoda standard cu WSDL (Web Services Description Language) cel mai de sus nivel - descoperirea serviciilor Web, implementata in UDDI (Universal Description and Discovery Interface).

SOAP (Simple Object Access Protocol)

format bazat pe XML si permite apelul la distanta (Remote Procedure Calls) si transportul de mesaje peste orice protocol de retea -HTTP. Formatul XML in locul celui binar - este interoperabil intre platforme, limbaje de programare, componente, etc. Este bazat pe mesaje => SOAP poate fi usor implementat peste protocoale de retea asincrone SMTP sau JMS Java Messaging Services) Avantaj comparativ cu protocolul XML-RPC:

XML-RPC Protocol este un protocol simplu ce permite apeluri la distanta folosind XML pentru codificare si HTTP pentru protocolul de transport. SOAP este construit pe baza acestui protocol, oferind suport pentru tipuri de date complexe si diferite protocoale de transport, impreuna cu posibilitatea de a specifica exact metoda de procesare a mesajelor.

Caracteristici SOAP

defineste modul de organizare a informatiei utilizand XML intr-o forma structurata, si specifica :

un format de mesaj pentru comunicarea unidirectionala, descriind cum poate fi impachetata informatia intr-un document XML. un set de conventii pentru folosirea mesajelor SOAP pentru a implementa modelul de interactiune RPC, definind cum clientii pot invoca o procedura aflata la distanta prin trimiterea de mesaje SOAP si cum serviciile pot raspunde prin trimiterea unui alt mesaj SOAP inapoi la apelant. un set de reguli pe care fiecare entitate care proceseaza un mesaj SOAP trebuie sa le urmareasca, definind in particular elemente XML pe care entitatea trebuie sa le citeasca si intelege si actiuni pe care entitatile trebuie sa le ia daca nu inteleg continutul. o descriere a modalitatii in care mesajul SOAP trebuie sa fie transportat cu un protocol de transport (HTTP, SMTP).

este un protocol fara stare si unidirectional ignora aspectele semantice ale mesajelor

Structura

SOAP schimba informatie, folosind mesaje. Aceste mesaje sunt folosite ca un plic (envelope) unde aplicatia inchide orice informatie care trebuie trimisa. Fiecare plic (envelope) contine 2 parti: header si body. Elementul header -optional, elementul body -obligatoriu. Atat elementul header cat si body pot avea subparti multiple sub forma de blocuri header si blocuri body. un mesaj SOAP = un document XML care consta din plic, antet si corp.

SOAP Envelope
SOAP header

Header Block

SOAP Body

Body Block

Structura

SOAP pp ca fiecare mesaj are un emitator, un receptor si un numar arbitrar de intermediari (noduri) care proceseaza mesajul si il trimit la receptor. Principala informatie pe care emitatorul o trimite la receptor trebuie sa se gaseasca in corpul mesajului. Informatia aditionala necesara procesarii intermediare (autentificare, securitate, tranzactie, versiune) se gaseste in header. Exista doua aspecte ce influenteaza modul in care sunt construite mesajele SOAP din antet header - si corp body -: stilul de interactiune si regulile de codificare.

Stiluri de interactiune : interactiune bazata pe document si RPC. In interactiunea de tip document, cele doua aplicatii care interactioneaza se pun de acord cu structura documentelor schimbate intre ele. Mesajele SOAP sunt folosite pentru a transporta aceste documente de la o aplicatie la alta.

Exemplu de mesaj SOAP


<SOAP-ENV: Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/" SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encodi ng/"/> <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI" SOAP-ENV: mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DEF</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

SOAP Envelope

SOAP envelope- elem. radacina obligatoriu al mesajului SOAP contine un tag <Header> optional, ce permite specificarea informatiilor aditionale despre mesajul si un tag obligatoriu <Body> ce contine mesajul propriu-zis - o cerere de la un serviciu sau un raspuns de la server.

Header-ul SOAP

Specificatia SOAP nu defineste cum sunt utilizate caracteristici precum autentificare, securitate, tranzactie, versiune etc. Aplicatiile au posibilitatea de a extinde protocolul prin adaugarea de informatie in tag-ul <Header>.

Body-ul SOAP

defineste continutul mesajului elementul poate fi un apel RPC sau un mesaj. poate contine mesajul fault in caz de eroare. Specificatia SOAP descrie cum un apel RPC este mapat in structura XML exista flexibilitatea folosirii mesajului de tip document-based protocol in loc de mecanismul RPC: se trimite mesajul serverului SOAP, serverul SOAP proceseaza mesajul si trimite un raspuns. Diferenta - se lucreaza cu un mesaj intreg in loc de obiecte, metode si parametri. Elementul <Body> contine intregul document XML care va fi interpretat si procesat de destinatar. Protocolul bazat pe document este important pentru tranzactii electronice bazate pe standarde, precum ebXML, RosettaNet etc.

Descrierea unui serviciu

Nume e.g., GetTemperature Tipul parametrilor de intrare e.g., (String, String) Tipul parametrilor de iesire e.g., Integer

Ex. Cerere SOAP


POST /temp HTTP/1.1 Host: www.socweather.com Content-Type: text/xml; charset="utf-8" Content-Length: xxx SOAPAction: "http://www.socweather.com/temp" <! Ce este deasupra sunt HTTP headers --> <?xml version=1.0?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <env:Body> <m:GetTemp xmlns:m="http://www.socweather.com/temp.xsd"> <m:City>Honolulu</m:City> <m:When>now</m:When> </m:GetTemp> </env:Body> </env:Envelope>

Ex. Raspuns SOAP


HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: xxx SOAPAction: "http://www.socweather.com/temp" <?xml version=1.0?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <env:Body> <m:GetTempResponse xmlns:m="http://www.socweather.com/temp.xsd"> <DegreesCelsius>30</DegreesCelsius> </m:GetTempResponse> </env:Body> </env:Envelope>