Ce este WSDL? Semnificație și exemplu
⚡ Rezumat inteligent
WSDL (Servicii web Description Language) este un fișier bazat pe XML care îi spune unei aplicații client ce face un serviciu web și cum să îl apeleze. Această resursă explică structura WSDL, elementele, mesajele, tipurile de porturi, legăturile și un exemplu de publicare.
Ce este WSDL?
Servicii Web DescriptLimbajul ionic (WSDL) este un fișier bazat pe XML care, practic, spune aplicației client ce face serviciul web. Fișierul WSDL este folosit pentru a descrie pe scurt ce face serviciul web și oferă clientului toate informațiile necesare pentru a se conecta la serviciul web și a utiliza toate funcționalitățile oferite de serviciul web.
În acest tutorial, ne vom concentra pe cea mai importantă parte a serviciilor web, și anume WSDL sau Serviciile Web. DescriptLimbaj ionic. Acționează ca și contract între serviciul web și orice client care dorește să îl consume.
Structura unui document WSDL
Un document WSDL este utilizat pentru a descrie un serviciu web. Această descriere este necesară pentru ca aplicațiile client să poată înțelege ce face de fapt serviciul web.
- Fișierul WSDL conține locația serviciului web și
- Metodele care sunt expuse de serviciul web.
Fișierul WSDL în sine poate părea foarte complex pentru orice utilizator, dar conține toate informațiile necesare de care orice aplicație client ar avea nevoie pentru a utiliza serviciul web relevant. Mai jos este structura generală a unui fișier WSDL:
- Definiție
- TargetSpațiu de nume
- Tipuri de date
- Chat cont
- Porttype
- Bindings
- Service
Un lucru cheie de reținut aici este că definiția mesajelor, adică ceea ce este transmis de Protocolul SOAP, este de fapt definit în documentul WSDL. Documentul WSDL indică unei aplicații client tipurile de mesaje SOAP trimise și acceptate de serviciul web.
Cu alte cuvinte, WSDL este exact ca o carte poștală care conține adresa unei anumite locații. Adresa oferă detalii despre locul unde trebuie livrat mesajul. Prin urmare, în același mod, fișierul WSDL este cartea poștală care conține adresa serviciului web ce poate oferi toate funcționalitățile dorite de client.
<!-- WSDL definition structure --> <definitions name="Guru99Service" targetNamespace=http://example.org/math/ xmlns=http://schemas.xmlsoap.org/wsdl/> <!-- abstract definitions --> <types> ... <message> ... <portType> ... <!-- concrete definitions --> <binding> ... <service> ... </definition>
Mai jos este o diagramă a structurii unui fișier WSDL.
Structura unui WSDL
Elemente WSDL
Fișierul WSDL conține următoarele părți principale:
- Eticheta este utilizată pentru a defini toate tipurile de date complexe care vor fi utilizate în mesajul schimbat între aplicația client și serviciul web. Acest lucru este important deoarece, dacă serviciul web lucrează cu un tip de date complex, atunci aplicația client ar trebui să știe cum să îl proceseze. Tipurile de date precum float, numbers și strings sunt toate tipuri de date simple, dar ar putea exista tipuri de date structurate furnizate de serviciul web. De exemplu, ar putea exista un tip de date numit EmployeeDataType care ar putea avea 2 elemente numite „EmployeeName” de tip string și „EmployeeID” de tip number sau integer. Împreună, acestea formează un tip de date complex.
- Eticheta este utilizată pentru a defini mesajul care este schimbat între aplicația client și serverul web. Aceste mesaje explică operațiunile de intrare și ieșire care pot fi efectuate de serviciul web. Un exemplu de mesaj poate fi unul care acceptă EmployeeID-ul unui angajat, iar mesajul de ieșire poate fi numele angajatului pe baza EmployeeID-ului furnizat.
- eticheta este folosită pentru a încapsula fiecare mesaj de intrare și ieșire într-o singură operație logică. Deci ar putea exista o operațiune numită „GetEmployee” care combină mesajul de intrare de acceptare a EmployeeID de la o aplicație client și apoi trimiterea EmployeeName ca mesaj de ieșire.
- Eticheta este utilizată pentru a lega operațiunea la un anumit tip de port. Acest lucru se face astfel încât, atunci când aplicația client apelează tipul de port relevant, să poată accesa operațiunile legate de aceasta. Tipurile de porturi sunt exact ca interfețele. Așadar, dacă o aplicație client trebuie să utilizeze un serviciu web, trebuie să utilizeze informațiile de legare pentru a se asigura că se poate conecta la interfața furnizată de acel serviciu web.
- Eticheta este un nume dat serviciului web în sine. Inițial, când o aplicație client apelează serviciul web, o va face apelând numele serviciului web. De exemplu, un serviciu web poate fi localizat la o adresă precum http://localhost/Guru99/Tutorial.asmx. Eticheta de service va avea URL definit, care indică aplicației client că un serviciu web este disponibil în această locație.
De ce WSDL
Un serviciu web este o componentă importantă în construirea aplicațiilor web moderne. Scopul lor principal este de a permite mai multor aplicații construite în diverse limbaje de programare să comunice între ele. De exemplu, putem face ca o aplicație web .Net să comunice cu un... Java aplicație prin intermediul unui serviciu Web.
Un serviciu web are următoarele caracteristici cheie:
- Este construit folosind limbajul de programare XML. Aproape toate tehnologiile moderne, cum ar fi .Net și Java au comenzi corespunzătoare care au capacitatea de a lucra cu XML. Prin urmare, XML a fost considerat cel mai potrivit limbaj pentru construirea de servicii web.
- Serviciile web comunică prin HTTP. HTTP este un protocol utilizat de toate aplicațiile web. Prin urmare, a fost logic să se asigure că serviciile web aveau și capacitatea de a funcționa prin protocolul HTTP.
- Serviciile web sunt conforme cu o anumită specificație de limbă. Această specificație este stabilită de W3C, care este organismul de conducere pentru toate standardele web.
- Serviciile web au un limbaj de descriere cunoscut sub numele de WSDL, care este folosit pentru a descrie serviciul web.
Fișierul WSDL este scris în XML simplu. Motivul pentru care este în XML este acela că fișierul poate fi citit de orice limbaj de programare. Deci, dacă aplicația client ar fi scrisă în .Net, ar înțelege fișierul XML. În mod similar, dacă aplicația client ar fi scrisă în Java limbaj de programare, atunci ar putea interpreta și fișierul WSDL.
Fișierul WSDL este cel care leagă totul împreună. Din diagrama de mai sus, puteți vedea că puteți crea un serviciu web în limbajul .Net. Deci, aici este implementat serviciul. Dacă nu aveați fișierul WSDL și doreați un Java pentru a consuma serviciul web, ar fi nevoie de mult efort de codare pentru a realiza acest lucru. Dar acum, cu fișierul WSDL, care este în XML și poate fi înțeles de orice limbaj de programare, puteți avea cu ușurință un Java clasa consuma serviciul web .Net. Prin urmare, cantitatea de efort de codare este mult redusă.
Partea mesajului WSDL
WSDL constă dintr-o secțiune numită „mesaje” care este notat cu element. Acest element este folosit practic pentru a descrie datele care sunt schimbate între serviciul web și aplicația client.
Fiecare serviciu web va avea întotdeauna 2 tipuri de mesaje:
- Unul este pentru intrarea serviciului web, iar celălalt este pentru ieșirea serviciului web.
- Intrarea este folosită pentru a descrie parametrii acceptați de serviciul web. Acesta este un aspect important al aplicației client, astfel încât să cunoască valorile care trebuie trimise ca parametri către serviciul web.
- Celălalt tip de mesaj este mesajul de ieșire care spune ce rezultate sunt furnizate de serviciul web.
Fiecare mesaj, la rândul său, va avea un element care este folosit pentru a descrie parametrul utilizat de mesajul de intrare și de ieșire.
Mai jos este un exemplu simplu despre cum arată un mesaj pentru un serviciu web. Funcționalitatea serviciului web este de a furniza numele unui „Tutorial” odată ce un „ID de tutorial” este trimis ca parametru serviciului web.
- După cum putem vedea, serviciul web are 2 mesaje, unul pentru intrare și celălalt pentru ieșire.
- Mesajul de intrare este cunoscut sub numele de TutorialNameRequest și are un parametru numit TutorialID. Acest parametru este de tipul number, specificat de tipul xsd:number.
- Mesajul de ieșire este cunoscut sub numele de TutorialNameResponse și are un parametru numit TutorialName. Acest parametru este de tipul șir de caractere, specificat de tipul xsd:string.
Legare tip port
Porturile sunt utilizate în WSDL pentru a defini o operație completă oferită de serviciul web. În subiectul anterior, am văzut că serviciul nostru web a furnizat 2 mesaje, unul pentru intrarea numită „TutorialNameRequest” și celălalt pentru ieșirea numită „TutorialNameResponse”. Împreună, mesajul de intrare și ieșire formează ceea ce este cunoscut sub numele de o operație completă.
WSDL oferă un element numit care este folosit pentru a defini operațiunile furnizate de serviciul Web.
Deci, în exemplul nostru de mai sus putem observa următoarele:
- Numele tipului de port care încapsulează operațiunea este dat ca „Tutorial_PortType”.
- Operația în sine primește numele „Tutorial”. Așadar, operația noastră oferă practic un TutorialName dacă TutorialID este dat ca parametru de intrare.
- Urmează cele 2 mesaje ale noastre, unul pentru intrare și celălalt pentru ieșire, care formează operația noastră.
În plus față de element, există și element care este utilizat pentru a defini modul în care vor fi transferate mesajele.
- Exemplul de mai sus arată că legarea constă într-un nume de legătură, care în cazul nostru este dat ca „TutorialSoapBinding”. Legarea, în termeni simpli, reprezintă informațiile pe care aplicația client le folosește pentru a se lega efectiv de serviciul web. Odată ce este legată de serviciul web, are capacitatea de a apela diversele operațiuni expuse de serviciul web.
- Stratul de transport este dat ca http://, ceea ce înseamnă că mesajele vor fi transferate prin protocolul HTTP.
Crearea fișierului WSDL
Fișierul WSDL este creat ori de câte ori un serviciu web este construit în orice limbaj de programare. Deoarece fișierul WSDL este destul de complicat pentru a fi generat de la zero, toate editoare precum Visual Studio pentru .Net și Eclipse pentru Java creați automat fișierul WSDL.
Mai jos este un exemplu de fișier WSDL creat în Visual Studio.
<?xml version="1.0"?> <definitions name="Tutorial" targetNamespace=http://Guru99.com/Tutorial.wsdl xmlns:tns=http://Guru99.com/Tutorial.wsdl xmlns:xsd1=http://Guru99.com/Tutorial.xsd xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/ xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace=http://Guru99.com/Tutorial.xsd xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TutorialNameRequest"> <complexType> <all> <element name="TutorialName" type="string"/> </all> </complexType> </element> <element name="TutorialIDRequest"> <complexType> <all> <element name="TutorialID" type="number"/> </all> </complexType> </element> </schema> </types> <message name="GetTutorialNameInput"> <part name="body" element="xsd1:TutorialIDRequest"/> </message> <message name="GetTutorialNameOutput"> <part name="body" element="xsd1:TutorialNameRequest"/> </message> <portType name="TutorialPortType"> <operation name="GetTutorialName"> <input message="tns:GetTutorialNameInput"/> <output message="tns:GetTutorialNameOutput"/> </operation> </portType> <binding name="TutorialSoapBinding" type="tns:TutorialPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTutorialName"> <soap:operation soapAction="http://Guru99.com/GetTutorialName"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="TutorialService"> <documentation>TutorialService</documentation> <port name="TutorialPort" binding="tns:TutorialSoapBinding"> <soap:address location="http://Guru99.com/Tutorial"/> </port> </service> </definitions>
Fișierul WSDL de mai sus pare foarte intimidant pentru orice utilizator. Vom acoperi diferitele părți în detaliu în tutorialele următoare, dar deocamdată, haideți să aruncăm o privire pe scurt asupra a ceea ce face de fapt fiecare secțiune a fișierului WSDL.
Publicarea unui exemplu de serviciu web
Acum să vedem un exemplu despre cum putem publica un serviciu web și cum îl putem consuma folosind Visual Studio. În acest exemplu, vom crea un serviciu web cu o singură metodă Web. Această metodă va accepta un parametru întreg numit „TutorialID”. Metoda Web va returna apoi un șir de caractere numit „Servicii Web”.
Apoi vom crea o aplicație bazată pe consolă, care va consuma acest serviciu web și va apela metoda noastră web în consecință. Să analizăm pașii necesari pentru a realiza acest exemplu.
Pas 1) Primul pas este să vă creați serviciul web. Pașii detaliați ai modului în care Asp.Net proiect web și un serviciu web sunt create au fost explicate aiciVă rugăm să urmați aceiași pași pentru a crea proiectul și serviciul web în consecință. Partea cheie este să introduceți codul de mai jos în fișierul de servicii web.
namespace webservic_asmx { [WebService(Name = "Guru99 Web service")] public class TutorialService : System.Web.Services.WebService { [WebMethod] public string GetTutorialService(int TutorialID) { string TutorialName = "Web Services"; return TutorialName; } } }
Code Explicaţie:
- Aici creăm o metodă Web numită „Guru99WebService.” În această metodă web, includem un parametru întreg care trebuie transmis de fiecare dată când este apelată această metodă web.
- În continuare, definim o variabilă numită „TutorialName” care va deține valoarea șirului „Web Services”. Aceasta este valoarea care va fi returnată atunci când serviciul web este apelat.
Pas 2) După ce am definit fișierul serviciilor web, următorul pas este crearea unui proiect client care va consuma acest serviciu web. Să creăm o aplicație consolă simplă care va apela acest serviciu web, va invoca „Guru99WebService”, și apoi afișați rezultatul metodei web în ecranul de jurnal al consolei. Urmați pașii de mai jos pentru a crea o aplicație de consolă. Faceți clic dreapta pe fișierul soluției Visual Studio și alegeți opțiunea Adăugare->Proiect nou.
Pas 3) În această etapă,
- Asigurați-vă că alegeți mai întâi Vizual C# Windows opțiune. Apoi alegeți opțiunea de a crea o aplicație consolă.
- Dați un nume pentru proiectul dvs. care, în cazul nostru, a fost dat drept „DemoApplication”.
După ce faceți clic pe butonul OK din ecranul de mai sus, veți putea vedea proiectul în Solution Explorer din Visual Studio.
Pas 4) În acest pas, veți seta aplicația DemoApplication Console ca proiect de pornire. Acest lucru se face pentru a vă asigura că această aplicație se lansează prima atunci când este rulat întregul proiect Visual Studio. Această aplicație Console va apela, la rândul ei, serviciul web care va fi lansat automat de Visual Studio. Pentru a finaliza acest pas, faceți clic dreapta pe proiectul DemoApplication și alegeți opțiunea „Setare ca proiect de pornire”.
Pas 5) Următorul pas este să adăugăm referința serviciului nostru „Guru99Webservice” către aplicația noastră de consolă. Acest lucru este făcut astfel încât DemoApplication să poată face referire la serviciul web și la toate metodele web din serviciul web. Pentru a face acest lucru, faceți clic dreapta pe fișierul proiectului DemoApplication și alegeți opțiunea de meniu Adăugare->Referință serviciu.
Pas 6) În acest pas, vom furniza diferitele valori necesare pentru a adăuga referința serviciului nostru.
- În primul rând, trebuie să alegem opțiunea de descoperire. Această opțiune va prelua automat fișierul WSDL pentru serviciul nostru web TutorialService.
- Apoi, ar trebui să dăm un nume pentru referința serviciului nostru. În cazul nostru, îi dăm numele Guru99Webservice.
- Apoi trebuie să extindem opțiunea TutorialService.asmx astfel încât să putem vedea metoda „GetTutorialService” în partea dreaptă. Aici, TutorialService.asmx este numele fișierului nostru Visual Studio .Net care conține codul pentru serviciul nostru web.
- Vom vedea apoi metoda noastră Web pe care o aveam în serviciul nostru web, cunoscută sub numele de „GetTutorialService”.
Când facem clic pe butonul „OK”, tot codul necesar pentru accesarea acestui serviciu web va fi adăugat în aplicația noastră DemoApplication Console, așa cum se arată mai jos. Captura de ecran arată că „Guru„99Webservice” a fost adăugat cu succes în aplicația noastră de consolă.
Pas 7) Următorul pas este să adăugați codul în aplicația noastră de consolă pentru a accesa metoda web din serviciul nostru web. Deschideți fișierul de cod Program.cs care vine automat cu aplicația de consolă și adăugați codul de mai jos.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Explicaţie:
- Prima parte este alegerea fișierului Program.cs. Acesta este fișierul principal creat de Visual Studio atunci când este creată o aplicație consolă. Acest fișier este cel care se execută atunci când aplicația consolă (în cazul nostru, DemoApplication) este executată.
- Apoi creăm o variabilă numită „client” care va fi setată la o instanță a referinței noastre de serviciu, creată într-un pas anterior. În cazul nostru, referința de serviciu este „Guru99Webservice.Guru99WebserviceSoapClient()'.
- Apoi apelăm metoda noastră web „GetTutorialService” în serviciul web TutorialService. Rețineți că metoda noastră GetTutorialService acceptă un parametru întreg, deci transmitem doar un parametru întreg metodei web.
- Această ultimă linie are rolul de a ne asigura că ecranul de jurnal al consolei rămâne activ, astfel încât să putem vizualiza rezultatul. Această comandă va aștepta o intrare de la utilizator.
producție
După ce toți pașii de mai sus sunt urmați și DemoApplication este rulată, va fi afișat rezultatul de mai jos.
Din rezultat, putem vedea clar că DemoApplication apelează serviciul nostru Web și că șirul returnat de serviciul Web este afișat în jurnalul Consolei.
















