Tutorial WSDL: Servicii web DescriptLimbajul ion cu Exemplu

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 asupra ultimului punct care este cea mai importantă parte a serviciilor web și anume WSDL sau limbajul de descriere a serviciilor 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.

Structura unui document WSDL

Un document WSDL este folosit pentru a descrie un serviciu web. Această descriere este necesară, astfel încât 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 pe care le-ar avea nevoie orice aplicație client 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
  • serviciu

Un lucru cheie de remarcat aici este acea definiție a mesajelor, care este ceea ce este transmis de către Protocolul SOAP este de fapt definit în documentul WSDL.

Documentul WSDL spune de fapt unei aplicații client care sunt tipurile de mesaje SOAP care sunt trimise și acceptate de serviciul Web.

Cu alte cuvinte, WSDL este la fel ca o carte poștală care are adresa unei anumite locații. Adresa furnizează detaliile persoanei care a livrat cartea poștală. Prin urmare, în același mod, fișierul WSDL este cartea poștală, care are adresa serviciului web care poate oferi toată funcționalitatea dorită 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 document WSDL
Structura unui WSDL

Elemente WSDL

Fișierul WSDL conține următoarele părți principale

  1. tag-ul este folosit pentru a defini toate tipurile de date complexe, care vor fi folosite în mesajul schimbat între aplicația client și serviciul web. Acesta este un aspect important al aplicației client, deoarece dacă serviciul web funcționează cu un tip de date complex, atunci aplicația client ar trebui să știe cum să proceseze tipul de date complex. Tipurile de date precum float, numere și șiruri de caractere sunt toate tipuri de date simple, dar ar putea exista tipuri de date structurate care pot fi 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 șir și „EmployeeID” de tip număr sau întreg. Împreună formează o structură de date care devine apoi un tip de date complex.
  2. eticheta este folosită pentru a defini mesajul care este schimbat între aplicația client și serverul web. Aceste mesaje vor explica operațiunile de intrare și ieșire care pot fi efectuate de serviciul web. Un exemplu de mesaj poate fi un mesaj care acceptă EmployeeID al unui angajat, iar mesajul de ieșire poate fi numele angajatului pe baza EmpoyeeID furnizat.
  3. 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.
  4. eticheta este folosită pentru a lega operația la tipul de port particular. Astfel, atunci când aplicația client apelează tipul de port relevant, va putea apoi accesa operațiunile care sunt legate de acest tip de port. Tipurile de porturi sunt la fel ca interfețele. Deci, dacă o aplicație client trebuie să utilizeze un serviciu web, trebuie să utilizeze informațiile obligatorii pentru a se asigura că se poate conecta la interfața furnizată de acel serviciu web.
  5. eticheta este un nume dat serviciului web în sine. Inițial, atunci când o aplicație client efectuează un apel către serviciul web, acesta 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 serviciu va avea de fapt adresa URL definită ca http://localhost/Guru99/Tutorial.asmx, care va spune de fapt aplicației client că există un serviciu web 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 pe diferite limbaje de programare să vorbească între ele. De exemplu, putem avea o aplicație web .Net să discute 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 folosit de toate aplicațiile bazate pe web. Prin urmare, era logic să ne asigurăm că serviciile Web au ș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 vechi simplu. Motivul pentru care este în XML este că fișierul poate fi citit de orice limbaj de programare.

Deci, dacă aplicația client a fost scrisă în .Net, ar înțelege fișierul XML. În mod similar, dacă aplicația client a fost scrisă în Java limbaj de programare, atunci, de asemenea, ar putea interpreta fișierul WSDL.

Aveți nevoie de 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 limba .Net.

Deci aici este implementat serviciul. Dacă nu ați avut fișierul WSDL și ați dorit un Java pentru a consuma serviciul web, veți avea nevoie de mult efort de codare pentru a realiza acest lucru.

Dar acum, cu fișierul WSDL care este în XML, care poate fi înțeles de orice limbaj de programare, acum 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 tutorial” este trimis ca parametru serviciului web.

Partea mesajului WSDL

  1. După cum putem vedea, serviciul web are 2 mesaje, unul pentru intrare și celălalt pentru ieșire.
  2. Mesajul de intrare este cunoscut sub numele de TutorialNameRequest care are un parametru numit TutorialID. Acest parametru este de numărul de tip care este specificat de tipul xsd:number
  3. Mesajul de ieșire este cunoscut sub numele de TutorialNameResponse care are un parametru numit TutorialName. Acest parametru este de tipul șir specificat de tipul xsd:string

