WSDL oktatóanyag: Webszolgáltatások Description nyelv példával

Mi az a WSDL?

Web Services Description nyelv (WSDL) egy XML-alapú fájl, amely alapvetően elmondja az ügyfélalkalmazásnak, hogy mit csinál a webszolgáltatás. A WSDL fájl dióhéjban leírja a webszolgáltatás tevékenységét, és megadja az ügyfélnek a webszolgáltatáshoz való csatlakozáshoz és a webszolgáltatás által biztosított összes funkció használatához szükséges összes információt.

Ebben az oktatóanyagban az utolsó pontra fogunk összpontosítani, amely a webszolgáltatások legfontosabb része, ez pedig a WSDL vagy a webszolgáltatások leírási nyelve.

A WSDL fájl dióhéjban leírja a webszolgáltatás tevékenységét, és megadja az ügyfélnek a webszolgáltatáshoz való csatlakozáshoz és a webszolgáltatás által biztosított összes funkció használatához szükséges összes információt.

A WSDL-dokumentum felépítése

A WSDL-dokumentum egy webszolgáltatás leírására szolgál. Ez a leírás azért szükséges, hogy az ügyfélalkalmazások megértsék, mit is csinál a webszolgáltatás valójában.

  • A WSDL fájl tartalmazza a webszolgáltatás helyét és
  • A webszolgáltatás által közzétett módszerek.

Maga a WSDL fájl nagyon összetettnek tűnhet bármely felhasználó számára, de minden olyan információt tartalmaz, amelyre minden ügyfélalkalmazásnak szüksége lenne a megfelelő webszolgáltatás használatához.

Az alábbiakban a WSDL fájl általános szerkezete látható

  • Meghatározás
  • Targetnévtér
  • Adattípusok
  • Üzenetek
  • Porttípus
  • kötések
  • szolgáltatás

Az egyik legfontosabb dolog, amit itt meg kell jegyezni, az üzenetek meghatározása, amit a SOAP protokoll valójában a WSDL dokumentumban van meghatározva.

A WSDL dokumentum valójában elmondja az ügyfélalkalmazásnak, hogy milyen típusú SOAP üzeneteket küld és fogad el a webszolgáltatás.

Más szavakkal, a WSDL olyan, mint egy képeslap, amely egy adott hely címét tartalmazza. A cím tartalmazza a levelezőlapot kézbesítő adatait. Ennélfogva a WSDL-fájl a képeslap, amely annak a webszolgáltatásnak a címét tartalmazza, amely az ügyfél által kívánt összes funkciót képes biztosítani.

<!-- 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>

Az alábbiakban egy WSDL-fájl szerkezetének diagramja látható

A WSDL-dokumentum felépítése
A WSDL felépítése

WSDL elemek

A WSDL fájl a következő fő részeket tartalmazza

  1. A címke az összes összetett adattípus meghatározására szolgál, amelyeket az ügyfélalkalmazás és a webszolgáltatás között váltott üzenetben használunk. Ez egy fontos szempont az ügyfélalkalmazásban, mert ha a webszolgáltatás összetett adattípussal működik, akkor az ügyfélalkalmazásnak tudnia kell az összetett adattípus feldolgozását. Az olyan adattípusok, mint a float, a számok és a karakterláncok, mind egyszerű adattípusok, de lehetnek strukturált adattípusok, amelyeket a webszolgáltatás biztosíthat.
    Lehet például egy EmployeeDataType nevű adattípus, amely két elemből állhat: „EmployeeName” karakterlánc típusú és „EmployeeID” típusú, szám vagy egész szám. Ezek együtt egy adatstruktúrát alkotnak, amely aztán összetett adattípussá válik.
  2. A A címke az ügyfélalkalmazás és a webszerver között cserélt üzenet meghatározására szolgál. Ezek az üzenetek ismertetik a webszolgáltatás által végrehajtható bemeneti és kimeneti műveleteket. Az üzenetre példa lehet egy olyan üzenet, amely elfogadja egy alkalmazott EmployeeID-jét, a kimeneti üzenet pedig az alkalmazott neve lehet a megadott EmpoyeeID alapján.
  3. A A tag minden bemeneti és kimeneti üzenetet egyetlen logikai műveletbe foglal. Tehát létezhet egy „GetEmployee” nevű művelet, amely egyesíti a bemeneti üzenetet: elfogadja az EmployeeID-t egy ügyfélalkalmazásból, majd kimeneti üzenetként elküldi az EmployeeName-t.
  4. A címke a műveletnek az adott porttípushoz való kötésére szolgál. Ez azért van így, hogy amikor az ügyfélalkalmazás meghívja a megfelelő porttípust, akkor hozzáférhessen az ehhez a porttípushoz kötött műveletekhez. A porttípusok olyanok, mint az interfészek. Tehát ha egy ügyfélalkalmazásnak webszolgáltatást kell használnia, akkor a kötelező információkat kell használnia annak biztosítására, hogy csatlakozhasson az adott webszolgáltatás által biztosított felülethez.
  5. A címke magának a webszolgáltatásnak adott név. Kezdetben, amikor egy ügyfélalkalmazás felhívja a webszolgáltatást, akkor a webszolgáltatás nevének hívásával fogja megtenni. Például egy webszolgáltatás olyan címen található, mint pl http://localhost/Guru99/Tutorial.asmx . A szolgáltatáscímke URL-címe valójában a következőképpen lesz meghatározva http://localhost/Guru99/Tutorial.asmx, amely valójában közli az ügyfélalkalmazással, hogy ezen a helyen elérhető webszolgáltatás.

Miért WSDL

A webszolgáltatás fontos eleme a modern webalkalmazások létrehozásának. Fő céljuk, hogy több különböző programozási nyelvre épülő alkalmazás beszélhessen egymással. Például egy .Net webalkalmazás beszélhet a Java alkalmazás webszolgáltatáson keresztül.

Egy webszolgáltatás a következő főbb jellemzőkkel rendelkezik

  • Az XML programozási nyelv használatával készült. Szinte az összes modern technológia, mint például a .Net és Java megfelelő parancsokkal rendelkeznek, amelyek képesek az XML-lel dolgozni. Ezért az XML-t tekintették a legmegfelelőbb nyelvnek a webszolgáltatások felépítéséhez.
  • A webszolgáltatások HTTP-n keresztül kommunikálnak. A HTTP az összes webalapú alkalmazás által használt protokoll. Ezért volt értelme annak biztosítása, hogy a webszolgáltatások is képesek legyenek a HTTP protokollon keresztül dolgozni.
  • A webszolgáltatások megfelelnek egy adott nyelvi specifikációnak. Ezt a specifikációt a W3C határozza meg, amely az összes webes szabvány irányító testülete.
  • A webszolgáltatásoknak van egy WSDL-ként ismert leírási nyelve, amely a webszolgáltatás leírására szolgál.

A WSDL fájl sima régi XML-ben van írva. Az ok, hogy XML-ben van, az az oka, hogy a fájlt bármilyen programozási nyelv elolvashatja.

Tehát ha az ügyfélalkalmazás .Netben íródott, akkor megérti az XML fájlt. Hasonlóképpen, ha az ügyfélalkalmazás a Java programozási nyelv, akkor az is képes lenne értelmezni a WSDL fájlt.

WSDL kell

A WSDL fájl az, ami mindent összefűz. A fenti ábrán látható, hogy létrehozhat egy webszolgáltatást .Net nyelven.

Tehát itt kerül bevezetésre a szolgáltatás. Ha nem rendelkezett WSDL fájllal, és a Java osztályban a webszolgáltatás igénybevételéhez, ennek eléréséhez sok kódolási erőfeszítésre lesz szüksége.

De most az XML formátumú WSDL-fájllal, amely bármely programozási nyelv számára érthető, könnyen elérhető Java osztály használja a .Net webszolgáltatást. Emiatt a kódolási erőfeszítések mennyisége jelentősen csökken.

WSDL üzenet rész

A WSDL egy „üzenetek” nevű szakaszból áll, amelyet a elem.

Ez az elem alapvetően a webszolgáltatás és az ügyfélalkalmazás között kicserélt adatok leírására szolgál.

Minden webszolgáltatásnak mindig 2 típusú üzenete lesz,

  • Az egyik a webszolgáltatás bemenetére, a másik a webszolgáltatás kimenetére szolgál.
  • A bemenet a webszolgáltatás által elfogadott paraméterek leírására szolgál. Ez egy fontos szempont az ügyfélalkalmazásban, hogy ismerje a webszolgáltatásnak paraméterként küldendő értékeket.
  • A másik típusú üzenet a kimeneti üzenet, amely megmondja, milyen eredményeket biztosít a webszolgáltatás.

Minden üzenetnek viszont lesz egy elem, amely a bemeneti és kimeneti üzenet által használt paraméter leírására szolgál.

Az alábbiakban egy egyszerű példa látható arra, hogyan néz ki egy webszolgáltatás üzenete. A webszolgáltatás funkcionalitása az, hogy megadja az „Oktatóanyag” nevét, miután a „Tutorial ID” paraméterként elküldésre került a webszolgáltatáshoz.

WSDL üzenet rész

  1. Mint látjuk, a webszolgáltatásnak 2 üzenete van, az egyik a bemenetre, a másik a kimenetre vonatkozik.
  2. A bemeneti üzenet TutorialNameRequest néven ismert, amelynek egy TutorialID nevű paramétere van. Ennek a paraméternek az a típusszáma, amelyet az xsd:number típus határoz meg
  3. A kimeneti üzenet TutorialNameResponse néven ismert, amelynek egy TutorialName nevű paramétere van. Ez a paraméter karakterlánc típusú, amelyet az xsd:string típus határoz meg

Port típus kötés

A portok a WSDL-ben egy teljes művelet meghatározására szolgálnak, amelyet a webszolgáltatás kínál.

Az előző témakörben láttuk, hogy webszolgáltatásunk 2 üzenetet adott, az egyik a „TutorialNameRequest” bemenethez, a másik pedig a „TutorialNameResponse” nevű kimenethez. A bemeneti és kimeneti üzenetforma együtt egy teljes műveletként ismert.

A WSDL biztosít egy elemet, az úgynevezett amely a webszolgáltatás által biztosított műveletek meghatározására szolgál.

Port típus kötés

Tehát a fenti példánkban a következőket jegyezhetjük meg:

  1. A műveletet magában foglaló porttípus neve „Tutorial_PortType”-ként van megadva.
  2. Maga a művelet „Tutorial” nevet kap. Tehát a műveletünk alapvetően egy TutorialName-t ad, ha a TutorialID bemeneti paraméterként van megadva.
  3. Következik a 2 üzenetünk, az egyik a bemenetre, a másik pedig a kimenetre vonatkozik, amely a működésünket képezi

Amellett, hogy a elem, ott van az is elem, amely az üzenetek átvitelének meghatározására szolgál.

Port típus kötés

  1. A fenti példa azt mutatja, hogy a kötés egy kötésnévből áll, amelyet esetünkben „TutorialSoapBinding”-ként adunk meg. Egyszerűen fogalmazva a kötés az az információ, amelyet az ügyfélalkalmazás arra használ, hogy ténylegesen kapcsolódjon a webszolgáltatáshoz. Miután ténylegesen hozzá van kötve a webszolgáltatáshoz, képes meghívni a webszolgáltatás által elérhető különféle műveleteket.
  2. A szállítási réteg http://ként van megadva, ami azt jelenti, hogy az üzenetek a HTTP protokollon keresztül fognak átvitelre kerülni.

WSDL fájl létrehozása

A WSDL fájl akkor jön létre, amikor egy webszolgáltatást bármilyen programozási nyelven beépítenek.

Mivel a WSDL-fájlt meglehetősen bonyolult a semmiből előállítani, minden szerkesztő, például a Visual Studio for .Net és Eclipse mert Java automatikusan létrehozza a WSDL fájlt.

Az alábbiakban egy példa látható a Visual Studióban létrehozott WSDL-fájlra.

<?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>

A fenti WSDL fájl nagyon megfélemlítőnek tűnik minden felhasználó számára, a következő oktatóanyagokban részletesen bemutatjuk a különböző részeket, de most nézzük meg, hogy a WSDL fájl egyes részei valójában mit is csinálnak.

A webszolgáltatási példa közzététele

Most nézzünk meg egy példát arra, hogyan tehetünk közzé egy webszolgáltatást és fogyaszthatjuk azt a Visual Studio használatával.

Ebben a példában webszolgáltatást fogunk létrehozni egyetlen WebMethoddal. Ez a módszer elfogadja a „TutorialID” nevű Integer paramétert. A webes metódus ezután egy „Webszolgáltatások” nevű karakterláncot ad vissza.

Ezután létrehozunk egy konzol alapú alkalmazást, amely fogyasztja ezt a webszolgáltatást, és ennek megfelelően hívja meg webes metódusunkat.

Nézzük meg a példa végrehajtásához szükséges lépéseket.

Step 1) Az első lépés a webszolgáltatás létrehozása. A részletes lépések, hogyan a Asp.Net webprojekt és webszolgáltatás jön létre itt; Kövesse ugyanazokat a lépéseket a projekt és a webszolgáltatás létrehozásához. A legfontosabb dolog az alábbi kód beírása a webszolgáltatások fájlba.

A webszolgáltatási példa közzététele

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;
		}
	}
}

Kód magyarázata:

  1. Itt létrehozunk egy „Guru99WebService” nevű WebMethodot. Ebben a webes metódusban egy egész paramétert adunk meg, amelyet a webes metódus meghívásakor át kell adni.
  2. Ezután meghatározunk egy „TutorialName” nevű változót, amely a „Web Services” karakterlánc értékét tartalmazza. Ez az az érték, amely a webszolgáltatás hívásakor kerül visszaadásra.

Step 2) Miután meghatároztuk a webszolgáltatások fájlját, a következő lépés egy ügyfélprojekt létrehozása, amely felhasználja ezt a webszolgáltatást.

Hozzunk létre egy egyszerű konzolalkalmazást, amely meghívja ezt a webszolgáltatást, meghívja a „Guru99WebService”-t, majd megjeleníti a webes metódus kimenetét a konzolnapló képernyőjén. Kövesse az alábbi lépéseket egy konzolalkalmazás létrehozásához.

Kattintson a jobb gombbal a Visual Studio megoldásfájljára, és válassza a Hozzáadás->Új projekt lehetőséget

A webszolgáltatási példa közzététele

3. lépés) Ebben a lépésben a

  1. Győződjön meg arról, hogy először a Visual-t válassza C# Windows választási lehetőség. Ezután válassza ki a konzolalkalmazás létrehozásának lehetőségét.
  2. Adjon nevet a projektjének, amelyet esetünkben „DemoApplication”-nek adtunk.

A webszolgáltatási példa közzététele

Miután rákattintott az OK gombra a fenti képernyőn, láthatja a projektet a Visual Studio Megoldásböngészőjében.

A webszolgáltatási példa közzététele

Step 4) Ebben a lépésben a DemoApplication Console alkalmazást állítja be indítási projektként. Ezzel biztosítható, hogy ez az alkalmazás induljon el először, amikor a teljes Visual Studio projekt fut. Ez a konzolalkalmazás viszont meghívja a webszolgáltatást, amelyet a Visual Studio automatikusan elindít.

A lépés befejezéséhez kattintson a jobb gombbal a DemoApplication projektre, és válassza a „Beállítás indítási projektként” lehetőséget.

A webszolgáltatási példa közzététele

Step 5) A következő lépés a „Guru99Webservice” szolgáltatás hivatkozásának hozzáadása a konzolalkalmazásunkhoz. Ez azért történik, hogy a DemoApplication hivatkozhasson a webszolgáltatásra és a webszolgáltatás összes webes metódusára.

Ehhez kattintson a jobb gombbal a DemoApplication projektfájlra, és válassza az Add->Service Reference menüpontot.

A webszolgáltatási példa közzététele

Step 6) Ebben a lépésben megadjuk azokat a különböző értékeket, amelyek a szolgáltatási hivatkozás hozzáadásához szükségesek

  1. Először is ki kell választanunk a felfedezési lehetőséget. Ez az opció automatikusan felveszi a WSDL fájlt a TutorialService webszolgáltatásunkhoz.
  2. Ezután adjunk nevet a szolgáltatási referenciánknak. Esetünkben Guru99Webservice nevet adunk neki.
  3. Ezután ki kell terjesztenünk a TutorialService.asmx opciót, hogy a jobb oldalon lássuk a „GetTutorialService” metódust. Itt a TutorialService.asmx a Visual Studio .Net fájl neve, amely webszolgáltatásunk kódját tartalmazza.
  4. Ezután látni fogjuk a webes módszerünket, amely a „GetTutorialService” néven ismert webszolgáltatásunkban volt.

A webszolgáltatási példa közzététele

Amikor az „OK” gombra kattintunk, a webszolgáltatás eléréséhez szükséges összes kód hozzáadódik DemoApplication Console alkalmazásunkhoz, az alábbiak szerint.

A képernyőképen látható, hogy a „Guru99Webservice” sikeresen hozzáadva a konzolalkalmazásunkhoz.

A webszolgáltatási példa közzététele

Step 7) A következő lépés a kód hozzáadása a konzolalkalmazásunkhoz, hogy elérje a webes metódust a webszolgáltatásunkban. Nyissa meg a Program.cs kódfájlt, amely automatikusan érkezik a konzolalkalmazáshoz, és adja hozzá az alábbi kódot

A webszolgáltatási példa közzététele

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

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

Kód magyarázata: -

  1. Az első rész a Program.cs fájl kiválasztása. Ez a fő fájl, amelyet a Visual Studio hoz létre a konzolalkalmazás létrehozásakor. Ez a fájl az, ami a konzolalkalmazás (esetünkben a demóalkalmazás) végrehajtásakor kerül végrehajtásra.
  2. Ezután létrehozunk egy „kliens” nevű változót, amely egy korábbi lépésben létrehozott szolgáltatáshivatkozásunk egy példányára lesz beállítva. Esetünkben a szolgáltatás hivatkozása a 'Guru99Webservice.Guru99WebserviveSoapClient()'
  3. Ezután a Webmetódusunkat „GetTutorialService”-nek nevezzük a TutorialService webszolgáltatásban. Ne feledje, hogy a GetTutorialService metódusunk egész szám paramétert fogad el, tehát csak egy egész szám paramétert adunk át a webes metódusnak.
  4. Ez az utolsó sor csak annak biztosítására szolgál, hogy a konzolnapló képernyő aktív maradjon, hogy megtekinthessük a kimenetet. Ez a parancs csak a felhasználó bemenetére vár.

teljesítmény

Ha a fenti lépések mindegyikét követi, és a DemoApplication fut, az alábbi kimenet jelenik meg.

A webszolgáltatási példa közzététele

A kimenetből jól látható, hogy a DemoApplication meghívja a webszolgáltatásunkat, és a webszolgáltatás által visszaadott karakterlánc megjelenik a konzolnaplónkban.

Összegzésként

  • A WSDL teljes formája a Web Services Description nyelv
  • A WSDL-dokumentum egy webszolgáltatás leírására szolgáló dokumentum. Ez kulcsfontosságú minden ügyfélalkalmazás számára, hogy tudja, hol található a webszolgáltatás. Ezenkívül lehetővé teszi az ügyfélalkalmazás számára, hogy megértse a webszolgáltatásban elérhető módszereket.
  • A WSDL fájl nagyon egyszerűvé teszi a webszolgáltatás egy programozási nyelven való megvalósítását és egy másik programozási nyelvről történő meghívását.
  • A WSDL dokumentum általában egy üzenetből áll. Minden webes metódushoz 2 üzenet tartozik, az egyik a bemenetre, a másik a kimenetre vonatkozik. Ezek együtt egy műveletet alkotnak.
  • Web Services DescriptAz ion Language (a WSDL rövidítése) fájlok általában a megfelelő programozási nyelvhez használt szerkesztőben jönnek létre.
  • Láttuk, hogyan fogyaszthatunk webszolgáltatást a Visual Studióban. Ezt megteheti egy másik projekt létrehozásával, amely egy konzolalkalmazás. Ezután egy szolgáltatásreferencia hozzáadásával elérhetjük a webes metódusokat webszolgáltatásunkban.

Foglald össze ezt a bejegyzést a következőképpen: