Ce sunt serviciile web? Architectură, Tipuri, Exemplu

Ce este serviciul web?

serviciu web este un mediu standardizat pentru a propaga comunicarea între aplicațiile client și server pe WWW (World Wide Web). Un serviciu web este un modul software care este conceput pentru a îndeplini un anumit set de sarcini.

  • Serviciile web în cloud computing pot fi căutate în rețea și pot fi, de asemenea, invocate în consecință.
  • Când este invocat, serviciul web ar putea oferi funcționalitatea clientului, care invocă acel serviciu web.

Cum funcționează serviciile web?

Cum funcționează serviciile web
Cum funcționează serviciile web

Diagrama de mai sus arată o vedere foarte simplistă a modului în care un serviciu web ar funcționa de fapt. Clientul ar invoca o serie de apeluri de servicii web prin solicitări către un server care ar găzdui serviciul web real.

Aceste solicitări sunt făcute prin ceea ce este cunoscut sub numele de apeluri de procedură la distanță. Apelurile de procedură de la distanță (RPC) sunt apeluri efectuate către metode care sunt găzduite de serviciul web relevant.

Ca exemplu, Amazon oferă un serviciu web care oferă prețuri pentru produsele vândute online prin amazon.com. Partea frontală sau stratul de prezentare poate fi în .Net sau Java dar oricare limbaj de programare ar avea capacitatea de a comunica cu serviciul web.

Componenta principală a designului unui serviciu web este datele care sunt transferate între client și server, și anume XML. XML (limbaj de marcare extensibil) este o contraparte a HTML și ușor de înțeles limbajul intermediar care este înțeles de multe limbaje de programare.

Deci, atunci când aplicațiile vorbesc între ele, ele vorbesc de fapt în XML. Aceasta oferă o platformă comună pentru aplicația dezvoltată în diferite limbaje de programare pentru a vorbi între ele.

Serviciile web folosesc ceva cunoscut sub numele de SOAP (Simple Object Access Protocol) pentru trimiterea datelor XML între aplicații. Datele sunt trimise prin HTTP normal. Datele care sunt trimise de la serviciul web către aplicație se numesc mesaj SOAP. Mesajul SOAP nu este altceva decât un document XML. Deoarece documentul este scris în XML, aplicația client care apelează serviciul web poate fi scrisă în orice limbaj de programare.

De ce ai nevoie de un serviciu web?

Aplicațiile de afaceri moderne folosesc o varietate de platforme de programare pentru a dezvolta aplicații bazate pe web. Unele aplicații pot fi dezvoltate în Java, altele în .Net, în timp ce altele în Angular JS, Node.js etc.

Cel mai adesea, aceste aplicații eterogene au nevoie de un fel de comunicare între ele. Deoarece sunt construite folosind diferite limbaje de dezvoltare, devine cu adevărat dificil să se asigure o comunicare precisă între aplicații.

Aici intervin serviciile web. Serviciile web oferă o platformă comună care permite aplicații multiple construite pe diverse limbaje de programare să aibă capacitatea de a comunica între ei.

Tip de serviciu web

Există în principal două tipuri de servicii web.

  1. Servicii web SOAP.
  2. Servicii web RESTful.

Pentru ca un serviciu web să fie complet funcțional, există anumite componente care trebuie să fie la locul lor. Aceste componente trebuie să fie prezente, indiferent de limbajul de dezvoltare folosit pentru programarea serviciului web.

Să ne uităm la aceste componente mai detaliat.

SOAP (Protocol simplu de acces la obiecte)

SOAP este cunoscut ca un protocol de mesagerie independent de transport. SOAP se bazează pe transferul de date XML ca mesaje SOAP. Fiecare mesaj are ceva cunoscut ca document XML. Doar structura documentului XML urmează un model specific, dar nu și conținutul. Cea mai bună parte a serviciilor Web și a SOAP este că toate sunt trimise prin HTTP, care este protocolul web standard.

Iată în ce constă un mesaj SOAP

  • Fiecare document SOAP trebuie să aibă un element rădăcină cunoscut sub numele de element. Elementul rădăcină este primul element dintr-un document XML.
  • „Plicul” este la rândul său împărțit în 2 părți. Primul este antetul, iar următorul este corpul.
  • Antetul conține datele de rutare, care sunt în principiu informațiile care indică documentului XML către ce client trebuie trimis.
  • Corpul va conține mesajul real.

Diagrama de mai jos prezintă un exemplu simplu de comunicare prin SOAP.

Protocolul SOAP

Protocolul SOAP

Vom discuta în detaliu despre SOAP tutorial.

WSDL (limbaj de descriere a serviciilor web)

Un serviciu web nu poate fi utilizat dacă nu poate fi găsit. Clientul care invocă serviciul web ar trebui să știe unde se află de fapt serviciul web.

În al doilea rând, aplicația client trebuie să știe ce face de fapt serviciul web, astfel încât să poată invoca serviciul web potrivit. Acest lucru se realizează cu ajutorul WSDL, cunoscut sub numele de limbaj de descriere a serviciilor Web. Fișierul WSDL este din nou un fișier bazat pe XML care, practic, spune aplicației client ce face serviciul web. Folosind documentul WSDL, aplicația client ar putea înțelege unde se află serviciul web și cum poate fi utilizat.

Exemplu de serviciu web

Un exemplu de servicii Web de fișier WSDL este dat mai jos.

<definitions>	
   <message name="TutorialRequest">
      <part name="TutorialID" type="xsd:string"/>
   </message>
     
   <message name="TutorialResponse">
      <part name="TutorialName" type="xsd:string"/>
   </message>

   <portType name="Tutorial_PortType">
      <operation name="Tutorial">
         <input message="tns:TutorialRequest"/>
         <output message="tns:TutorialResponse"/>
      </operation>
   </portType>

   <binding name="Tutorial_Binding" type="tns:Tutorial_PortType">
      <soap:binding style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="Tutorial">
         <soap:operation soapAction="Tutorial"/>
         <input>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </input>
         
		 <output>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </output>
      </operation>
   </binding>
</definitions>

