După ce vei citi acest articol, vei dobândi o înțelegere cuprinzătoare a serviciilor web, inclusiv scopul acestora, aplicațiile, beneficiile și tehnologiile de bază precum arhitectura REST și protocolul de mesagerie SOAP. Indiferent dacă ești la început de drum în domeniul serviciilor web sau dorești să îți aprofundezi cunoștințele, acest ghid îți va oferi informațiile necesare pentru a începe.
Să începem de la început.
Ce sunt serviciile web?
Odată cu evoluția internetului, a apărut și ideea de serviciu web.
Un serviciu web constă într-o colecție de operații accesibile prin rețea și prin protocolul HTTP. Odată ce este disponibil public sau printr-o listă de acces, beneficiile sale pot fi utilizate de una sau mai multe aplicații. Acesta asigură comunicarea între diferite aplicații software care pot rula pe platforme diferite. În general, reprezintă interfața web a unei baze de date.
Serviciile web moderne suportă atât funcționalitate sincronă, cât și asincronă.
Conceptul REST
Este un stil arhitectural simplu, bazat pe standardele Web și HTTP, devenind chiar mai utilizat decât modelul SOAP.
Există cinci metode HTTP principale utilizate pentru definirea operațiilor unui serviciu web RESTful:
POST – crearea unei resurse;
PUT – actualizarea stării unei resurse;
PATCH – actualizare parțială a unei resurse;
GET – citirea / returnarea unei resurse fără a o modifica;
DELETE – ștergerea unei resurse.
Resursele pot fi reprezentate în mai multe formate: JSON sau XML.
Serviciile web reprezintă o arhitectură scalabilă, deoarece separă responsabilitățile aplicației client de cele ale serverului. Este un model fără stare (stateless), deoarece serverul nu reține starea clientului.
Serviciile web sunt adesea utilizate împreună cu un sistem de caching pentru entități care nu suferă modificări frecvente. Acest lucru duce la creșterea vitezei de răspuns a serviciului web.
Exemplu JSON:
{
“first_name”: ”Ioan”,
“last_name”: ”Pop”,
“age”: 32,
“benefits”: [“scalability”, “interoperability”, “distribution”],
“address”: {
“city”: ”Baia Mare”,
“street”: “Mihai Eminescu”,
“number”: 23
}
}
Despre SOAP (Simple Object Access Protocol)
SOAP a fost primul protocol pentru conectarea la serviciile web bazate pe SOA (Service-Oriented Architecture). SOAP este construit peste specificația XML și folosește HTTP pentru transport.
Un mesaj SOAP este definit ca o structură de tip header și un element body. Header-ul poate conține informații de autentificare sau definirea unor tipuri de date complexe. Elementul body descrie metodele web și informații despre parametrii acestora.
SOAP Envelope:
<soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
<soap:Body>
<AWeserviceResponse xmls=http://tempuri.org/>
<AWebServiceResult>string</AWebServiceResul>
<AWebserviceResponse>
<soap:Body>
</soap:Envelope>
Cele mai bune practici de dezvoltare
Versionare
Lansarea unei noi versiuni a serviciului web care nu este compatibilă cu versiunea anterioară necesită versionarea serviciului web și menținerea ambelor versiuni atât timp cât clienții adoptă noua versiune.
Documentație
Serviciile web ar trebui să afișeze informații de tip metadate despre operațiile pe care le pot efectua. Fiecare metodă web ar trebui descrisă prin metoda HTTP, URI, antetele HTTP Request Accept și Content-Type, posibile coduri de răspuns HTTP, headere personalizate, exemple de răspuns și exemple de corpuri de cerere.
Logarea
Informațiile de tip log ar trebui grupate în aceeași secțiune a cererii și afișate la final, pentru a fi mai ușor de identificat în fișierele de log.
Gestionarea erorilor
Erorile trebuie raportate către client prin coduri de status HTTP:
200 Ok - Successful
400 - Bad Request
401 - Unauthorized
403 - Forbidden
404 - Not Found
405 - Method not allowed
500 - Internal Server Error
503 - Unavailable Service
Design URI
URI-urile ar trebui să fie concise, ușor de reținut, lipsite de ambiguitate în ceea ce privește resursa gestionată și construite din substantive care descriu resursa, nu din verbe care descriu acțiunea. Acțiunea este descrisă de metodele HTTP, care indică implicit tipul de operație efectuată asupra resursei. Este mai dificil să modifici URI-urile unui serviciu web odată ce acesta a fost publicat și utilizat de clienți. {id}URI
/client/{id}/message/{msg_id} {msg_id}
Beneficii
Interoperabilitate
Integrarea cu serviciile web oferă o soluție viabilă atunci când se lucrează cu sisteme diferite, sisteme legacy sau aplicații scrise în alte limbaje de programare. Această problemă a primit o atenție considerabilă încă din anii 2000.
Ușurința de utilizare
Serviciile web sunt construite pentru a fi accesate prin web, la fel cum o pagină HTML este accesată prin internet.
Reutilizarea
O aplicație client poate utiliza mai multe servicii web, adăugând valoare gestionării informațiilor. Prin intermediul serviciilor web, se pot integra diferite aplicații, în special sisteme legacy.
Distribuție
Distribuirea unui serviciu web utilizând un server cu funcționalități sincrone sau asincrone este simplă. În același timp, o nouă versiune a serviciului poate fi instalată și devine accesibilă într-un timp scurt.
Calitatea
Odată construite, serviciile web sunt testate independent de aplicațiile client, ceea ce se realizează într-un timp mai scurt decât în cazul aplicațiilor monolitice.
Costuri
Odată ce un set de servicii web este expus, aplicațiile client sunt dezvoltate mult mai ușor și la un cost mai redus, datorită timpului mai scurt de dezvoltare și integrare.
De ce să folosim servicii web?
Pentru a oferi integrare punct-la-punct;
Pentru a gestiona sisteme legacy;
Pentru a vinde Software-as-a-Service clienților;
Pentru a pune la dispoziția diferitelor aplicații din cadrul organizației web API-uri de business;
Pentru a reduce costurile de dezvoltare.