Mi a WSDL? Jelentése és példája

⚡ Okos összefoglaló

WSDL (Webszolgáltatások Description Language) egy XML-alapú fájl, amely megmondja egy kliensalkalmazásnak, hogy mit csinál egy webszolgáltatás, és hogyan hívja meg. Ez az anyag ismerteti a WSDL struktúráját, elemeit, üzeneteit, porttípusait, kötéseit és egy közzétételi példát.

  • 📄 Alapvető definíció: A WSDL egy XML fájl, amely leírja egy webszolgáltatás helyét, működését, valamint az általa fogadott és visszaadott üzeneteket.
  • 🏗️ Dokumentum felépítése: Egy WSDL dokumentum típusokra, üzenetre, porttípusra, kötésre és szolgáltatáselemekre van felépítve, amelyek egy definíciós gyökérbe vannak csomagolva.
  • 🔤 Fő elemek: A types elem az adattípusokat, a message elem a kicserélt adatokat, a portType csoportosítja a műveleteket, a binding pedig egy protokollhoz rendeli őket.
  • ✉️ Üzenetek és portok: Minden webmetódus egy bemeneti és egy kimeneti üzenetet használ, amelyek együttesen egy műveletet alkotnak, amely egy porttípuson keresztül érhető el.
  • 🇧🇷 Automatikusan generált: Szerkesztők, mint például a Visual Studio és Eclipse automatikusan generálja a WSDL fájlt, amelyet a kliensalkalmazások a szolgáltatás meghívásához használnak fel.

Mi az a WSDL?

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 a webszolgáltatások legfontosabb részére fogunk összpontosítani, ami a WSDL, vagyis a webszolgáltatások. Description Nyelv. Úgy működik, mint egy contraca webszolgáltatás és bármely olyan kliens között, amely használni kívánja azt.

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 a kliensalkalmazások megérthessék, mit is csinál valójában a webszolgáltatás.

  • 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 tartalmazza az összes szükséges információt, amire bármely kliensalkalmazásnak szüksége lehet a vonatkozó webszolgáltatás használatához. Az alábbiakban egy WSDL fájl általános szerkezetét láthatjuk:

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

Egy fontos dolog, amit itt meg kell jegyezni, az üzenetek definíciója, amelyet a rendszer továbbít. SOAP protokoll, valójában a WSDL dokumentumban van definiálva. A WSDL dokumentum megmondja a kliensalkalmazásnak, hogy milyen típusú SOAP üzeneteket küld és fogad a webszolgáltatás.

Más szóval, a WSDL olyan, mint egy képeslap, amely egy adott helyszín címét tartalmazza. A cím megadja, hogy hová kell kézbesíteni az üzenetet. Tehát ugyanígy a WSDL fájl egy képeslap, amely tartalmazza annak a webszolgáltatásnak a címét, amely az ügyfél által kívánt összes funkciót biztosítani tudja.

<!-- 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ábbi ábra egy WSDL fájl szerkezetét mutatja.

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. Az A címke definiálja az összes összetett adattípust, amelyeket a kliensalkalmazás és a webszolgáltatás között váltott üzenetben fognak használni. Ez azért fontos, mert ha a webszolgáltatás összetett adattípussal működik, akkor a kliensalkalmazásnak tudnia kell, hogyan dolgozza fel azt. Az olyan adattípusok, mint a lebegőpontos számok, a számok és a karakterláncok, mind egyszerű adattípusok, de a webszolgáltatás strukturált adattípusokat is biztosíthat. Például létezhet egy EmployeeDataType nevű adattípus, amelynek két eleme lehet: „EmployeeName” (karakterlánc típusú) és „EmployeeID” (szám vagy egész szám típusú). Együttesen egy összetett adattípust alkotnak.
  2. Az A címke definiálja az ügyfélalkalmazás és a webszerver között kicserélt üzenetet. Ezek az üzenetek elmagyarázzák a webszolgáltatás által végrehajtható bemeneti és kimeneti műveleteket. Egy példa erre az üzenetre, amely elfogadja az alkalmazott alkalmazotti azonosítóját, és a kimeneti üzenet lehet az alkalmazott neve a megadott alkalmazotti azonosító alapján.
  3. Az 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. Az A címke a művelet adott porttípushoz kötésére szolgál. Ez azért van így, hogy amikor a kliensalkalmazás meghívja a megfelelő porttípust, hozzáférhessen a hozzá kötött műveletekhez. A porttípusok pont olyanok, mint az interfészek. Tehát, ha egy kliensalkalmazásnak webszolgáltatást kell használnia, akkor a kötési információkat kell használnia annak biztosítására, hogy csatlakozni tudjon a webszolgáltatás által biztosított interfészhez.
  5. Az A tag a webszolgáltatásnak adott név. Kezdetben, amikor egy kliensalkalmazás hívja a webszolgáltatást, a webszolgáltatás nevének meghívásával teszi ezt. Például egy webszolgáltatás egy olyan címen található, mint a http://localhost/Guru99/Tutorial.asmx. A szervizcímkén a következő lesz: URL definiált, amely jelzi a kliensalkalmazásnak, hogy egy webszolgáltatás érhető el ezen a helyen.

Miért WSDL

A webszolgáltatások fontos elemei a modern webes alkalmazások fejlesztésének. Fő céljuk, hogy lehetővé tegyék a különböző programozási nyelveken készült alkalmazások közötti kommunikációt. Például egy .Net webes alkalmazás kommunikálhat egy ... Java alkalmazás webszolgáltatáson keresztül.

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

  • XML programozási nyelven készült. Szinte minden modern technológia, mint például a .Net és a 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 protokollon keresztül kommunikálnak. A HTTP egy olyan protokoll, amelyet minden webalapú alkalmazás használ. Ezért logikus volt biztosítani, hogy a webszolgáltatások is képesek legyenek a HTTP protokollon keresztül működni.
  • 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 egyszerű XML-ben íródott. Azért van XML-ben, hogy a fájlt bármilyen programozási nyelv olvasni tudja. Tehát, ha a kliensalkalmazás .Net-ben íródott, akkor megérti az XML fájlt. Hasonlóképpen, ha a kliensalkalmazás .Net-ben íródott... Java programozási nyelv, akkor a WSDL fájlt is képes lenne értelmezni.

Szükség van a WSDL-re

A WSDL fájl köt össze mindent. A fenti ábrán látható, hogy létrehozhatsz egy webszolgáltatást .Net nyelven. Tehát itt implementáljuk a szolgáltatást. Ha nem rendelkezel a WSDL fájllal, és egyet szeretnél Java osztály a webszolgáltatás felhasználásához, ehhez sok kódolási erőfeszítésre lenne szükség. De most a WSDL fájllal, amely XML-ben van, és bármilyen programozási nyelv megérthető, könnyen létrehozhat egy 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 a kliensalkalmazás között kicserélt adatok leírására szolgál.

Minden webszolgáltatásnak mindig kétféle ü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 funkciója az, hogy megadja egy „Oktatóanyag” nevét, miután egy „Oktatóanyag azonosítója” paraméterként beküldésre került a webszolgáltatásnak.

WSDL üzenet rész

  1. Amint láthatjuk, a webszolgáltatásnak két üzenete van, az egyik a bemenethez, a másik a kimenethez.
  2. A bemeneti üzenet TutorialNameRequest néven ismert, amelynek egyetlen paramétere a TutorialID. Ez a paraméter szám típusú, amelyet az xsd:number típus határoz meg.
  3. A kimeneti üzenet TutorialNameResponse néven ismert, amelynek egyetlen paramétere a TutorialName. Ez a paraméter karakterlánc típusú, amelyet az xsd:string típus határoz meg.

Port típus kötés

A WSDL-ben a portokat egy teljes művelet definiálására használják, amelyet a webszolgáltatás kínál fel. Az előző témában láttuk, hogy a webszolgáltatásunk két üzenetet biztosított, az egyiket a „TutorialNameRequest” nevű bemenethez, a másikat pedig a „TutorialNameResponse” nevű kimenethez. A bemeneti és kimeneti üzenet együttesen alkotja az úgynevezett teljes műveletet.

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ípusa Kötő port típusa

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”.
  2. Maga a művelet a „Tutorial” nevet kapja. Tehát a műveletünk alapvetően egy TutorialName értéket ad meg, ha a TutorialID bemeneti paraméterként van megadva.
  3. Ezután következik a két üzenetünk, az egyik a bemenetre, a másik a kimenetre vonatkozik, ezek alkotják a műveletünket.

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

Port típusa Kötés kötés

  1. A fenti példa azt mutatja, hogy a kötés egy kötési névből áll, amely esetünkben „TutorialSoapBinding”. A kötés leegyszerűsítve az az információ, amelyet a kliensalkalmazás a webszolgáltatáshoz való tényleges kötéskor használ. Miután a webszolgáltatáshoz kötötték, képes meghívni a webszolgáltatás által elérhető különféle műveleteket.
  2. A szállítási réteget http:// formátumban adjuk meg, ami azt jelenti, hogy az üzenetek HTTP protokollon keresztül kerülnek átvitelre.

WSDL fájl létrehozása

A WSDL fájl minden alkalommal létrejön, amikor egy webszolgáltatást bármilyen programozási nyelven felépítenek. Mivel a WSDL fájl létrehozása meglehetősen bonyolult a nulláról, minden szerkesztő, mint 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 ijesztőnek tűnhet bármely felhasználó számára. A különböző részeket részletesen tárgyaljuk a következő oktatóanyagokban, de most nézzük meg összefoglalva, hogy mit is csinálnak a WSDL fájl egyes részei.

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

Most nézzünk egy példát arra, hogyan publikálhatunk és használhatunk fel egy webszolgáltatást a Visual Studio használatával. Ebben a példában egy webszolgáltatást fogunk létrehozni egyetlen WebMethoddal. Ez a metódus egy „TutorialID” nevű egész paramétert fogad el. A Web metódus ezután egy „Web Services” nevű karakterláncot ad vissza.

Ezután létrehozunk egy konzol alapú alkalmazást, amely felhasználja ezt a webszolgáltatást, és ennek megfelelően meghívja a 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 webes projekt és webes szolgáltatás létrehozásának folyamatát ismertettük. itt Kérjük, kövesse ugyanazokat a lépéseket a projekt és a webszolgáltatás létrehozásához. A lényeg az alábbi kód beillesztése a webszolgáltatások fájljába.

A webszolgáltatás-példa webszolgáltatás-kód közzététele

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 Magyarázat:

  1. Itt létrehozunk egy „WebMethod” nevűt.Guru99WebService.” Ebben a webes metódusban egy egész paramétert használunk, amelyet minden alkalommal át kell adni, amikor ezt a webes metódust meghívjuk.
  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 definiáltuk a webszolgáltatás-fájlt, a következő lépés egy kliensprojekt létrehozása, amely ezt a webszolgáltatást fogja felhasználni. Hozzunk létre egy egyszerű konzolalkalmazást, amely meghívja ezt a webszolgáltatást, és meghívja a „Guru99WebService” parancsot, majd jelenítse meg a webes metódus kimenetét a konzol napló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ájlra, és válassza az Hozzáadás->Új projekt lehetőséget.

Webszolgáltatás közzététele Példa új projekt hozzáadása

Step 3) 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ás-példa konzolalkalmazás közzététele

Miután a fenti képernyőn az OK gombra kattintott, megtekintheti a projektet a Visual Studio Megoldáskezelőjében.

A webszolgáltatás-példa megoldásböngészőjének közzététele

Step 4) Ebben a lépésben a DemoApplication Console alkalmazást állítja be indító projektként. Ez biztosítja, hogy ez az alkalmazás induljon el először, amikor a teljes Visual Studio projekt fut. Ez a Console alkalmazás viszont meghívja a webszolgáltatást, amelyet a Visual Studio automatikusan elindít. A lépés befejezéséhez kattintson jobb gombbal a DemoApplication projektre, és válassza a „Beállítás indító projektként” lehetőséget.

Webszolgáltatás-példakészlet közzététele indító projektként

Step 5) A következő lépés a „” szolgáltatáshivatkozásának hozzáadása.Guru99Webservice” metódust a konzolalkalmazásunkba. Ez azért történik, hogy a DemoApplication hivatkozni tudjon a webszolgáltatásra és a webszolgáltatásban található összes webmetódusra. Ehhez kattintson jobb gombbal a DemoApplication projektfájlra, és válassza az Hozzáadás->Szolgáltatáshivatkozás menüpontot.

Webszolgáltatás-példa közzététele, szolgáltatáshivatkozás hozzáadása

Step 6) Ebben a lépésben megadjuk a szolgáltatáshivatkozás hozzáadásához szükséges különböző értékeket.

  1. Először is ki kell választanunk a felderítési opciót. Ez a beállítás automatikusan fel fogja venni a WSDL fájlt a TutorialService webszolgáltatásunkhoz.
  2. Ezután nevet kell adnunk a szolgáltatáshivatkozásunknak. Esetünkben a következő nevet adjuk neki: Guru99Webszolgáltatás.
  3. Ezután ki kell bővítenünk a TutorialService.asmx opciót, hogy a jobb oldalon látható legyen a „GetTutorialService” metódus. Itt a TutorialService.asmx a Visual Studio .Net fájlunk neve, amely a webszolgáltatásunk kódját tartalmazza.
  4. Ezután látni fogjuk a webes metódusunkat, amely a „GetTutorialService” néven ismert webszolgáltatásunkban volt.

A webszolgáltatás-példa szolgáltatás referenciaértékeinek 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 a DemoApplication Console alkalmazásunkhoz az alábbiak szerint. A képernyőképen látható, hogy a „GuruA „99Webservice” szolgáltatást sikeresen hozzáadtuk a konzolalkalmazásunkhoz.

Webszolgáltatás-példa szolgáltatás közzététele hozzáadva

Step 7) A következő lépés a kód hozzáadása a konzolalkalmazásunkhoz, hogy hozzáférhessünk a webes szolgáltatásunk webmetódusához. Nyissuk meg a konzolalkalmazással automatikusan érkező Program.cs kódfájlt, és adjuk hozzá az alábbi kódot.

A webszolgáltatás-példa Program.cs kódjának közzététele

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

         Console.WriteLine(client.GetTutorialService(1));

         Console.ReadKey();
      }
   }
}

Code Magyarázat:

  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 egy konzolalkalmazás létrehozásakor. Ez a fájl fut le a konzolalkalmazás (esetünkben a DemoApplication) futtatásakor.
  2. Ezután létrehozunk egy „kliens” nevű változót, amely a 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áshivatkozás: 'Guru99Webszolgáltatás.Guru99WebszolgáltatásSzoapKliens().
  3. Ezután meghívjuk a „GetTutorialService” webmetódusunkat a TutorialService webszolgáltatásban. Ne feledjük, hogy a GetTutorialService metódusunk egész paramétert fogad el, tehát mi csak átadunk egy egész paramétert a webmetódusnak.
  4. Ez az utolsó sor csak azért van, hogy a konzol naplóképernyője aktív maradjon, hogy láthassuk a kimenetet. Ez a parancs a felhasználótól vár valamilyen bemenetet.

teljesítmény

Amikor a fenti lépéseket követte, és a DemoApplication fut, az alábbi kimenet jelenik meg.

A webszolgáltatás-példa kimenetének 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.

GYIK

A mesterséges intelligencia képes egy összetett WSDL-t olvasni, működését egyszerű nyelven elmagyarázni, minta kéréseket generálni, és jelezni a kérések közötti eltéréseket.tracés a megvalósítás. Ez felgyorsítja az integrációt az ismeretlen vagy elavult SOAP webszolgáltatásokkal.

Igen. A mesterséges intelligencia asszisztensek képesek a WSDL definíciót kliens stubokká, adatmodellekké és példahívásokká alakítani olyan nyelveken, mint a C#, Javavagy PythonA fejlesztőknek továbbra is ellenőrizniük kell a generált kódot a névterek és a hibakezelés helyessége szempontjából.

A SOAP az üzenetküldési protokoll, amely a tényleges XML kérést és választ továbbítja. A WSDL a leíró fájl, amely megmondja a kliensnek, hogy milyen műveleteket kínál egy SOAP webszolgáltatás, és hogyan hívja meg azokat. Együtt használják őket.

Igen. A WSDL továbbra is szabvány a SOAP webszolgáltatásokhoz vállalati, banki és kormányzati rendszerekben, amelyek hivatalos megerősítést igényelnek.tracAz újabb REST API-k jellemzően OpenAPI-t (Swagger) használnak, de sok korábbi integráció továbbra is a WSDL-től függ.

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