Aspectele importante de reținut despre exemplele de declarații WSDL de mai sus ale serviciilor web sunt următoarele:

  1. – Parametrul mesaj din definiția WSDL este utilizat pentru a defini diferitele elemente de date pentru fiecare operațiune efectuată de serviciul web. Deci, în exemplele de servicii web de mai sus, avem 2 mesaje care pot fi schimbate între serviciul web și aplicația client, unul este „TutorialRequest”, iar celălalt este operațiunea „TutorialResponse”. TutorialRequest conține un element numit „TutorialID” care este de tip șir. În mod similar, operația TutorialResponse conține un element numit „TutorialName” care este, de asemenea, un șir de tip.
  2. – Aceasta descrie de fapt operația care poate fi efectuată de serviciul web, care în cazul nostru se numește Tutorial. Această operațiune poate lua 2 mesaje; unul este un mesaj de intrare, iar celălalt este mesajul de ieșire.
  3. – Acest element conține protocolul care este utilizat. Deci, în cazul nostru, îl definim să folosească http (http://schemas.xmlsoap.org/soap/http). Specificăm și alte detalii pentru corpul operațiunii, cum ar fi spațiul de nume și dacă mesajul ar trebui să fie codificat.

Vom discuta despre „WDSL” în detaliu în aceasta tutorial.

Universal Description, descoperire și integrare (UDDI)

UDDI este un standard pentru descrierea, publicarea și descoperirea serviciilor web care sunt furnizate de un anumit furnizor de servicii. Acesta oferă o specificație care ajută la găzduirea informațiilor despre serviciile web.

Acum am discutat în subiectul anterior despre WSDL și despre modul în care acesta conține informații despre ceea ce face de fapt serviciul web. Dar cum poate o aplicație client să localizeze un fișier WSDL pentru a înțelege diferitele operațiuni oferite de un serviciu web? Deci UDDI este răspunsul la aceasta și oferă un depozit în care fișierele WSDL pot fi găzduite. Deci aplicația client va avea acces complet la UDDI, care acționează ca o bază de date care conține toate fișierele WSDL.

Așa cum o agendă telefonică are numele, adresa și numărul de telefon al unei anumite persoane, la fel și registrul UDDI va avea informații relevante pentru serviciul web. Pentru ca o aplicație client să știe unde poate fi găsită.

Avantajele Serviciilor Web

Înțelegem deja de ce au apărut serviciile web în primul rând, care trebuiau să ofere o platformă care să permită diferitelor aplicații să comunice între ele.

Dar să ne uităm la lista de avantaje ale serviciilor web de ce este important să folosiți serviciile web.

  1. Expunerea funcționalității afacerii în rețea – Un serviciu web este o unitate de cod gestionat care oferă un fel de funcționalitate aplicațiilor client sau utilizatorilor finali. Această funcționalitate poate fi invocată prin protocolul HTTP, ceea ce înseamnă că poate fi invocată și prin internet. În prezent, toate aplicațiile sunt pe internet, ceea ce face ca scopul serviciilor Web să fie mai util. Aceasta înseamnă că serviciul web poate fi oriunde pe internet și poate oferi funcționalitatea necesară, după cum este necesar.
  2. Interoperabilitate între aplicații – Serviciile web permit diferitelor aplicații să vorbească între ele și să partajeze date și servicii între ele. Toate tipurile de aplicații pot vorbi între ele. Deci, în loc să scrieți cod specific care poate fi înțeles doar de anumite aplicații, acum puteți scrie cod generic care poate fi înțeles de toate aplicațiile
  3. Un protocol standardizat pe care toată lumea îl înțelege – Serviciile web folosesc protocolul industrial standardizat pentru comunicare. Toate cele patru straturi (Service Transport, XML Messaging, Service Description și straturi Service Discovery) utilizează protocoale bine definite în stiva de protocoale de servicii web.
  4. Reducerea costurilor de comunicare – Serviciile web folosesc protocolul SOAP prin HTTP, astfel încât să puteți utiliza internetul existent la preț redus pentru implementarea serviciilor web.

Servicii Web Architectură

Fiecare cadru are nevoie de un fel de arhitectură pentru a se asigura că întregul cadru funcționează așa cum se dorește, în mod similar, în serviciile web. The Servicii Web Architectură constă din trei roluri distincte, după cum este prezentat mai jos:

  1. Furnizor de – Furnizorul creează serviciul web și îl pune la dispoziție aplicației client care doresc să-l folosească.
  2. Solicitantul – Un solicitant nu este altceva decât aplicația client care trebuie să contacteze un serviciu web. Aplicația client poate fi un .Net, Java, sau orice altă aplicație bazată pe limbaj care caută un fel de funcționalitate prin intermediul unui serviciu web.
  3. Broker – Brokerul nu este altceva decât aplicația care oferă acces la UDDI. UDDI, așa cum sa discutat în subiectul anterior, permite aplicației client să localizeze serviciul web.

Diagrama de mai jos arată modul în care furnizorul de servicii, solicitantul de servicii și registrul de servicii interacționează între ele.

Servicii Web Architectură

Servicii Web Architectură
  1. Publica – Un furnizor informează brokerul (registrul de servicii) despre existența serviciului web folosind interfața de publicare a brokerului pentru a face serviciul accesibil clienților
  2. Găsi – Solicitantul consultă brokerul pentru a localiza un serviciu web publicat
  3. Lega – Cu informațiile pe care le-a obținut de la broker (registrul de servicii) despre serviciul web, solicitantul poate lega, sau invoca, serviciul web.

Caracteristicile serviciului web

Serviciile web au următoarele caracteristici comportamentale speciale:

  1. Sunt bazate pe XML – Serviciile web utilizează XML pentru a reprezenta datele la nivelurile de reprezentare și transport de date. Utilizarea XML elimină orice dependență de rețea, sistem de operare sau platformă, deoarece XML este limbajul comun înțeles de toți.
  2. Slab cuplate – Cuplat liber înseamnă că clientul și serviciul web nu sunt legați unul de celălalt, ceea ce înseamnă că, chiar dacă serviciul web se modifică în timp, nu ar trebui să schimbe modul în care clientul apelează serviciul web. Adoptarea unei arhitecturi slab cuplate tinde să facă sistemele software mai ușor de gestionat și să permită o integrare mai simplă între diferite sisteme.
  3. Syncfuncționalitate sincronă sau asincronă - Synchronicitatea se referă la legarea clientului de executarea serviciului. În operațiunile sincrone, clientul va aștepta de fapt ca serviciul web să finalizeze o operațiune. Un exemplu în acest sens este probabil un scenariu în care se realizează o operație de citire și scriere a bazei de date. Dacă datele sunt citite dintr-o bază de date și ulterior scrise în alta, atunci operațiunile trebuie efectuate într-o manieră secvențială. Operațiile asincrone permit unui client să invoce un serviciu și apoi să execute alte funcții în paralel. Aceasta este una dintre tehnicile comune și probabil cele mai preferate pentru a se asigura că alte servicii nu sunt oprite atunci când se efectuează o anumită operațiune.
  4. Abilitatea de a sprijini apeluri de procedură la distanță (RPC) – Serviciile web permit clienților să invoce proceduri, funcții și metode pe obiecte la distanță folosind un protocol bazat pe XML. Procedurile de la distanță expun parametrii de intrare și de ieșire pe care un serviciu web trebuie să îi suporte.
  5. Acceptă schimbul de documente – Unul dintre avantajele cheie ale XML este modul său generic de a reprezenta nu numai datele, ci și documentele complexe. Aceste documente pot fi la fel de simple ca reprezentarea unei adrese curente sau pot fi la fel de complexe ca reprezentarea unei cărți întregi.