Što je WSDL? Značenje i primjer

⚡ Pametni sažetak

WSDL (Web usluge Description Language) je XML datoteka koja klijentskoj aplikaciji govori što web servis radi i kako ga pozvati. Ovaj resurs objašnjava WSDL strukturu, elemente, poruke, tipove portova, povezivanja i primjer objavljivanja.

  • 📄 Osnovna definicija: WSDL je XML datoteka koja opisuje lokaciju, operacije i poruke koje web servis prihvaća i vraća.
  • 🏗️ Struktura dokumenta: WSDL dokument je organiziran u tipove, message, portType, binding i service elemente omotane u korijenu definicija.
  • 🔤 Ključni elementi: Element types definira tipove podataka, message definira razmijenjene podatke, portType grupira operacije, a povezivanje ih mapira na protokol.
  • ✉️ Poruke i portovi: Svaka web metoda koristi ulaznu i izlaznu poruku koje zajedno tvore jednu operaciju izloženu putem tipa porta.
  • 🛠️ Automatski generirano: Urednici kao što su Visual Studio i Eclipse automatski generirati WSDL datoteku koju klijentske aplikacije koriste za pozivanje usluge.

Što je WSDL

Što je WSDL?

Web usluge Descriptionski jezik (WSDL) je datoteka temeljena na XML-u koja u osnovi govori klijentskoj aplikaciji što web usluga radi. WSDL datoteka koristi se za ukratko opisivanje onoga što web usluga radi i daje klijentu sve informacije potrebne za povezivanje s web uslugom i korištenje svih funkcija koje web usluga nudi.

U ovom tutorialu ćemo se usredotočiti na najvažniji dio web servisa, a to je WSDL ili web servisi. DescriptJezik. Djeluje kao kontracizmeđu web servisa i bilo kojeg klijenta koji ga želi koristiti.

Struktura WSDL dokumenta

WSDL dokument se koristi za opis web servisa. Ovaj opis je potreban kako bi klijentske aplikacije mogle razumjeti što web servis zapravo radi.

  • WSDL datoteka sadrži lokaciju web servisa i
  • Metode koje izlaže web servis.

Sama WSDL datoteka može izgledati vrlo složeno bilo kojem korisniku, ali sadrži sve potrebne informacije koje bi bilo koja klijentska aplikacija zahtijevala za korištenje relevantne web usluge. U nastavku je opća struktura WSDL datoteke:

  • Definicija
  • TargetProstor
  • Vrste podataka
  • Poruke
  • Vrsta priključka
  • vezovi
  • Servis

Jedna ključna stvar koju ovdje treba napomenuti jest definicija poruka, odnosno ono što se prenosi od strane SOAP protokol, zapravo je definiran u WSDL dokumentu. WSDL dokument govori klijentskoj aplikaciji koje vrste SOAP poruka šalje i prihvaća web servis.

Drugim riječima, WSDL je poput razglednice koja sadrži adresu određene lokacije. Adresa pruža detalje o tome gdje poruka treba biti dostavljena. Dakle, na isti način, WSDL datoteka je razglednica koja sadrži adresu web servisa koji može pružiti sve funkcionalnosti koje klijent želi.

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

Ispod je dijagram strukture WSDL datoteke.

Struktura WSDL dokumenta

Struktura WSDL-a

WSDL elementi

WSDL datoteka sadrži sljedeće glavne dijelove:

  1. The Oznaka se koristi za definiranje svih složenih tipova podataka koji će se koristiti u poruci razmijenjenoj između klijentske aplikacije i web servisa. To je važno jer ako web servis radi sa složenim tipom podataka, tada bi klijentska aplikacija trebala znati kako ga obraditi. Tipovi podataka kao što su float, brojevi i stringovi su jednostavni tipovi podataka, ali web servis može pružiti strukturirane tipove podataka. Na primjer, mogao bi postojati tip podataka pod nazivom EmployeeDataType koji bi mogao imati 2 elementa pod nazivom "EmployeeName" tipa string i "EmployeeID" tipa number ili integer. Zajedno tvore složeni tip podataka.
  2. The Oznaka se koristi za definiranje poruke koja se razmjenjuje između klijentske aplikacije i web poslužitelja. Ove poruke objašnjavaju ulazne i izlazne operacije koje web servis može izvršiti. Primjer poruke može biti ona koja prihvaća ID zaposlenika, a izlazna poruka može biti ime zaposlenika na temelju navedenog ID-a zaposlenika.
  3. The oznaka se koristi za kapsuliranje svake ulazne i izlazne poruke u jednu logičku operaciju. Dakle, mogla bi postojati operacija pod nazivom "GetEmployee" koja kombinira ulaznu poruku prihvaćanja EmployeeID-a od klijentske aplikacije i zatim slanje EmployeeName kao izlazne poruke.
  4. The Oznaka se koristi za vezanje operacije na određenu vrstu porta. To je tako da kada klijentska aplikacija pozove odgovarajuću vrstu porta, može pristupiti operacijama koje su na nju vezane. Vrste portova su baš kao sučelja. Dakle, ako klijentska aplikacija treba koristiti web uslugu, mora koristiti informacije o vezanju kako bi osigurala da se može povezati sa sučeljem koje pruža ta web usluga.
  5. The Oznaka je naziv dodijeljen samom web servisu. U početku, kada klijentska aplikacija poziva web servis, to će učiniti pozivanjem naziva web servisa. Na primjer, web servis može se nalaziti na adresi kao što je http://localhost/Guru99/Tutorial.asmx. Oznaka usluge imat će URL definiran, što klijentskoj aplikaciji govori da je web servis dostupan na toj lokaciji.

Zašto WSDL

Web servis je važna komponenta u izgradnji modernih web aplikacija. Njihova glavna svrha je omogućiti više aplikacija izgrađenih na različitim programskim jezicima da međusobno komuniciraju. Na primjer, možemo imati .Net web aplikaciju koja komunicira s Java aplikacija putem web servisa.

Web servis ima sljedeće ključne značajke:

  • Izgrađen je pomoću programskog jezika XML. Gotovo sve moderne tehnologije poput .Neta i Java imaju odgovarajuće naredbe koje imaju mogućnost rada s XML-om. Stoga je XML uzet kao najprikladniji jezik za izgradnju web usluga.
  • Web servisi komuniciraju putem HTTP-a. HTTP je protokol koji koriste sve web-bazirane aplikacije. Stoga je bilo logično osigurati da web servisi također imaju mogućnost rada putem HTTP protokola.
  • Web usluge su u skladu s određenom jezičnom specifikacijom. Ovu specifikaciju postavlja W3C, koje je upravno tijelo za sve web standarde.
  • Web usluge imaju jezik opisa poznat kao WSDL, koji se koristi za opisivanje web usluge.

WSDL datoteka je napisana u običnom XML-u. Razlog zašto je u XML-u je taj što datoteku može čitati bilo koji programski jezik. Dakle, ako je klijentska aplikacija napisana u .Net-u, razumjela bi XML datoteku. Slično tome, ako je klijentska aplikacija napisana u Java programski jezik, tada bi također mogao interpretirati WSDL datoteku.

Potreba za WSDL-om

WSDL datoteka je ono što sve povezuje. Iz gornjeg dijagrama možete vidjeti da možete stvoriti web uslugu u .Net jeziku. Dakle, ovdje se usluga implementira. Ako niste imali WSDL datoteku i željeli ste Java klasa za korištenje web servisa, trebalo bi vam puno kodiranja da biste to postigli. Ali sada s WSDL datotekom, koja je u XML formatu i koju može razumjeti bilo koji programski jezik, lako možete imati Java razreda koriste web uslugu .Net. Stoga je količina napora kodiranja znatno smanjena.

