Mis on WSDL? Tähendus ja näide
⚡ Nutikas kokkuvõte
WSDL (veebiteenused Description Language) on XML-põhine fail, mis annab kliendirakendusele teada, mida veebiteenus teeb ja kuidas seda kutsuda. See ressurss selgitab WSDL-i struktuuri, elemente, sõnumeid, portide tüüpe, seoseid ja avaldamise näidet.
Mis on WSDL?
Web Services Descriptioonkeel (WSDL) on XML-põhine fail, mis põhimõtteliselt ütleb kliendirakendusele, mida veebiteenus teeb. WSDL-faili kasutatakse veebiteenuse tegemiste lühikirjelduseks ja annab kliendile kogu vajaliku teabe veebiteenusega ühenduse loomiseks ja kõigi veebiteenuse pakutavate funktsioonide kasutamiseks.
Selles õpetuses keskendume veebiteenuste kõige olulisemale osale, milleks on WSDL ehk veebiteenused. Descriptioonkeel. See toimib vastuvõtjanatracveebiteenuse ja iga kliendi vahel, kes soovib seda tarbida.
WSDL-dokumendi struktuur
WSDL-dokumenti kasutatakse veebiteenuse kirjeldamiseks. See kirjeldus on vajalik, et kliendirakendused saaksid aru, mida veebiteenus tegelikult teeb.
- WSDL-fail sisaldab veebiteenuse asukohta ja
- Meetodid, mida veebiteenus avaldab.
WSDL-fail ise võib igale kasutajale tunduda väga keeruline, kuid see sisaldab kogu vajalikku teavet, mida iga kliendirakendus vajaks asjakohase veebiteenuse kasutamiseks. Allpool on toodud WSDL-faili üldine struktuur:
- Määratlus
- TargetNimeruum
- Andmetüübid
- Sõnumid
- Porditüüp
- Sidemed
- Teenus
Üks oluline asi, mida siinkohal märkida, on sõnumite definitsioon, mis on see, mida edastab SOAP protokoll, on tegelikult WSDL-dokumendis defineeritud. WSDL-dokument ütleb kliendirakendusele, milliseid SOAP-sõnumeid veebiteenus saadab ja aktsepteerib.
Teisisõnu, WSDL on nagu postkaart, millel on konkreetse asukoha aadress. Aadress annab üksikasjad selle kohta, kuhu sõnum tuleks edastada. Seega on WSDL-fail samamoodi postkaart, millel on veebiteenuse aadress, mis suudab pakkuda kogu kliendi soovitud funktsionaalsust.
<!-- 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>
Allpool on WSDL-faili struktuuri diagramm.
WSDL-i struktuur
WSDL elemendid
WSDL-fail sisaldab järgmisi põhiosi:
- . Silti kasutatakse kõigi keeruliste andmetüüpide määratlemiseks, mida kasutatakse kliendirakenduse ja veebiteenuse vahel vahetatavas sõnumis. See on oluline, sest kui veebiteenus töötab keeruka andmetüübiga, peaks kliendirakendus teadma, kuidas seda töödelda. Andmetüübid, nagu ujukoma, arv ja string, on kõik lihtsad andmetüübid, kuid veebiteenus võib pakkuda ka struktureeritud andmetüüpe. Näiteks võib olla andmetüüp nimega EmployeeDataType, millel võib olla kaks elementi nimega „EmployeeName“ tüübiga string ja „EmployeeID“ tüübiga number või täisarv. Koos moodustavad need keeruka andmetüübi.
- . Silti kasutatakse kliendirakenduse ja veebiserveri vahel vahetatava sõnumi määratlemiseks. Need sõnumid selgitavad veebiteenuse sisend- ja väljundtoiminguid. Sõnumi näide võib olla sõnum, mis aktsepteerib töötaja töötaja ID-d, ja väljundsõnum võib olla töötaja nimi, mis põhineb esitatud töötaja ID-l.
- . silti kasutatakse iga sisend- ja väljundsõnumi kapseldamiseks ühte loogilisse operatsiooni. Seega võib olla toiming nimega "GetEmployee", mis ühendab sisendsõnumi, mille kohaselt võetakse kliendirakendusest töötaja ID vastu ja saadetakse seejärel väljundsõnumina EmployeeName.
- . Silti kasutatakse toimingu sidumiseks kindla porditüübiga. See on nii, et kui kliendirakendus kutsub vastavat porditüüpi, pääseb see juurde sellega seotud toimingutele. Porditüübid on täpselt nagu liidesed. Seega, kui kliendirakendus peab kasutama veebiteenust, peab ta kasutama sidumisteavet, et tagada ühenduse loomine selle veebiteenuse pakutava liidesega.
- . silt on veebiteenusele endale antud nimi. Algselt, kui kliendirakendus veebiteenusele helistab, teeb ta seda veebiteenuse nime kutsudes. Näiteks võib veebiteenus asuda aadressil http://localhost/Guru99/Tutorial.asmx. Teenusesildil on URL määratletud, mis annab kliendirakendusele teada, et selles asukohas on saadaval veebiteenus.
Miks WSDL
Veebiteenus on tänapäevaste veebirakenduste loomisel oluline komponent. Nende peamine eesmärk on võimaldada mitmel erinevatel programmeerimiskeeltel loodud rakendusel omavahel suhelda. Näiteks võib meil olla .Net veebirakendus, mis suhtleb Java rakendus veebiteenuse kaudu.
Veebiteenusel on järgmised põhifunktsioonid:
- See on loodud XML-programmeerimiskeelt kasutades. Peaaegu kõik tänapäevased tehnoloogiad, näiteks .Net ja Java omama vastavaid käske, millel on võimalus töötada XML-iga. Seetõttu peeti XML-i veebiteenuste loomiseks sobivaimaks keeleks.
- Veebiteenused suhtlevad HTTP kaudu. HTTP on protokoll, mida kasutavad kõik veebipõhised rakendused. Seega oli mõistlik tagada, et ka veebiteenused saaksid HTTP protokolli kaudu töötada.
- Veebiteenused vastavad teatud keele spetsifikatsioonile. Selle spetsifikatsiooni määrab W3C, mis on kõigi veebistandardite juhtorgan.
- Veebiteenustel on WSDL-i kirjelduskeel, mida kasutatakse veebiteenuse kirjeldamiseks.
WSDL-fail on kirjutatud tavalises XML-is. Põhjus, miks see on XML-is, on see, et faili saaks lugeda iga programmeerimiskeel. Seega, kui kliendirakendus on kirjutatud .Net-is, saab see XML-failist aru. Samamoodi, kui kliendirakendus on kirjutatud ... Java programmeerimiskeeles, siis suudaks see tõlgendada ka WSDL-faili.
WSDL-fail seob kõik kokku. Ülaltoodud diagrammilt näete, et saate luua veebiteenuse .Net keeles. Seega siin teenus rakendatakse. Kui teil polnud WSDL-faili ja soovisite Java klassi veebiteenuse tarbimiseks, vajaksite selle saavutamiseks palju kodeerimistööd. Kuid nüüd, WSDL-failiga, mis on XML-vormingus ja mida saab mõista mis tahes programmeerimiskeeles, saate hõlpsalt luua Java klass tarbivad .Neti veebiteenust. Seega väheneb kodeerimispinge oluliselt.
WSDL sõnumi osa
WSDL koosneb jaotisest "sõnumid", mida tähistatakse element. Seda elementi kasutatakse põhimõtteliselt veebiteenuse ja kliendirakenduse vahel vahetatavate andmete kirjeldamiseks.
Igal veebiteenusel on alati kahte tüüpi sõnumeid:
- Üks on mõeldud veebiteenuse sisendiks ja teine veebiteenuse väljundiks.
- Sisendit kasutatakse veebiteenuse poolt aktsepteeritavate parameetrite kirjeldamiseks. See on klientrakenduse oluline aspekt, et see teaks väärtusi, mis saadetakse veebiteenusele parameetritena.
- Teist tüüpi sõnum on väljundsõnum, mis ütleb, milliseid tulemusi veebiteenus pakub.
Igal sõnumil on omakorda a element, mida kasutatakse sisend- ja väljundsõnumis kasutatava parameetri kirjeldamiseks.
Allpool on lihtne näide veebiteenuse sõnumist. Veebiteenuse funktsioon on pakkuda õpetuse nime pärast seda, kui õpetuse ID on veebiteenusele parameetrina esitatud.
- Nagu näeme, on veebiteenusel kaks sõnumit, üks sisendiks ja teine väljundiks.
- Sisendsõnum kannab nime TutorialNameRequest, millel on üks parameeter nimega TutorialID. See parameeter on tüüpi number, mis on määratud tüübiga xsd:number.
- Väljundsõnum kannab nime TutorialNameResponse, millel on üks parameeter nimega TutorialName. See parameeter on tüüpi string, mis on määratud tüübiga xsd:string.
Port Type Binding
WSDL-is kasutatakse porte ühe täieliku toimingu määratlemiseks, mida veebiteenus pakub. Eelmises teemas nägime, et meie veebiteenus pakkus kahte sõnumit: ühe sisendiks nimega „TutorialNameRequest“ ja teise väljundiks nimega „TutorialNameResponse“. Sisend- ja väljundsõnumid moodustavad koos ühe täieliku toimingu.
WSDL pakub elementi nimega mida kasutatakse veebiteenuse pakutavate toimingute määratlemiseks.
Nii et meie ülaltoodud näites võime märkida järgmist:
- Toimingut hõlmava porditüübi nimi on „Tutorial_PortType”.
- Toimingule endale antakse nimi „Õpetus“. Seega annab meie toiming põhimõtteliselt ÕpetuseNimi, kui sisendparameetrina on antud ÕpetuseID.
- Järgmisena on meie kaks sõnumit, üks sisendi ja teine väljundi jaoks, mis moodustavad meie operatsiooni.
Lisaks element, on ka element, mida kasutatakse sõnumite edastamise määramiseks.
- Ülaltoodud näide näitab, et sidumine koosneb sidumisnimest, mis meie puhul on „TutorialSoapBinding“. Lihtsamalt öeldes on sidumine teave, mida kliendirakendus kasutab veebiteenusega sidumiseks. Kui see on veebiteenusega seotud, saab see kutsuda välja erinevaid veebiteenuse poolt avaldatud toiminguid.
- Transpordikiht on antud kujul http://, mis tähendab, et sõnumid edastatakse HTTP protokolli kaudu.
WSDL-faili loomine
WSDL-fail luuakse iga kord, kui veebiteenus luuakse mis tahes programmeerimiskeeles. Kuna WSDL-faili on üsna keeruline nullist genereerida, siis kõik redaktorid, näiteks Visual Studio for .Net ja Eclipse eest Java luua automaatselt WSDL-fail.
Allpool on näide Visual Studios loodud WSDL-failist.
<?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>
Ülaltoodud WSDL-fail tundub igale kasutajale väga hirmuäratav. Järgnevates õpetustes käsitleme selle erinevaid osi üksikasjalikumalt, aga praegu vaatame lühidalt, mida WSDL-faili iga osa tegelikult teeb.
Veebiteenuse näite avaldamine
Vaatame nüüd näidet, kuidas Visual Studio abil veebiteenust avaldada ja kasutada. Selles näites loome veebiteenuse ühe WebMethod'i abil. See meetod aktsepteerib täisarvulist parameetrit nimega „TutorialID“. Seejärel tagastab Web-meetod stringi nimega „Web Services“.
Seejärel loome konsoolipõhise rakenduse, mis kasutab seda veebiteenust ja kutsub vastavalt sellele meie veebimeetodit. Vaatame selle näite elluviimiseks vajalikke samme.
Step 1) Esimene samm on veebiteenuse loomine. Üksikasjalikud sammud, kuidas Asp.Net veebiprojekti ja veebiteenuse loomise põhimõtet on selgitatud. siinPalun järgige samu samme projekti ja veebiteenuse loomiseks. Peamine on sisestada allolev kood veebiteenuste faili.
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 Selgitus:
- Siin loome veebimeetodi nimega „Guru99WebService.” Selles veebimeetodis on täisarvuline parameeter, mis tuleb edastada iga kord, kui seda veebimeetodit kutsutakse.
- Järgmisena määratleme muutuja nimega "TutorialName", mis sisaldab "Web Services" stringi väärtust. See on väärtus, mis tagastatakse veebiteenuse kutsumisel.
Step 2) Kui oleme veebiteenuste faili defineerinud, on järgmine samm luua kliendiprojekt, mis seda veebiteenust kasutab. Loome lihtsa konsoolirakenduse, mis kutsub selle veebiteenuse välja ja käivitab „Guru99WebService” ja seejärel kuvage veebimeetodi väljund konsooli logiekraanil. Konsoolirakenduse loomiseks järgige alltoodud samme. Paremklõpsake Visual Studio lahendusfailil ja valige suvand Lisa-> Uus projekt.
Step 3) Selles sammus
- Valige esmalt Visual C# Windows valik. Seejärel valige konsoolirakenduse loomise võimalus.
- Andke oma projektile nimi, mis meie puhul on antud kui "DemoApplication".
Pärast ülaltoodud ekraanil nupule OK klõpsamist näete projekti Visual Studio lahenduste brauseris.
Step 4) Selles etapis määrate DemoApplication Console'i rakenduse käivitusprojektiks. Seda tehakse tagamaks, et see rakendus käivitub esimesena, kui kogu Visual Studio projekt käivitatakse. See konsoolirakendus kutsub omakorda veebiteenuse, mille Visual Studio automaatselt käivitab. Selle etapi lõpuleviimiseks paremklõpsake DemoApplicationi projektil ja valige suvand „Määra käivitusprojektiks“.
Step 5) Järgmine samm on lisada meie teenuse viide „Guru99Webservice” meie konsoolirakendusse. Seda tehakse selleks, et DemoApplication saaks viidata veebiteenusele ja kõigile veebiteenuses olevatele veebimeetoditele. Selleks paremklõpsake DemoApplicationi projektifailil ja valige menüüvalik Lisa->Teenuse viide.
Step 6) Selles etapis pakume erinevaid väärtusi, mis on vajalikud meie teenuse viite lisamiseks.
- Esiteks peame valima avastamisvaliku. See valik valib automaatselt WSDL-faili meie TutorialService veebiteenuse jaoks.
- Järgmisena peaksime oma teenuseviitele nime andma. Meie puhul anname sellele nimeks Guru99Veebiteenus.
- Seejärel peame laiendama valikut TutorialService.asmx, et näeksime paremal pool meetodit „GetTutorialService”. Siin on TutorialService.asmx meie Visual Studio .Net faili nimi, mis sisaldab meie veebiteenuse koodi.
- Seejärel näeme oma veebimeetodit, mis oli meie veebiteenuses nimega „GetTutorialService”.
Kui klõpsame nupul „OK“, lisatakse kogu sellele veebiteenusele juurdepääsuks vajalik kood meie DemoApplication Console'i rakendusse, nagu allpool näidatud. Ekraanipildil on näha, et „Guru„99Webservice” lisati edukalt meie konsoolirakendusse.
Step 7) Järgmine samm on koodi lisamine meie konsoolirakendusse, et pääseda ligi meie veebiteenuses olevale veebimeetodile. Avage konsoolirakendusega automaatselt kaasasolev Program.cs koodifail ja lisage allolev kood.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Selgitus:
- Esimene osa on valida fail Program.cs. See on peamine fail, mille Visual Studio loob konsoolirakenduse loomisel. See fail käivitatakse konsoolirakenduse (meie puhul DemoApplication) käivitamisel.
- Seejärel loome muutuja nimega „klient“, mis määratakse meie teenuse viite eksemplariks, mis loodi varasemas etapis. Meie puhul on teenuse viide 'Guru99Veebiteenus.Guru99VeebiteenuseSeepKlient()'.
- Seejärel kutsume TutorialService'i veebiteenuses välja oma veebimeetodi 'GetTutorialService'. Pidage meeles, et meie GetTutorialService meetod aktsepteerib täisarvulist parameetrit, seega edastame veebimeetodile lihtsalt täisarvulise parameetri.
- See viimane rida on lihtsalt selleks, et konsooli logiekraan jääks aktiivseks, et saaksime väljundit vaadata. See käsk ootab kasutaja sisendit.
Väljund
Kui kõik ülaltoodud sammud on järgitud ja demorakendus käivitatud, kuvatakse allolev väljund.
Väljundist näeme selgelt, et DemoApplication kutsub meie veebiteenust ja et veebiteenuse tagastatud string kuvatakse meie konsooli logis.
















