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.
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 felépítése
WSDL elemek
A WSDL fájl a következő fő részeket tartalmazza:
- 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.
- 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.
- 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.
- 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.
- 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.
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.
- Amint láthatjuk, a webszolgáltatásnak két üzenete van, az egyik a bemenethez, a másik a kimenethez.
- 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.
- 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.
Tehát a fenti példánkban a következőket jegyezhetjük meg:
- A műveletet magában foglaló porttípus neve „Tutorial_PortType”.
- 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.
- 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.
- 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.
- 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.
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:
- 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.
- 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.
Step 3) Ebben a lépésben a
- 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.
- Adjon nevet a projektjének, amelyet esetünkben „DemoApplication”-nek adtunk.
Miután a fenti képernyőn az OK gombra kattintott, megtekintheti a projektet a Visual Studio Megoldáskezelőjében.
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.
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.
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.
- 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.
- Ezután nevet kell adnunk a szolgáltatáshivatkozásunknak. Esetünkben a következő nevet adjuk neki: Guru99Webszolgáltatás.
- 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.
- Ezután látni fogjuk a webes metódusunkat, amely a „GetTutorialService” néven ismert webszolgáltatásunkban volt.
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.
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.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Magyarázat:
- 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.
- 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().
- 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.
- 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 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.
















