Hva er WSDL? Betydning og eksempel

โšก Smart oppsummering

WSDL (webtjenester Description Language) er en XML-basert fil som forteller en klientapplikasjon hva en webtjeneste gjรธr og hvordan den skal kalle den. Denne ressursen forklarer WSDL-struktur, elementer, meldinger, porttyper, bindinger og et publiseringseksempel.

  • ๐Ÿ“„ Kjernedefinisjon: WSDL er en XML-fil som beskriver en webtjenestes plassering, operasjoner og meldingene den godtar og returnerer.
  • ๐Ÿ—๏ธ Dokumentstruktur: Et WSDL-dokument er organisert i typer, melding, portType, binding og tjenesteelementer pakket inn i en definisjonsrot.
  • ๐Ÿ”ค Nรธkkelelementer: Elementet types definerer datatyper, message definerer utvekslede data, portType grupperer operasjoner, og binding tilordner dem til en protokoll.
  • โœ‰๏ธ Meldinger og porter: Hver webmetode bruker en input- og en output-melding som til sammen danner รฉn operasjon eksponert gjennom en porttype.
  • ๐Ÿ› ๏ธ Automatisk generert: Redaktรธrer som Visual Studio og Eclipse generere WSDL-filen automatisk, som klientapplikasjoner bruker for รฅ kalle tjenesten.

Hva er WSDL

Hva er WSDL?

Web Services Description Sprรฅk (WSDL) er en XML-basert fil som i utgangspunktet forteller klientapplikasjonen hva webtjenesten gjรธr. WSDL-filen brukes til รฅ beskrive i et nรธtteskall hva nettjenesten gjรธr og gir klienten all informasjon som kreves for รฅ koble seg til nettjenesten og bruke all funksjonaliteten som tilbys av nettjenesten.

I denne veiledningen skal vi fokusere pรฅ den viktigste delen av webtjenester, og det er WSDL, eller webtjenester. Descriptionsprรฅk. Det fungerer som kontracmellom webtjenesten og enhver klient som รธnsker รฅ konsumere den.

Strukturen til et WSDL-dokument

Et WSDL-dokument brukes til รฅ beskrive en webtjeneste. Denne beskrivelsen er nรธdvendig slik at klientapplikasjoner kan forstรฅ hva webtjenesten faktisk gjรธr.

  • WSDL-filen inneholder plasseringen til webtjenesten, og
  • Metodene som er eksponert av webtjenesten.

Selve WSDL-filen kan se veldig kompleks ut for enhver bruker, men den inneholder all nรธdvendig informasjon som enhver klientapplikasjon ville trenge for รฅ bruke den relevante webtjenesten. Nedenfor er den generelle strukturen til en WSDL-fil:

  • Definisjon
  • Targetnamespace
  • Datatyper
  • meldinger
  • Porttype
  • Bindinger
  • Service

En viktig ting รฅ merke seg her er at definisjonen av meldinger, som er det som sendes av SOAP protokoll, er faktisk definert i WSDL-dokumentet. WSDL-dokumentet forteller en klientapplikasjon hvilke typer SOAP-meldinger som sendes og aksepteres av webtjenesten.

Med andre ord er WSDL akkurat som et postkort som har adressen til et bestemt sted. Adressen gir detaljene om hvor meldingen skal leveres. Derfor er WSDL-filen pรฅ samme mรฅte postkortet som har adressen til webtjenesten som kan levere all funksjonaliteten klienten รธnsker.

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

Nedenfor er et diagram over strukturen til en WSDL-fil.

Strukturen til et WSDL-dokument

Strukturen til en WSDL

WSDL-elementer