Legare tip port

Porturile sunt folosite în WSDL pentru a defini o operațiune completă, care este 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ă, formularul de mesaj de intrare și de ieșire este cunoscut ca o operațiune completă.

WSDL oferă un element numit care este folosit pentru a defini operațiunile furnizate de serviciul Web.

Legare tip port

Deci, în exemplul nostru de mai sus putem observa următoarele:

  1. Numele tipului de port care încapsulează operația este dat ca „Tutorial_PortType”.
  2. Operația în sine primește un nume de „Tutorial”. Deci operația noastră oferă practic un TutorialName dacă TutorialID este dat ca parametru de intrare.
  3. Urmează cele 2 mesaje ale noastre, unul pentru intrare și celălalt pentru ieșire, care formează operațiunea noastră

În plus față de element, există și element care este utilizat pentru a defini modul în care vor fi transferate mesajele.

Legare tip port

  1. Exemplul de mai sus arată că legarea constă dintr-un nume de legare care în cazul nostru este dat ca „TutorialSoapBinding”. Legarea în termeni simpli este informația pe care aplicația client le folosește pentru a se lega efectiv la serviciul web. Odată ce este legat efectiv de serviciul web, are apoi capacitatea de a apela diferitele operațiuni care sunt expuse de serviciul web.
  2. Stratul de transport este dat ca http://, ceea ce înseamnă că mesajele care vor fi transferate prin protocolul HTTP.

Crearea fișierului WSDL

Fișierul WSDL este creat de fiecare dată când 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, toți editorii, cum ar fi 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 ulterioare, dar, deocamdată, să aruncăm o privire rezumată la ceea ce face de fapt fiecare secțiune a fișierului WSDL

Publicarea unui exemplu de serviciu web

Acum să ne uităm la un exemplu despre cum putem publica un serviciu web și îl putem consuma utilizând Visual Studio.

În acest exemplu, vom crea un serviciu web cu o singură WebMethod. Această metodă va accepta un parametru întreg numit „TutorialID”. Metoda Web va returna apoi un șir numit „Servicii web”.

Vom crea apoi o aplicație bazată pe consolă, care va consuma acest serviciu web și va apela metoda noastră web în consecință.

Să ne uităm la 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 a fost explicat proiectul web și se creează un serviciu web Aici; Vă rugăm să urmați aceiași pași pentru a crea proiectul și serviciul web corespunzător. Partea cheie este să introduceți codul de mai jos în fișierul de servicii web.

Publicarea unui exemplu de serviciu web

namespace webservic asmx
{
	[WebService(Name = "Guru99 Web service")]
	public class TutorialService : System.Web.Services.WebService
	{
		[WebMethod]
		public string GetTutorialService(int TutoriallD)
		{
			string TutorialName = "Web Services";
			return TutorialName;
		}
	}
}

Explicația codului:

  1. Aici creăm o WebMethod numită „Guru99WebService”. În această metodă web, includem un parametru întreg care trebuie transmis ori de câte ori este apelată această metodă web.
  2. Î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) Odată ce am definit fișierul de servicii web, următorul pas este crearea unui proiect client care va consuma acest serviciu web.

Să creăm o aplicație simplă de consolă care va apela acest serviciu web, va invoca „Guru99WebService” și apoi va afișa rezultatul metodei web în ecranul de jurnal al consolei. Urmați pașii de mai jos pentru a crea o aplicație consolă.

Faceți clic dreapta pe fișierul soluției Visual Studio și alegeți opțiunea Adăugare->Proiect nou

Publicarea unui exemplu de serviciu web

Pasul 3) În această etapă,

  1. 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ă.
  2. Dați un nume pentru proiectul dvs. care, în cazul nostru, a fost dat drept „DemoApplication”.

Publicarea unui exemplu de serviciu web

După ce faceți clic pe butonul OK din ecranul de mai sus, veți putea vedea proiectul în Exploratorul de soluții din Visual Studio.

Publicarea unui exemplu de serviciu web

Pas 4) În acest pas, setați aplicația DemoApplication Console ca proiect de pornire. Acest lucru se face pentru a se asigura că această aplicație se lansează mai întâi când este rulat întregul proiect Visual Studio. Această aplicație Consolă va apela, la rândul său, 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 „Set as StartUp Project”.

Publicarea unui exemplu de serviciu web

Pas 5) Următorul pas este să adăugați referința serviciului nostru „Guru99Webservice” la aplicația noastră de consolă. Acest lucru se face 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 de proiect DemoApplication și alegeți opțiunea de meniu Add->Service Reference.

Publicarea unui exemplu de serviciu web

Pas 6) În acest pas, vom furniza diferitele valori care sunt necesare pentru a adăuga referința noastră de serviciu

  1. În primul rând, trebuie să ne alegem opțiunea de descoperire. Această opțiune va prelua automat fișierul WSDL pentru serviciul nostru web TutorialService.
  2. Apoi, ar trebui să dăm un nume pentru referința serviciului nostru. În cazul nostru, îi dăm un nume Guru99Webservice.
  3. Apoi trebuie să extindem opțiunea TutorialService.asmx, astfel încât să putem avea posibilitatea de a 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.
  4. Apoi vom vedea metoda noastră web pe care o aveam în serviciul nostru web cunoscut sub numele de „GetTutorialService”

Publicarea unui exemplu de serviciu web

Când facem clic pe butonul „OK”, tot codul necesar pentru a accesa acest serviciu web va fi adăugat la aplicația noastră DemoApplication Console, așa cum se arată mai jos.

Captura de ecran arată că „Guru99Webservice” a fost adăugat cu succes la aplicația noastră de consolă.

Publicarea unui exemplu de serviciu web

Pas 7) Următorul pas este să adăugați codul în aplicația noastră de consolă pentru a accesa metoda web în 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

Publicarea unui exemplu de serviciu web

namespace DemoApplication
{
	class Program
	{
		static void Main(string[ ] args)
		{
			var client = new Guru99Webservice.Guru99WebserviceSoapClient();

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

Explicația codului: -

  1. Prima parte este să alegeți fișierul Program.cs. Acesta este fișierul principal care este creat de Visual Studio atunci când este creată o aplicație de consolă. Acest fișier este ceea ce este executat atunci când aplicația de consolă (în cazul nostru aplicația demo) este executată.
  2. Apoi creăm o variabilă numită „client” care va fi setată la o instanță a referinței noastre de servicii care a fost creată într-un pas anterior. În cazul nostru, referința serviciului este „Guru99Webservice.Guru99WebserviveSoapClient()”
  3. Apoi numim metoda noastră Web „GetTutorialService” în serviciul web TutorialService. Amintiți-vă că metoda noastră GetTutorialService acceptă un parametru întreg, așa că transmitem doar un parametru întreg metodei web.
  4. Această linie finală este doar pentru 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 doar o intrare din partea utilizatorului.

producție

Când toți pașii de mai sus sunt urmați și se rulează DemoApplication, va fi afișată rezultatul de mai jos.

Publicarea unui exemplu de serviciu web

Din rezultat, putem vedea clar că DemoApplication apelează serviciul nostru Web și că șirul returnat de serviciul Web este afișat în jurnalul Consolei.

Rezumat

  • Forma completă a WSDL este Web Services DescriptLimbajul ionic
  • Un document WSDL este un document care este folosit pentru a descrie un serviciu web. Aceasta este cheia pentru orice aplicație client pentru a ști unde se află serviciul web. De asemenea, permite aplicației client să înțeleagă metodele disponibile în serviciul web.
  • Fișierul WSDL face foarte ușor ca serviciul web să fie implementat într-un singur limbaj de programare și apelat dintr-un alt limbaj de programare.
  • Documentul WSDL constă în mod normal dintr-un mesaj. Pentru fiecare metodă web, există 2 mesaje, unul este pentru intrare, iar celălalt este pentru ieșire. Împreună formează o operațiune.
  • Servicii Web DescriptFișierele ion Language (stand pentru WSDL) sunt create în mod normal în editorul care este folosit pentru limbajul de programare corespunzător.
  • Am văzut cum putem consuma un serviciu web în Visual Studio. Acest lucru se poate face prin crearea unui alt proiect care este o aplicație de consolă. Apoi, adăugând o referință de serviciu, putem accesa metodele web din serviciul nostru web.