Conceptul de serviciu Web bazat pe XML

Solus

Administrator
Membru personal
Site Founder
Înscris
6 Iul 2018
Mesaje
212
Aprecieri
19
Puncte
18
Vârstă
35
Locație
Bucuresti
Site web
www.bitarena.eu
Online
#1
In mod obisnuit, putem implementa serviciile Web recurgand la script-uri CGI sau diverse servere de aplicatii. Interactiunea traditionala poate decurge in urmatoarele doua moduri. Prima maniera este cea functionala (de tip cerere/raspuns): utilizatorul (nu neaparat uman) viziteaza o pagina si formuleaza o cerere, fie traversand o legatura hipertext, fie prin intermediul unui formular. Serviciul (implementat de un program conceput intr-un anumit limbaj, precum Perl, PHP, C# ori Java) intoarce un raspuns, adica o reprezentare uzual, marcata in HTML a resursei solicitate.
Astfel, se acceseaza de la nivelul clientului o anumita functionalitate specifica pusã la dispozitie de un server Web. Cea de a doua este una conversationala (de tip solicitare/raspuns). Suplimentar, se da posibilitatea exprimarii unor întrebari aditionale in vederea rafinarii cererii: serviciul solicita date de la utilizator pentru a returna un raspuns mai bun. Se poate observa ca serviciul Web, respectand traditia, expune o interfata- -utilizator (conceputa in limbajul de marcare HTML in marea majoritate a cazurilor) prin intermediul careia are loc interactiunea.
Cererile sunt captate via formulare, utilizatorii umani trebuind sa interpreteze etichetele (labels) atasate câmpurilor de dialog, pentru a cunoaste ce tipuri de date pot fi introduse (se asigurã câmpuri textuale, liste de optiuni, butoane de tip checkbox si radio etc.).
De asemenea, utilizatorii umani trebuie sã interpreteze rãspunsul oferit de serviciu prin parcurgerea rezultatului redãrii de cãtre browser a reprezentãrii (HTML) expediate de server. Pentru un calculator, activitãtile expuse mai sus sunt dificil de realizat, deoarece programul de interpretare a rezultatului depinde de succesiunea de marcaje ale paginii Web receptionate.
Orice modificare, minorã sau nu, a tag-urilor din cadrul documentului conduce la rescrierea script-ului de prelucrare a iesirii oferite de serverul Web. Aceastã metodã de capturare a informatiilor incluse într-un document HTML se mai numeste si Web/HTML scrapping si se dovedeste dificil de aplicat în cazul receptãrii de structuri complexe de date.

Definitii si caracterizãri

Serviciile Web bazate pe XML (Extensible Markup Language) fac explicite specificatiile implicite, putând fi folosite în cadrul interactiunii dintre masini. Mai mult decât atât, pot fi invocate si în cazul necunoasterii a priori a interactiunii cu alte aplicatii/servicii Web. Nu existã o definitie unanim acceptatã a conceptului de serviciu Web. Conform IBM, reprezintã o aplicatie modularã bazatã pe tehnologiile Internet, menitã a îndeplini activitãti specifice si conformându-se unui format tehnic specific. Microsoft considerã serviciile Web ca fiind partea de procesare a datelor unei aplicatii (application logic) disponibilã la nivel de program si beneficiind de functionalitãtile oferite de Internet. Dupã Sun, un serviciu Web este o aplicatie care acceptã cereri din partea altor sisteme dispuse în Internet sau intranet, mediate de tehnologii de comunicatie neutre si agile.
Un serviciu Web oferã o functionalitate specificã accesatã pe baza unui schimb de mesaje marcate în XML. Acest schimb de mesaje e guvernat de anumite reguli. Suplimentar, un serviciu Web se poate autodescrie, folosind meta-date (date referitoare la date). Serviciile Web implicã utilizarea unor protocoale de comunicaþie, având asociate descrieri ale datelor procesate si alte interactiuni cu aplicatii terte. Identificarea unui serviciu Web se realizeazã prin intermediul URI-urilor; transferul de date recurge în mod uzual la HTTP, iar definirea structuratã a datelor vehiculate se face via XML.
Un serviciu Web poate fi considerat ca fiind compus dintr-o colectie de functii împachetate, interpretate ca o entitate unicã si publicate în spaþiul WWW cu scopul de a fi folosite de alte programe. Ca exemple de operatii ce pot fi puse la dispozitie de serviciile Web, le amintim pe urmãtoarele: transformarea datelor primite (e.g., conversii de valori în alte unitãti de mãsurã); dirijarea mesajelor (mai ales în cazul magistralelor de date specifice, disponibile la nivel de întreprindere); interogãri asupra diverselor servere de baze de date relationale, obiectuale sau native XML (de exemplu, furnizarea cataloagelor de produse, a coordonatelor unor localitãti, a situatiei unui cont bancar, a istoricului cumpãrãturilor efectuate online etc.); orchestrarea conversatiilor între diferite entitãti (jucând, din acest punct de vedere, rolul de mediatori sau agenti);
-realizarea de procesãri (calcule) diverse;
- aplicarea de politici de acces asupra resurselor;
- rezolvarea unor exceptii ce pot surveni într-un context;
- solicitarea de aprobãri de la utilizator (e.g., a executiei unor aplicatii de cãtre o altã entitate).
Drept principale caracteristici ale serviciilor Web mentionãm:
-accesarea, în manierã publicã, se realizeazã printr-o adresã; serviciile Web pot fi considerate ca reprezentând puncte terminale (end points) ale comunicãrii între masini, similar modelului folosit de protocoalele de transport ale stivei TCP/IP;
-abilitatea de a prelucra orice tip de date, din moment ce datele de intrare sunt documente XML (conforme unei scheme de validare);
-posibilitãtile de dezvoltare pe baza platformelor, arhitecturilor si limbajelor existente;
-adaptabilitatea (un serviciu Web poate fi extins, utilizând eventual, în mod transparent, alte aplicatii sau invocând la rândul sãu alte servicii Web).
Serviciile Web sunt cãrãmizile pentru crearea de sisteme distribuite deschise, permitând organizaþiilor si dezvoltatorilor independenti sã-si facã disponibile pe Web bunurile digitale într-un mod rapid si facil. Mai mult, serviciile Web separã modul de prezentare a datelor de partea de prelucrare a acestora, fiind aliniate sablonului de proiectare MVC (Model-View- -Controller), des întâlnit în domeniul ingineriei programãrii. Modulul de interactiune cu utilizatorul (componenta view) este separat de cel de procesare (model), reprezentat de serviciul Web în sine, comunicarea fiind facilitatã de un strat de control (controller) a se urmãri figura 2. Astfel, rezultatele preluate de la serviciul Web, ce oferã o anumitã functionalitate aplicatiei noastre, pot fi redate utilizatorului într-o multitudine de forme, fãrã a trebui sã modificãm (sau sã avem mãcar acces la) implementarea serviciului.
Servicii%20Web.pdf.png

Orice aplicatie-client (script Perl, applet Java, program C cu interfatã text sau graficã, aplicatie .NET, paginã ori serviciu Web etc.) poate consuma într-o varietate de modalitãti datele obtinute de la un serviciu invocat printr-o metodã standardizatã, bazatã pe normele Web în vigoare. Desigur, în afarã de avantajele incontestabile oferite (inter-operabilitate între diverse platforme si limbaje de programare, utilizarea de standarde si protocoale deschise, reutilizarea componentelor software, lipsa unei relatii strânse între entitãti etc.), serviciile Web pot prezenta si dezavantaje, precum lipsa ori suportul precar pentru tranzactii si performanta relativ scãzutã fatã de abordãrile binare (CORBA, DCOM ori RMI). Odatã cu proliferarea arhitecturii SOA, sunt disponibile servicii specifice mediului enterprise, vizând aspecte legate de:
-continut specificarea, colectarea si organizarea cunostintelor din cadrul organizatiei;
-acces utilizatorii, via un portal/desktop Web, vor avea la îndemânã mijloacele de creare si de exploatare a serviciilor sau aplicatiilor compuse;
-integrare în contextul EAI (Enterprise Application Integration) îndeosebi, conþinutul vehiculat de aplicaþii/utilizatori va putea fi transformat gratie unor entitãti software inteligente;
- procesare se vor putea specifica reguli pentru managementul traficului de date (dirijare, caching, filtrare etc.) în functie de specificul afacerilor întreprinse;
-analizare acordarea unui suport avansat de luare (inteligentã) a deciziilor;
-colaborare va putea fi instituitã o fundatie pentru managementul interactiunilor si comunicatiilor între utilizatori (umani sau nu) un exemplu în acest sens este enterprise wiki.

XML pentru servicii Web: SOAP, WSDL si UDDI

Vom prezenta în continuare principalele componente folosite în invocarea, definirea si regãsirea serviciilor Web. În primul rând, apare necesitatea dezvoltãrii unui protocol de comunicare (transport) între masini eterogene care sã faciliteze vehicularea de mesaje permitând interactiunile complexe dintre calculatoare si având un continut oricât de complex. Mai mult decât atât, trebuie oferit suport pentru asigurarea extensibilitãtii, luându-se în calcul problemele de securitate, fiabilitate si performantã ce pot surveni. Acest protocol va trebui sã punã la dispozitie un mecanism de invocare si de transmitere structuratã a datelor. Trebuie, astfel, gãsit un limbaj pentru transmisia în format XML a parametrilor de intrare si întoarcerea rãspunsului primit de la serviciul Web invocat.
Servicii%20Web.pdf.png


Principalele protocoale de comunicare utilizate în prezent sunt XML-RPC si SOAP. XML-RPC oferã o specificatie si un set de implementãri pentru realizarea de apeluri de proceduri la distantã, în spiritul mecanismului RPC descris succint mai sus. A fost proiectat pentru a fi cât mai simplu, în acelasi timp însã permitând si transmiterea, procesarea si returnarea unor structuri complexe. În mod succint, putem considera ecuatia: XML-RPC = HTTP + XML + RPC. SOAP (Simple Object Access Protocol) reprezintã o recomandare a Consortiului Web, propunând facilitãti sofisticate si oferind o paletã largã de posibilitãti de reprezentare (serializare si deserializare) a datelor vehiculate.
Un mesaj SOAP este compus din trei pãrti: un plic (envelope), un set de reguli de codificare (encoding rules) si o conventie de reprezentare (representation). Plicul defineste cadrul de lucru pentru a descrie ceea ce contine mesajul si modul de procesare a acestui continut. Datele din corpul mesajului pot fi transportate indiferent de protocol (uzual, se recurge la HTTP). Regulile de codificare sunt de folos la exprimarea instantelor tipurilor de date definite în aplicatie, iar conventia de reprezentare este utilizatã în contextul apelurilor de metode implementate de serviciul Web si al rãspunsurilor furnizate în urma invocãrii acestora.
De asemenea, SOAP poate specifica si o cale de la expeditor la destinatar, via un intermediar (proxy) optional, în vederea realizãrii de dirijãri de mesaje (SOAP routing). Detalii sunt disponibile în capitolul 4 al lucrãrii de fatã. Protocolul SOAP poate fi privit din mai multe perspective. Prima ar fi aceea în care poate reprezenta o extindere obiectualã a paradigmei RPC: cererea si rãspunsul contin parametrii de intrare/iesire, suplimentar fiind indicate, via XML Schema, tipurile de date ale acestora. A doua considerã SOAP ca fiind un protocol de mesagerie (serializare), cererea incluzând un obiect-cerere serializat, iar rãspunsul stocând un obiect-rãspuns serializat.
Cel de-al treilea punct de vedere prezent si în cazul REST admite o tranzactie SOAP ca fiind o transformare XSLT la distantã (XSLT with a long wire): cererea este un document XML, iar serverul returneazã, ca rezultat al invocãrii serviciului, o versiune XML transformatã a cererii.
Desigur, nici una dintre aceste abordãri nu este impusã de protocol. În vederea exploatãrii functionalitãtilor puse la dispoziþie de un serviciu Web, trebuie oferitã o descriere a acestuia. Apare necesitatea unui limbaj de descriere, menit a rãspunde la întrebãri precum Care e sintaxa mesajelor vehiculate?, Cum se desfãsoarã transferul de date? si Cum gãsim un serviciu Web?.
Soluþia este furnizatã de WSDL (Web Service Description Language). Limbajul oferã separarea descrierii abstracte a functionalitãtii oferite de un serviciu de detaliile concrete (de tipul cum si unde este disponibilã acea functionalitate).
 

Sus Jos