WSDL-filen inneholder fรธlgende hoveddeler:

  1. Ocuco Taggen brukes til รฅ definere alle de komplekse datatypene som skal brukes i meldingen som utveksles mellom klientapplikasjonen og webtjenesten. Dette er viktig fordi hvis webtjenesten jobber med en kompleks datatype, bรธr klientapplikasjonen vite hvordan den skal behandles. Datatyper som flyttall, tall og strenger er alle enkle datatyper, men det kan finnes strukturerte datatyper levert av webtjenesten. For eksempel kan det vรฆre en datatype kalt EmployeeDataType som kan ha to elementer kalt ยซEmployeeNameยป av typen streng og ยซEmployeeIDยป av typen tall eller heltall. Sammen danner de en kompleks datatype.
  2. Ocuco Taggen brukes til รฅ definere meldingen som utveksles mellom klientapplikasjonen og webserveren. Disse meldingene forklarer input- og output-operasjonene som kan utfรธres av webtjenesten. Et eksempel pรฅ en melding kan vรฆre en som godtar ansatt-ID-en til en ansatt, og output-meldingen kan vรฆre navnet pรฅ den ansatte basert pรฅ den angitte ansatt-ID-en.
  3. Ocuco taggen brukes til รฅ kapsle inn hver inn- og utgangsmelding i รฉn logisk operasjon. Sรฅ det kan vรฆre en operasjon kalt "GetEmployee" som kombinerer inngangsmeldingen om รฅ godta EmployeeID fra en klientapplikasjon og deretter sende EmployeeName som utdatamelding.
  4. Ocuco Taggen brukes til รฅ binde operasjonen til en bestemt porttype. Dette er slik at nรฅr klientapplikasjonen kaller den relevante porttypen, vil den kunne fรฅ tilgang til operasjonene som er bundet til den. Porttyper er akkurat som grensesnitt. Sรฅ hvis en klientapplikasjon trenger รฅ bruke en webtjeneste, mรฅ de bruke bindingsinformasjonen for รฅ sikre at de kan koble til grensesnittet som tilbys av den webtjenesten.
  5. Ocuco En tag er et navn gitt til selve webtjenesten. Nรฅr en klientapplikasjon fรธrst foretar et kall til webtjenesten, vil den gjรธre det ved รฅ kalle navnet pรฅ webtjenesten. For eksempel kan en webtjeneste vรฆre plassert pรฅ en adresse som http://localhost/Guru99/Tutorial.asmx. Service-ID-en vil ha URL definert, som forteller klientapplikasjonen at en webtjeneste er tilgjengelig pรฅ denne plasseringen.

Hvorfor WSDL

En webtjeneste er en viktig komponent i byggingen av moderne webapplikasjoner. Hovedformรฅlet deres er รฅ la flere applikasjoner bygget pรฅ forskjellige programmeringssprรฅk kommunisere med hverandre. For eksempel kan vi fรฅ en .Net-webapplikasjon til รฅ kommunisere med en Java applikasjon via en webtjeneste.

En webtjeneste har fรธlgende hovedfunksjoner:

  • Den er bygget med programmeringssprรฅket XML. Nesten alle moderne teknologier som .Net og Java har tilsvarende kommandoer som har muligheten til รฅ arbeide med XML. Derfor ble XML tatt som det mest passende sprรฅket for รฅ bygge webtjenester.
  • Webtjenester kommuniserer via HTTP. HTTP er en protokoll som brukes av alle nettbaserte applikasjoner. Derfor var det fornuftig รฅ sรธrge for at webtjenester ogsรฅ hadde muligheten til รฅ fungere over HTTP-protokollen.
  • Webtjenester samsvarer med en bestemt sprรฅkspesifikasjon. Denne spesifikasjonen er satt av W3C, som er det styrende organet for alle nettstandarder.
  • Nettjenester har et beskrivelsessprรฅk kjent som WSDL, som brukes til รฅ beskrive nettjenesten.

WSDL-filen er skrevet i vanlig XML. Grunnen til at den er i XML er at filen kan leses av et hvilket som helst programmeringssprรฅk. Sรฅ hvis klientapplikasjonen ble skrevet i .Net, ville den forstรฅ XML-filen. Pรฅ samme mรฅte, hvis klientapplikasjonen ble skrevet i Java programmeringssprรฅk, ville det ogsรฅ kunne tolke WSDL-filen.

Behov for WSDL

WSDL-filen er det som binder alt sammen. Fra diagrammet ovenfor kan du se at du kan opprette en webtjeneste i .Net-sprรฅket. Sรฅ det er her tjenesten implementeres. Hvis du ikke hadde WSDL-filen og รธnsket en Java klasse for รฅ bruke webtjenesten, ville du trenge mye kodearbeid for รฅ oppnรฅ dette. Men nรฅ, med WSDL-filen, som er i XML og kan forstรฅs av ethvert programmeringssprรฅk, kan du enkelt ha en Java klasse bruker .Net-webtjenesten. Derfor er mengden av kodeinnsats kraftig redusert.

WSDL-meldingsdel

WSDL bestรฅr av en seksjon kalt "meldinger" som er betegnet med element. Dette elementet brukes i utgangspunktet til รฅ beskrive dataene som utveksles mellom webtjenesten og klientapplikasjonen.

Hver webtjeneste vil alltid ha to typer meldinger:

  • Den ene er for inngangen til nettjenesten, og den andre er for utgangen av nettjenesten.
  • Inndataene brukes til รฅ beskrive parameterne som er akseptert av webtjenesten. Dette er et viktig aspekt ved klientapplikasjonen slik at den kjenner verdiene som skal sendes som parametere til webtjenesten.
  • Den andre typen melding er utgangsmeldingen som forteller hvilke resultater nettjenesten gir.

Hver melding vil pรฅ sin side ha en element som brukes til รฅ beskrive parameteren som brukes av inn- og utgangsmeldingen.

Nedenfor er et enkelt eksempel pรฅ hvordan en melding for en webtjeneste ser ut. Webtjenestens funksjonalitet er รฅ oppgi navnet pรฅ en ยซopplรฆringยป nรฅr en ยซopplรฆrings-IDยป er sendt inn som en parameter til webtjenesten.

WSDL-meldingsdel

  1. Som vi kan se, har webtjenesten to meldinger, รฉn for input og den andre for output.
  2. Inndatameldingen er kjent som TutorialNameRequest, som har รฉn parameter kalt TutorialID. Denne parameteren er av typen number, som er spesifisert av xsd:number-typen.
  3. Utdatameldingen kalles TutorialNameResponse, som har รฉn parameter kalt TutorialName. Denne parameteren er av typen string, som er spesifisert av xsd:string-typen.

Port Type Binding

Porter brukes i WSDL til รฅ definere รฉn komplett operasjon som tilbys av webtjenesten. I forrige emne sรฅ vi at webtjenesten vรฅr leverte to meldinger, รฉn for input kalt ยซTutorialNameRequestยป og den andre for output kalt ยซTutorialNameResponseยป. Sammen danner input- og output-meldingen det som kalles รฉn komplett operasjon.

WSDL gir et element kalt som brukes til รฅ definere operasjonene som tilbys av webtjenesten.

Porttype Bindende porttype

Sรฅ i eksemplet ovenfor kan vi merke oss fรธlgende:

  1. Navnet pรฅ porttypen som innkapsler operasjonen er gitt som ยซTutorial_PortTypeยป.
  2. Selve operasjonen fรฅr navnet ยซOpplรฆringยป. Sรฅ operasjonen vรฅr gir i utgangspunktet et Opplรฆringsnavn hvis OpplรฆringsID-en oppgis som en inputparameter.
  3. Deretter er de to meldingene vรฅre, en for input og den andre for output, som danner operasjonen vรฅr.

I tillegg til det element, det er ogsรฅ element som brukes til รฅ definere hvordan meldingene skal overfรธres.

Porttype Binding binding

  1. Eksemplet ovenfor viser at bindingen bestรฅr av et bindingsnavn som i vรฅrt tilfelle er gitt som ยซTutorialSoapBindingยป. Binding er, enkelt sagt, informasjonen som klientapplikasjonen bruker for รฅ faktisk binde seg til webtjenesten. Nรฅr den er bundet til webtjenesten, har den muligheten til รฅ kalle de forskjellige operasjonene som eksponeres av webtjenesten.
  2. Transportlaget er gitt som http://, som betyr at meldingene overfรธres over HTTP-protokollen.

Oppretter WSDL-fil

WSDL-filen opprettes hver gang en webtjeneste bygges i et hvilket som helst programmeringssprรฅk. Siden WSDL-filen er ganske komplisert รฅ generere fra bunnen av, er alle editorer som Visual Studio for .Net og Eclipse forum Java opprette WSDL-filen automatisk.

Nedenfor er et eksempel pรฅ en WSDL-fil opprettet i 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>

WSDL-filen ovenfor ser veldig skremmende ut for enhver bruker. Vi vil dekke de ulike delene i detalj i de pรฅfรธlgende veiledningene, men la oss forelรธpig ta en oppsummering av hva hver del av WSDL-filen faktisk gjรธr.