WSDL dio poruke

WSDL se sastoji od odjeljka pod nazivom "poruke" koji je označen s element. Ovaj element se u osnovi koristi za opis podataka koji se razmjenjuju između web servisa i klijentske aplikacije.

Svaka web usluga uvijek će imati 2 vrste poruka:

  • Jedan je za ulaz web usluge, a drugi je za izlaz web usluge.
  • Unos se koristi za opisivanje parametara koje web servis prihvaća. Ovo je važan aspekt klijentske aplikacije kako bi znala vrijednosti koje treba poslati kao parametre web-usluzi.
  • Druga vrsta poruke je izlazna poruka koja govori koje rezultate pruža web usluga.

Svaka će poruka zauzvrat imati a element koji se koristi za opisivanje parametra koji koristi ulazna i izlazna poruka.

U nastavku je jednostavan primjer kako izgleda poruka za web uslugu. Funkcionalnost web usluge je pružiti naziv "Vodiča" nakon što se "ID vodiča" pošalje kao parametar web usluzi.

WSDL dio poruke

  1. Kao što vidimo, web servis ima 2 poruke, jednu za ulaz, a drugu za izlaz.
  2. Ulazna poruka poznata je kao TutorialNameRequest koja ima jedan parametar pod nazivom TutorialID. Ovaj parametar je tipa broj, koji je određen tipom xsd:broj.
  3. Izlazna poruka poznata je kao TutorialNameResponse koja ima jedan parametar pod nazivom TutorialName. Ovaj parametar je tipa string, koji je određen tipom xsd:string.

Povezivanje tipa priključka

Portovi se u WSDL-u koriste za definiranje jedne potpune operacije koju nudi web servis. U prethodnoj temi vidjeli smo da naš web servis pruža 2 poruke, jednu za ulaz pod nazivom „TutorialNameRequest“ i drugu za izlaz pod nazivom „TutorialNameResponse“. Zajedno ulazna i izlazna poruka tvore ono što se naziva jednom potpunom operacijom.

WSDL pruža element tzv koji se koristi za definiranje operacija koje pruža web usluga.

Vrsta porta Vezivanje portType

Dakle, u našem gornjem primjeru možemo uočiti sljedeće:

  1. Naziv tipa porta koji enkapsulira operaciju dan je kao „Tutorial_PortType“.
  2. Samoj operaciji dodijeljen je naziv „Vodič“. Dakle, naša operacija u osnovi daje NazivVodnika ako je IDVodnika zadan kao ulazni parametar.
  3. Sljedeće su naše dvije poruke, jedna za ulaz, a druga za izlaz, koje tvore našu operaciju.

Osim element, tu je i element koji se koristi za definiranje načina prijenosa poruka.

Vrsta porta Povezivanje vezanje

  1. Gornji primjer pokazuje da se vezanje sastoji od naziva vezanja koji je u našem slučaju dan kao „TutorialSoapBinding“. Veza, jednostavno rečeno, su informacije koje klijentska aplikacija koristi za stvarno vezanje na web uslugu. Nakon što se veže na web uslugu, tada ima mogućnost pozivanja različitih operacija koje web usluga izlaže.
  2. Transportni sloj je zadan kao http:// što znači da će se poruke prenositi putem HTTP protokola.

Stvaranje WSDL datoteke

WSDL datoteka se stvara svaki put kada se web servis izgradi u bilo kojem programskom jeziku. Budući da je WSDL datoteku prilično komplicirano generirati od nule, svi editori poput Visual Studija za .Net i Eclipse za Java automatski stvoriti WSDL datoteku.

Ispod je primjer WSDL datoteke stvorene u 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>

Gornja WSDL datoteka izgleda vrlo zastrašujuće svakom korisniku. Detaljno ćemo obraditi različite dijelove u sljedećim vodičima, ali za sada, pogledajmo ukratko što svaki dio WSDL datoteke zapravo radi.

Objavljivanje primjera web usluge

Sada pogledajmo primjer kako možemo objaviti web servis i koristiti ga pomoću Visual Studija. U ovom primjeru, stvorit ćemo web servis s jednom WebMethod. Ova metoda će prihvatiti cijeli broj parametar pod nazivom „TutorialID“. Web metoda će zatim vratiti niz pod nazivom „Web Services“.

Zatim ćemo izraditi konzolnu aplikaciju koja će koristiti ovu web uslugu i u skladu s tim pozivati ​​našu web metodu. Pogledajmo korake potrebne za izvođenje ovog primjera.

Korak 1) Prvi korak je kreiranje vaše web usluge. Detaljni koraci kako Asp.Net Objašnjeno je kako se izrađuju web projekt i web usluga ovdjeMolimo slijedite iste korake za izradu projekta i web servisa. Ključni dio je unijeti donji kod u datoteku web servisa.

Objavljivanje primjera koda web servisa

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 Objašnjenje:

  1. Ovdje stvaramo WebMethod pod nazivom "Guru99WebService.” U ovoj web metodi uključujemo cjelobrojni parametar koji se mora proslijediti svaki put kada se ova web metoda pozove.
  2. Zatim definiramo varijablu pod nazivom "TutorialName" koja će sadržavati vrijednost niza "Web Services." Ovo je vrijednost koja će biti vraćena kada se pozove web usluga.

Korak 2) Nakon što smo definirali datoteku web servisa, sljedeći korak je stvaranje klijentskog projekta koji će koristiti ovaj web servis. Izradimo jednostavnu konzolnu aplikaciju koja će pozivati ​​ovaj web servis, pozvati "Guru99WebService”, a zatim prikažite izlaz web metode na zaslonu zapisnika konzole. Slijedite dolje navedene korake za izradu konzolne aplikacije. Desnom tipkom miša kliknite datoteku rješenja Visual Studio i odaberite opciju Dodaj->Novi projekt.

Objavljivanje primjera web servisa dodavanje novog projekta

Korak 3) U ovom koraku

  1. Najprije odaberite Visual C# Windows opcija. Zatim odaberite opciju izrade konzolne aplikacije.
  2. Dajte naziv svom projektu koji je u našem slučaju dan kao "DemoApplication".

Objavljivanje primjera konzolne aplikacije web servisa

Nakon što kliknete gumb U redu na gornjem zaslonu, moći ćete vidjeti projekt u Solution Exploreru u Visual Studiju.

Objavljivanje preglednika rješenja primjera web servisa

Korak 4) U ovom koraku postavit ćete konzolnu aplikaciju DemoApplication kao početni projekt. To je učinjeno kako bi se osiguralo da se ova aplikacija pokrene prva kada se pokrene cijeli projekt Visual Studio. Ova konzolna aplikacija će zauzvrat pozvati web servis koji će Visual Studio automatski pokrenuti. Da biste dovršili ovaj korak, desnom tipkom miša kliknite projekt DemoApplication i odaberite opciju "Postavi kao početni projekt".

Objavljivanje primjera web servisa kao početnog projekta

Korak 5) Sljedeći korak je dodavanje reference usluge našeg "Guru99Webservice” našoj konzolnoj aplikaciji. To se radi kako bi DemoApplication mogla referencirati web servis i sve web metode u web servisu. Da biste to učinili, desnom tipkom miša kliknite datoteku projekta DemoApplication i odaberite opciju izbornika Dodaj->Referenca servisa.

Objavljivanje primjera web servisa dodavanje reference servisa

Korak 6) U ovom koraku navest ćemo različite vrijednosti koje su potrebne za dodavanje naše reference usluge.

  1. Prvo moramo odabrati opciju otkrivanja. Ova opcija će automatski preuzeti WSDL datoteku za našu web uslugu TutorialService.
  2. Zatim bismo trebali dati naziv našoj referenci usluge. U našem slučaju, dajemo joj naziv Guru99Webservice.
  3. Zatim moramo proširiti opciju TutorialService.asmx kako bismo mogli vidjeti metodu "GetTutorialService" s desne strane. Ovdje je TutorialService.asmx naziv naše Visual Studio .Net datoteke koja sadrži kod za našu web uslugu.
  4. Zatim ćemo vidjeti našu web metodu koju smo imali u našoj web usluzi poznatoj kao „GetTutorialService“.

Objavljivanje referentnih vrijednosti usluge primjera web servisa

Kada kliknemo na gumb „U redu“, sav potreban kod za pristup ovoj web usluzi bit će dodan našoj aplikaciji DemoApplication Console kao što je prikazano u nastavku. Snimka zaslona prikazuje da je „Guru"99Webservice" je uspješno dodan u našu konzolnu aplikaciju.

Dodana je usluga objavljivanja primjera web servisa

Korak 7) Sljedeći korak je dodavanje koda u našu konzolnu aplikaciju za pristup web metodi u našoj web usluzi. Otvorite datoteku koda Program.cs koja dolazi automatski s konzolnom aplikacijom i dodajte donji kod.

Objavljivanje koda Program.cs primjera web servisa

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

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

         Console.ReadKey();
      }
   }
}

Code Objašnjenje:

  1. Prvi dio je odabir datoteke Program.cs. To je glavna datoteka koju Visual Studio stvara prilikom izrade konzolne aplikacije. Ova datoteka se izvršava kada se pokrene konzolna aplikacija (u našem slučaju DemoApplication).
  2. Zatim stvaramo varijablu pod nazivom „klijent“ koja će biti postavljena na instancu naše reference usluge koja je stvorena u ranijem koraku. U našem slučaju, referenca usluge je 'Guru99Webservice.Guru99WebserviceSoapClient()'.
  3. Zatim pozivamo našu web metodu 'GetTutorialService' u web servisu TutorialService. Imajte na umu da naša metoda GetTutorialService prihvaća cjelobrojni parametar, tako da web metodi samo prosljeđujemo cjelobrojni parametar.
  4. Ovaj posljednji redak služi samo za osiguranje da zaslon s logom konzole ostane aktivan kako bismo mogli vidjeti izlaz. Ova naredba će čekati unos od korisnika.

Izlaz

Kada se slijede svi gore navedeni koraci i pokrene DemoApplication, prikazat će se donji izlaz.

Objavljivanje rezultata primjera web servisa

Iz izlaza možemo jasno vidjeti da DemoApplication poziva našu web uslugu i da se niz koji vraća web usluga prikazuje u našem zapisniku konzole.

Pitanja i odgovori

Umjetna inteligencija može čitati složeni WSDL, objasniti njegove operacije jednostavnim jezikom, generirati uzorke zahtjeva i označiti neusklađenosti između kontraci implementaciju. To ubrzava integraciju s nepoznatim ili naslijeđenim SOAP web servisima.

Da. AI asistenti mogu pretvoriti WSDL definiciju u klijentske završne datoteke, modele podataka i primjere poziva u jezicima kao što je C#, Java, ili PythonProgrameri bi i dalje trebali pregledati generirani kod radi ispravnih imenskih prostora i rukovanja pogreškama.

SOAP je protokol za razmjenu poruka koji prenosi stvarni XML zahtjev i odgovor. WSDL je datoteka opisa koja klijentu govori koje operacije SOAP web usluga nudi i kako ih pozvati. Koriste se zajedno.

Da. WSDL ostaje standard za SOAP web usluge u poslovnim, bankarskim i vladinim sustavima kojima je potrebna formalna kontrola.tracNoviji REST API-ji obično koriste OpenAPI (Swagger), ali mnoge naslijeđene integracije i dalje ovise o WSDL-u.

Sažmite ovu objavu uz: