Tutorial SOAP Web Services: Ce este protocolul SOAP? EXEMPLU

Cuprins:

Anonim

Ce este SOAP?

SOAP este un protocol bazat pe XML pentru accesarea serviciilor web prin HTTP. Are unele specificații care ar putea fi utilizate în toate aplicațiile.

SOAP este cunoscut sub numele de Simple Object Access Protocol, dar în vremurile ulterioare tocmai a fost scurtat la SOAP v1.2. SOAP este un protocol sau cu alte cuvinte este o definiție a modului în care serviciile web vorbesc între ele sau vorbesc cu aplicațiile client care le invocă.

SOAP a fost dezvoltat ca un limbaj intermediar, astfel încât aplicațiile construite pe diferite limbaje de programare să poată vorbi ușor între ele și să evite efortul extrem de dezvoltare.

În acest tutorial de servicii web SOAP, veți învăța-

  • Introducere SOAP
  • Avantajele săpunului
  • SOAP Blocuri de construcție
  • Structura mesajului SOAP
  • Element plic SOAP
  • Modelul de comunicare SOAP
  • Exemplu practic de săpun

Introducere SOAP

În lumea de astăzi, există un număr mare de aplicații care sunt construite pe diferite limbaje de programare. De exemplu, ar putea exista o aplicație web proiectată în Java, alta în .Net și alta în PHP.

Schimbul de date între aplicații este crucial în lumea actuală în rețea. Dar schimbul de date între aceste aplicații eterogene ar fi complex. La fel va fi complexitatea codului pentru realizarea acestui schimb de date.

Una dintre metodele utilizate pentru a combate această complexitate este utilizarea XML (Extensible Markup Language) ca limbaj intermediar pentru schimbul de date între aplicații.

Fiecare limbaj de programare poate înțelege limbajul de marcare XML. Prin urmare, XML a fost utilizat ca mediu de bază pentru schimbul de date.

Dar nu există specificații standard privind utilizarea XML în toate limbajele de programare pentru schimbul de date. Aici intervine software-ul SOAP.

SOAP a fost conceput pentru a funcționa cu XML prin HTTP și pentru a avea un fel de specificații care ar putea fi utilizate în toate aplicațiile. Vom analiza mai multe detalii despre protocolul SOAP în capitolele următoare.

Avantajele săpunului

SOAP este protocolul utilizat pentru schimbul de date între aplicații. Mai jos sunt câteva dintre motivele pentru care este utilizat SOAP.

  • Când dezvoltați servicii web bazate pe SOAP, trebuie să aveți o limbă care poate fi utilizată pentru serviciile web pentru a vorbi cu aplicațiile client. SOAP este mediul perfect care a fost dezvoltat pentru a atinge acest scop. Acest protocol este, de asemenea, recomandat de consorțiul W3C, care este organul de conducere pentru toate standardele web.
  • SOAP este un protocol ușor care este utilizat pentru schimbul de date între aplicații. Rețineți cuvântul cheie „ lumină ”. Deoarece programarea SOAP se bazează pe limbajul XML, care în sine este un limbaj ușor de schimb de date, prin urmare SOAP ca un protocol care se încadrează și în aceeași categorie.
  • SOAP este conceput pentru a fi independent de platformă și este, de asemenea, proiectat pentru a fi independent de sistemul de operare. Deci protocolul SOAP poate funcționa cu orice aplicație bazată pe limbaj de programare atât pe platforma Windows, cât și pe cea Linux.
  • Funcționează pe protocolul HTTP -SOAP funcționează pe protocolul HTTP, care este protocolul implicit utilizat de toate aplicațiile web. Prin urmare, nu există niciun fel de personalizare care este necesară pentru a rula serviciile web construite pe protocolul SOAP pentru a funcționa pe World Wide Web.

Blocuri de construcții SOAP

Specificația SOAP definește ceva cunoscut sub numele de „ mesaj SOAP ” care este trimis către serviciul web și aplicația client.

Diagrama de mai jos a arhitecturii SOAP prezintă diferitele elemente de bază ale unui mesaj SOAP.

Blocuri de construcție a mesajelor SOAP

Mesajul SOAP nu este altceva decât un simplu document XML care are componentele de mai jos.

  • Un element plic care identifică documentul XML ca mesaj SOAP - Aceasta este partea care conține mesajul SOAP și este utilizată pentru a încapsula toate detaliile din mesajul SOAP. Acesta este elementul rădăcină din mesajul SOAP.
  • Un element antet care conține informații despre antet - Elementul antet poate conține informații precum acreditări de autentificare care pot fi utilizate de aplicația apelantă. Poate conține, de asemenea, definiția tipurilor complexe care ar putea fi utilizate în mesajul SOAP. În mod implicit, mesajul SOAP poate conține parametri care ar putea fi de tipuri simple, cum ar fi șiruri și numere, dar pot fi, de asemenea, un tip de obiect complex.

Un exemplu simplu de serviciu SOAP de tip complex este prezentat mai jos.

Să presupunem că dorim să trimitem un tip de date structurate care să aibă o combinație între un „nume tutorial” și o „descriere tutorial”, apoi am defini tipul complex așa cum se arată mai jos.

Tipul complex este definit de eticheta element . Toate elementele necesare ale structurii împreună cu tipurile lor de date respective sunt apoi definite în colecția de tip complex.

  • Un element Body care conține informații despre apel și răspuns - Acest element conține datele reale care trebuie trimise între serviciul web și aplicația de apelare. Mai jos este un exemplu de serviciu web SOAP al corpului SOAP care funcționează de fapt pe tipul complex definit în secțiunea antet. Iată răspunsul numelui tutorialului și al descrierii tutorialului care este trimis aplicației care apelează care apelează acest serviciu web.
Web ServicesAll about web services

Structura mesajului SOAP

Un lucru de remarcat este că mesajele SOAP sunt în mod normal generate automat de serviciul web atunci când este apelat.

Ori de câte ori o aplicație client apelează o metodă din serviciul web, serviciul web va genera automat un mesaj SOAP care va avea detaliile necesare ale datelor care vor fi trimise de la serviciul web către aplicația client.

După cum sa discutat în subiectul anterior al acestui tutorial SOAP, un mesaj SOAP simplu are următoarele elemente -

  • Elementul Plic
  • Elementul antet și
  • Elementul corpului
  • Elementul Fault (Opțional)

Să vedem un exemplu de mai jos al unui mesaj SOAP simplu și să vedem ce element face de fapt.

Structura mesajului SOAP
  1. După cum se vede din mesajul SOAP de mai sus, prima parte a mesajului SOAP este elementul plic care este utilizat pentru a încapsula întregul mesaj SOAP.
  2. Următorul element este corpul SOAP care conține detaliile mesajului real.
  3. Mesajul nostru conține un serviciu web care poartă numele de „Guru99WebService”.
  4. „Guru99Webservice” acceptă un parametru de tipul „int” și are numele TutorialID.

Acum, mesajul SOAP de mai sus va fi transmis între serviciul web și aplicația client.

Puteți vedea cât de utile sunt informațiile de mai sus pentru aplicația client. Mesajul SOAP spune aplicației client care este numele serviciului web și, de asemenea, ce parametri se așteaptă și, de asemenea, care este tipul fiecărui parametru care este luat de serviciul web.

Element plic SOAP

Primul bit al blocului de construcție este plicul SOAP.

Plicul SOAP este utilizat pentru a încapsula toate detaliile necesare ale mesajelor SOAP, care sunt schimbate între serviciul web și aplicația client.

Elementul plic SOAP este utilizat pentru a indica începutul și sfârșitul unui mesaj SOAP. Aceasta permite aplicației client care apelează serviciul web să știe când se termină mesajul SOAP.

Următoarele puncte pot fi notate pe elementul plic SOAP.

  • Fiecare mesaj SOAP trebuie să aibă un element plic rădăcină. Este absolut obligatoriu ca mesajul SOAP să aibă un element plic.
  • Fiecare element de plic trebuie să aibă cel puțin un element de corp de săpun.
  • Dacă un element Plic conține un element antet, nu trebuie să conțină mai mult de unul și trebuie să apară ca primul copil al Plicului, înaintea elementului corp.
  • Plicul se schimbă când se modifică versiunile SOAP.
  • Un procesor SOAP compatibil v1.1 generează o eroare la primirea unui mesaj care conține spațiul de nume plic v1.2.
  • Un procesor SOAP compatibil v1.2 generează o eroare de nepotrivire a versiunii dacă primește un mesaj care nu include spațiul de nume plic v1.2.

Mai jos este un exemplu SOAP API al versiunii 1.2 a elementului plic SOAP.

int

Mesajul de eroare

Când se face o solicitare către un serviciu web SOAP, răspunsul returnat poate fi fie din 2 forme care sunt un răspuns de succes, fie un răspuns de eroare. Când se generează un succes, răspunsul de la server va fi întotdeauna un mesaj SOAP. Dar dacă sunt generate erori SOAP, acestea sunt returnate ca erori „HTTP 500”.

Mesajul SOAP Fault este format din următoarele elemente.

  1. - Acesta este codul care desemnează codul erorii. Codul de eroare poate fi oricare dintre valorile de mai jos
    1. SOAP-ENV: VersionMismatch - Acesta este momentul în care se întâlnește un spațiu de nume nevalid pentru elementul SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Un element secundar imediat al elementului Header, cu atributul mustUnderstand setat la „1”, nu a fost înțeles.
    3. SOAP-ENV: Client - Mesajul a fost format incorect sau conținea informații incorecte.
    4. SOAP-ENV: Server - A apărut o problemă cu serverul, astfel încât mesajul nu a putut continua.
  2. - Acesta este mesajul text care oferă o descriere detaliată a erorii.
  3. (Opțional) - Acesta este un șir de text care indică cine a cauzat defecțiunea.
  4. (Opțional) - Acesta este elementul pentru mesajele de eroare specifice aplicației. Deci, aplicația ar putea avea un mesaj de eroare specific pentru diferite scenarii de logică de afaceri.

Exemplu pentru mesajul de eroare

Un exemplu de mesaj de eroare este dat mai jos. Eroarea este generată dacă scenariul în care clientul încearcă să utilizeze o metodă numită TutorialID în clasa GetTutorial.

Mesajul de eroare de mai jos este generat în cazul în care metoda nu există în clasa definită.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Ieșire:

Când executați codul de mai sus, acesta va afișa eroarea ca „Metoda de localizare a eșuat (GetTutorialID) în clasă (GetTutorial)”

Modelul de comunicare SOAP

Toată comunicarea prin SOAP se face prin protocolul HTTP. Înainte de SOAP, o mulțime de servicii web foloseau stilul standard RPC (Remote Procedure Call) pentru comunicare. Acesta era cel mai simplu tip de comunicare, dar avea multe limitări.

Acum, în acest tutorial API SOAP, să luăm în considerare diagrama de mai jos pentru a vedea cum funcționează această comunicare. În acest exemplu, să presupunem că serverul găzduiește un serviciu web care a furnizat 2 metode ca

  • GetEmployee - Aceasta ar obține toate detaliile angajaților
  • SetEmployee - Aceasta ar seta valoarea detaliilor, cum ar fi departamentul angajaților, salariul etc., în consecință.

În comunicarea normală în stil RPC, clientul ar fi apelat metodele din cererea sa și va trimite parametrii necesari către server, iar serverul ar trimite apoi răspunsul dorit.

Modelul de comunicare de mai sus are limitările serioase de mai jos

  1. Nu este independent de limbă - Serverul care găzduiește metodele ar fi într-un anumit limbaj de programare și în mod normal, apelurile către server ar fi doar în acel limbaj de programare.
  2. Nu protocolul standard - Când se efectuează un apel către procedura la distanță, apelul nu se efectuează prin protocolul standard. Aceasta a fost o problemă, deoarece în mare parte toate comunicările pe web trebuiau făcute prin protocolul HTTP.
  3. Firewall-uri - Deoarece apelurile RPC nu merg prin protocolul normal, trebuie să fie deschise porturi separate pe server pentru a permite clientului să comunice cu serverul. În mod normal, toate firewall-urile ar bloca acest tip de trafic și, în general, a fost necesară multă configurație pentru a se asigura că acest tip de comunicare între client și server ar funcționa.

Pentru a depăși toate limitările menționate mai sus, SOAP ar folosi apoi modelul de comunicare de mai jos

  1. Clientul va format informațiile referitoare la apelul de procedură și orice argumente într-un mesaj SOAP și le trimite serverului ca parte a unei cereri HTTP. Acest proces de încapsulare a datelor într-un mesaj SOAP a fost cunoscut sub numele de Marshalling.
  2. Serverul ar desface apoi mesajul trimis de client, va vedea pentru ce a solicitat clientul și apoi va trimite răspunsul corespunzător clientului ca mesaj SOAP. Practica desfacerii unei cereri trimise de client este cunoscută sub numele de Demarshalling.

Exemplu practic de săpun

Acum, în acest tutorial SoapUI, să vedem un exemplu practic SOAP,

Probabil unul dintre cele mai bune moduri de a vedea cum sunt generate mesajele SOAP este de a vedea efectiv un serviciu web în acțiune.

Acest subiect va analiza utilizarea cadrului Microsoft.Net pentru a crea un serviciu web ASMX. Acest tip de serviciu web acceptă atât versiunea SOAP 1.1, cât și versiunea 1.2.

Serviciile web ASMX generează automat documentul WSDL (Language Service Definition Language). Acest document WSDL este cerut de aplicația client apelantă, astfel încât aplicația să știe ce este capabil să facă serviciul web.

În exemplul nostru, vom crea un serviciu web simplu, care va fi utilizat pentru a returna un șir către aplicația care apelează serviciul web.

Acest serviciu web va fi găzduit într-o aplicație web Asp.Net. Apoi vom invoca serviciul web și vom vedea rezultatul care este returnat de serviciul web.

Visual Studio ne va arăta, de asemenea, ce mesaj SOAP este transmis între serviciul web și aplicația de apelare.

Prima condiție prealabilă pentru configurarea aplicației noastre de servicii Web, care poate fi realizată urmând pașii de mai jos.

Vă rugăm să vă asigurați că aveți Visual Studio 2013 instalat pe sistemul dvs. pentru acest exemplu.

Pasul 1) Primul pas este crearea unei aplicații web ASP.Net goale. Din Visual Studio 2013, faceți clic pe opțiunea de meniu Fișier-> Proiect nou.

După ce faceți clic pe opțiunea Proiect nou, Visual Studio vă va oferi apoi o altă casetă de dialog pentru alegerea tipului de proiect și pentru a oferi detaliile necesare ale proiectului. Acest lucru este explicat în pasul următor.

Pasul 2) În acest pas,

  1. Asigurați-vă că alegeți mai întâi șablonul web C # al aplicației Web ASP.NET. Proiectul trebuie să fie de acest tip pentru a crea un proiect de servicii SOAP. Alegând această opțiune, Visual Studio va efectua apoi pașii necesari pentru a adăuga fișierele necesare care sunt solicitate de orice aplicație bazată pe web.
  2. Dați un nume proiectului dvs. care, în cazul nostru, a fost dat ca webservice.asmx. Apoi asigurați-vă că dați o locație în care vor fi stocate fișierele proiectului.

După ce ați terminat, veți vedea fișierul de proiect creat în soluția dvs. de explorare în Visual Studio 2013.

Pasul 3) În acest pas,

Vom adăuga un fișier de serviciu Web la proiectul nostru

  1. Mai întâi faceți clic dreapta pe fișierul de proiect așa cum se arată mai jos

  1. După ce faceți clic dreapta pe fișierul proiectului, aveți șansa de a alege opțiunea „Adăugare-> Serviciu web (ASMX) pentru a adăuga un fișier de serviciu web. Doar furnizați un nume de serviciu tutorial pentru fișierul cu numele serviciului web.

Pasul 4) Adăugați următorul cod în fișierul dvs. asmx Service Tutorial.

Explicatie cod:

  1. Această linie de cod oferă un nume pentru fișierul dvs. de servicii web. Acesta este un pas important, deoarece oferă loc aplicației client să apeleze serviciul web prin numele serviciului web.
  2. În mod normal, un fișier de clasă este utilizat pentru a încapsula funcționalitatea unui serviciu web. Deci, fișierul clasei va avea definiția tuturor metodelor web care vor oferi o anumită funcționalitate aplicației client.
  3. Aici [WebMethod] este cunoscut ca un atribut care descrie o funcție. Pasul ulterior creează o funcție numită „Guru99WebService”, dar prin includerea acestui pas de adăugare a unui atribut [WebMethod] se asigură că această metodă poate fi invocată de o aplicație client. Dacă acest atribut nu este în poziție, atunci metoda nu poate fi apelată niciodată de o aplicație client.
  4. Aici definim o funcție numită „Guru99WebService” care va fi utilizată pentru a returna un șir către aplicația client apelantă. Această funcție este un serviciu web care poate fi apelat de orice aplicație client.
  5. Folosim declarația return pentru a returna șirul „Acesta este un serviciu web Guru99” aplicației client.

Dacă codul este executat cu succes, următoarea ieșire va fi afișată când rulați codul în browser.

Ieșire:

  • Rezultatul arată în mod clar că numele serviciului nostru web este „Guru99 Web Service”, care este rezultatul oferirii unui nume pentru serviciul nostru web.
  • De asemenea, putem vedea că putem invoca serviciul web. Dacă facem clic pe butonul Invocare, vom primi răspunsul de mai jos în browserul web.

Rezultatul de mai sus,

  • Arată clar că prin invocarea metodei web, se returnează șirul „Acesta este un serviciu web Guru99”.
  • Visual Studio vă permite, de asemenea, să vizualizați solicitarea și răspunsul mesajului SOAP care este generat când este apelat serviciul web de mai sus.

Solicitarea SOAP care este generată la apelarea serviciului web este prezentată mai jos.

Explicatie cod:

  1. Prima parte a mesajului SOAP este elementul plic care este discutat în capitolele anterioare. Acesta este elementul de încapsulare care este prezent în fiecare mesaj SOAP.
  2. Corpul SOAP este următorul element și conține detaliile reale ale mesajului SOAP.
  3. A treia parte este elementul care specifică faptul că dorim să apelăm serviciul care se numește „Guru99WebService”.

string

Explicatie cod:

  1. Prima parte a mesajului SOAP este elementul plic care este discutat în capitolele anterioare. Acesta este elementul de încapsulare care este prezent în fiecare mesaj SOAP.
  2. Corpul SOAP este următorul element și conține detaliile reale ale mesajului SOAP.
  3. Partea interesantă pe care o veți vedea acum este atributul „șir”. Aceasta spune aplicației client că serviciul web care este apelat returnează un obiect de tip șir. Acest lucru este foarte util deoarece, dacă aplicația client care altfel nu ar ști ce returnează serviciul web.

rezumat

  • SOAP este un protocol care este utilizat pentru a schimba date între aplicații care sunt construite pe diferite limbaje de programare.
  • SOAP este construit pe baza specificațiilor XML și funcționează cu protocolul HTTP. Acest lucru îl face perfect pentru utilizarea în cadrul aplicațiilor web.
  • Blocurile de construcție SOAP constau dintr-un mesaj SOAP. Fiecare mesaj SOAP constă dintr-un element plic, un antet și un element corp.
  • Elementul plic este elementul obligatoriu din mesajul SOAP și este utilizat pentru a încapsula toate datele din mesajul SOAP.
  • Elementul antet poate fi utilizat pentru a conține informații precum informații de autentificare sau definirea tipurilor de date complexe.
  • Elementul corp este elementul principal care conține definiția metodelor web împreună cu orice informații despre parametri, dacă este necesar.