Publisering av netttjenesteeksempel

La oss nรฅ se pรฅ et eksempel pรฅ hvordan vi kan publisere en webtjeneste og bruke den ved hjelp av Visual Studio. I dette eksemplet skal vi opprette en webtjeneste med รฉn WebMethod. Denne metoden vil godta en heltallsparameter kalt ยซTutorialIDยป. Web-metoden vil deretter returnere en streng kalt ยซWebtjenesterยป.

Deretter oppretter vi en konsollbasert applikasjon som bruker denne webtjenesten og kaller webmetoden vรฅr deretter. La oss se pรฅ trinnene som kreves for รฅ utfรธre dette eksemplet.

Trinn 1) Det fรธrste trinnet er รฅ lage din webtjeneste. De detaljerte trinnene for hvordan Asp.Net Nettprosjekter og webtjenester er opprettet, og det er forklart hvordan de opprettes. her.Fรธlg de samme trinnene for รฅ opprette prosjektet og webtjenesten deretter. Det viktigste er รฅ legge inn koden nedenfor i webtjenestefilen.

Publisering av webtjenesten Eksempel pรฅ webtjenestekode

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 Forklaring:

  1. Her lager vi en webmetode kalt ยซGuru99WebService.ยป I denne webmetoden inkluderer vi en heltallsparameter som mรฅ sendes hver gang denne webmetoden kalles.
  2. Deretter definerer vi en variabel kalt "TutorialName" som vil inneholde strengverdien til "Web Services." Dette er verdien som vil bli returnert nรฅr nettjenesten kalles opp.

Trinn 2) Nรฅr vi har definert webtjenestefilen, er neste trinn รฅ opprette et klientprosjekt som skal bruke denne webtjenesten. La oss opprette en enkel konsollapplikasjon som vil kalle denne webtjenesten og pรฅkalle ยซGuru99WebServiceยป, og vis deretter resultatet av web-metoden i konsollloggskjermen. Fรธlg trinnene nedenfor for รฅ opprette et konsollprogram. Hรธyreklikk pรฅ Visual Studio-lรธsningsfilen og velg alternativet Legg til->Nytt prosjekt.

Publisering av webtjenesteeksempelet legg til nytt prosjekt

Trinn 3) I dette trinnet

  1. Sรธrg for รฅ fรธrst velge Visual C# Windows alternativ. Velg deretter alternativet for รฅ opprette en konsollapplikasjon.
  2. Gi et navn for prosjektet ditt som i vรฅrt tilfelle har blitt gitt som "DemoApplication."

Publisering av webtjenesteeksempelkonsollapplikasjonen

Etter at du har klikket pรฅ OK-knappen pรฅ skjermbildet ovenfor, vil du kunne se prosjektet i Solution Explorer i Visual Studio.

Publisering av webtjenesteeksempellรธsningsutforskeren

Trinn 4) I dette trinnet angir du DemoApplication Console-applikasjonen som oppstartsprosjekt. Dette gjรธres for รฅ sikre at denne applikasjonen starter fรธrst nรฅr hele Visual Studio-prosjektet kjรธres. Denne konsollapplikasjonen vil igjen kalle webtjenesten som automatisk startes av Visual Studio. For รฅ fullfรธre dette trinnet, hรธyreklikker du pรฅ DemoApplication-prosjektet og velger alternativet ยซAngi som oppstartsprosjektยป.

Publisering av webtjenesteeksemplet som oppstartsprosjekt

Trinn 5) Neste trinn er รฅ legge til servicereferansen til vรฅr ยซGuru99Webserviceยป til konsollapplikasjonen vรฅr. Dette gjรธres slik at DemoApplication kan referere til webtjenesten og alle webmetodene i webtjenesten. For รฅ gjรธre dette, hรธyreklikk pรฅ DemoApplication-prosjektfilen og velg menyalternativet Legg til->Tjenestereferanse.

Publisering av webtjenesteeksempelet legg til tjenestereferanse

Trinn 6) I dette trinnet vil vi oppgi de forskjellige verdiene som kreves for รฅ legge til tjenestereferansen vรฅr.

  1. Fรธrst mรฅ vi velge vรฅrt oppdagingsalternativ. Dette alternativet vil automatisk hente WSDL-filen for TutorialService-webtjenesten vรฅr.
  2. Deretter bรธr vi gi et navn til tjenestereferansen vรฅr. I vรฅrt tilfelle gir vi den navnet Guru99Nettjeneste.
  3. Sรฅ mรฅ vi utvide alternativet TutorialService.asmx slik at vi kan se metoden ยซGetTutorialServiceยป pรฅ hรธyre side. Her er TutorialService.asmx navnet pรฅ Visual Studio .Net-filen vรฅr, som inneholder koden for webtjenesten vรฅr.
  4. Da vil vi se webmetoden vรฅr, som vi hadde i webtjenesten vรฅr, kjent som ยซGetTutorialServiceยป.

Publisering av webtjenesten Eksempel pรฅ tjenestereferanseverdier

Nรฅr vi klikker pรฅ ยซOKยป-knappen, vil all nรธdvendig kode for รฅ fรฅ tilgang til denne webtjenesten bli lagt til i DemoApplication Console-applikasjonen vรฅr, som vist nedenfor. Skjermbildet viser at ยซGuruยซ99Webserviceยป ble lagt til i konsollapplikasjonen vรฅr.

Publisering av webtjenesteeksempeltjenesten lagt til

Trinn 7) Neste trinn er รฅ legge til koden i konsollapplikasjonen vรฅr for รฅ fรฅ tilgang til webmetoden i webtjenesten vรฅr. ร…pne Program.cs-kodefilen som fรธlger automatisk med konsollapplikasjonen, og legg til koden nedenfor.

Publisering av webtjenesteeksempelkoden Program.cs

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

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

         Console.ReadKey();
      }
   }
}

Code Forklaring:

  1. Den fรธrste delen er รฅ velge Program.cs-filen. Dette er hovedfilen som opprettes av Visual Studio nรฅr et konsollprogram opprettes. Det er denne filen som kjรธres nรฅr konsollprogrammet (i vรฅrt tilfelle DemoApplication) kjรธres.
  2. Deretter oppretter vi en variabel kalt ยซclientยป som settes til en instans av tjenestereferansen vรฅr som ble opprettet i et tidligere trinn. I vรฅrt tilfelle er tjenestereferansen 'Guru99Nettjeneste.Guru99WebserviceSoapClient()'.
  3. Vi kaller deretter webmetoden vรฅr ยซGetTutorialServiceยป i TutorialService-webtjenesten. Husk at GetTutorialService-metoden vรฅr godtar en heltallsparameter, sรฅ vi sender bare en heltallsparameter til webmetoden.
  4. Denne siste linjen er bare for รฅ sikre at konsollloggskjermen forblir aktiv slik at vi kan se utdataene. Denne kommandoen vil vente pรฅ inndata fra brukeren.

Produksjon

Nรฅr alle trinnene ovenfor er fulgt, og DemoApplication kjรธres, vil utdataene nedenfor vises.

Publisering av eksempelutdata for webtjenesten

Fra utgangen kan vi tydelig se at DemoApplication kaller opp webtjenesten vรฅr og at strengen som returneres av webtjenesten vises i konsollloggen vรฅr.

Spรธrsmรฅl og svar

AI kan lese en kompleks WSDL, forklare operasjonene i et enkelt sprรฅk, generere eksempelforespรธrsler og flagge avvik mellom kontracog implementeringen. Dette fremskynder integreringen med ukjente eller eldre SOAP-webtjenester.

Ja. AI-assistenter kan gjรธre en WSDL-definisjon om til klientstubber, datamodeller og eksempelkall i sprรฅk som C#. Javaeller PythonUtviklere bรธr fortsatt gjennomgรฅ den genererte koden for riktige navnerom og feilhรฅndtering.

SOAP er meldingsprotokollen som bรฆrer selve XML-forespรธrselen og -svaret. WSDL er beskrivelsesfilen som forteller en klient hvilke operasjoner en SOAP-webtjeneste tilbyr og hvordan de skal kalles. De brukes sammen.

Ja. WSDL er fortsatt standard for SOAP-webtjenester i bedrifts-, bank- og offentlige systemer som trenger formell autorisasjon.tracts. Nyere REST API-er bruker vanligvis OpenAPI (Swagger) i stedet, men mange eldre integrasjoner er fortsatt avhengige av WSDL.

Oppsummer dette innlegget med: