Hvad er WSDL? Betydning og eksempel

โšก Smart opsummering

WSDL (Web Services Description Language) er en XML-baseret fil, der fortรฆller en klientapplikation, hvad en webtjeneste gรธr, og hvordan den skal kaldes. Denne ressource forklarer WSDL-struktur, elementer, meddelelser, porttyper, bindinger og et eksempel pรฅ publicering.

  • ๐Ÿ“„ Kernedefinition: WSDL er en XML-fil, der beskriver en webtjenestes placering, handlinger og de meddelelser, den accepterer og returnerer.
  • ๐Ÿ—๏ธ Dokumentstruktur: Et WSDL-dokument er organiseret i typer, meddelelse, portType, binding og service-elementer, der er pakket ind i en definitionsrod.
  • ๐Ÿ”ค Nรธgleelementer: Elementet `types` definerer datatyper, `message` definerer udvekslede data, `portType` grupperer operationer, og `binding` knytter dem til en protokol.
  • โœ‰๏ธ Beskeder og porte: Hver webmetode bruger en input- og en outputbesked, der tilsammen danner รฉn operation, der eksponeres via en porttype.
  • ๐Ÿ› ๏ธ Automatisk genereret: Editorer som Visual Studio og Eclipse genererer automatisk WSDL-filen, som klientapplikationer bruger til at kalde tjenesten.

Hvad er WSDL

Hvad er WSDL?

Web Services Description sprog (WSDL) er en XML-baseret fil, der grundlรฆggende fortรฆller klientapplikationen, hvad webtjenesten gรธr. WSDL-filen bruges til at beskrive i en nรธddeskal, hvad webservicen gรธr og giver klienten al den information, der krรฆves for at oprette forbindelse til webservicen og bruge al den funktionalitet, som webservicen tilbyder.

I denne vejledning vil vi fokusere pรฅ den vigtigste del af webtjenester, og det er WSDL eller webtjenester. Descriptionsprog. Det fungerer som den centraletracmellem webtjenesten og enhver klient, der รธnsker at forbruge den.

Strukturen af โ€‹โ€‹et WSDL-dokument

Et WSDL-dokument bruges til at beskrive en webtjeneste. Denne beskrivelse er nรธdvendig, sรฅ klientapplikationer kan forstรฅ, hvad webtjenesten rent faktisk gรธr.

  • WSDL-filen indeholder webtjenestens placering, og
  • De metoder, som er eksponeret af webtjenesten.

Selve WSDL-filen kan se meget kompleks ud for enhver bruger, men den indeholder alle de nรธdvendige oplysninger, som enhver klientapplikation ville krรฆve for at bruge den relevante webtjeneste. Nedenfor er den generelle struktur af en WSDL-fil:

  • Definition
  • Targetnavnerum
  • Datatyper
  • Beskeder
  • Porttype
  • Bindinger
  • Service

En vigtig ting at bemรฆrke her er definitionen af โ€‹โ€‹beskeder, som er det, der sendes af SOAP protokol, er faktisk defineret i WSDL-dokumentet. WSDL-dokumentet fortรฆller en klientapplikation, hvilke typer SOAP-meddelelser der sendes og accepteres af webtjenesten.

Med andre ord er WSDL ligesom et postkort, der har adressen pรฅ en bestemt lokation. Adressen angiver detaljerne om, hvor beskeden skal leveres. Derfor er WSDL-filen pรฅ samme mรฅde postkortet, der har adressen pรฅ den webtjeneste, der kan levere al den funktionalitet, 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 af โ€‹โ€‹en WSDL-fil.

Strukturen af โ€‹โ€‹et WSDL-dokument

Struktur af en WSDL

WSDL elementer

WSDL-filen indeholder fรธlgende hoveddele:

  1. Tagget bruges til at definere alle de komplekse datatyper, der vil blive brugt i den besked, der udveksles mellem klientapplikationen og webtjenesten. Dette er vigtigt, fordi hvis webtjenesten arbejder med en kompleks datatype, skal klientapplikationen vide, hvordan den skal behandle den. Datatyper som float, numbers og strings er alle simple datatyper, men der kan vรฆre strukturerede datatyper leveret af webtjenesten. For eksempel kan der vรฆre en datatype kaldet EmployeeDataType, som kan have 2 elementer kaldet "EmployeeName" af typen string og "EmployeeID" af typen number eller integer. Sammen danner de en kompleks datatype.
  2. Tagget bruges til at definere den besked, der udveksles mellem klientapplikationen og webserveren. Disse beskeder forklarer de input- og outputhandlinger, som webtjenesten kan udfรธre. Et eksempel pรฅ en besked kan vรฆre en, der accepterer en medarbejders medarbejder-ID, og โ€‹โ€‹outputbeskeden kan vรฆre navnet pรฅ den medarbejder, der er baseret pรฅ det angivne medarbejder-ID.
  3. tag bruges til at indkapsle hver input- og outputmeddelelse i รฉn logisk operation. Sรฅ der kunne vรฆre en operation kaldet "GetEmployee", som kombinerer inputmeddelelsen om at acceptere EmployeeID fra en klientapplikation og derefter sende EmployeeName som outputbesked.
  4. Tagget bruges til at binde operationen til en bestemt porttype. Dette er sรฅdan, at nรฅr klientapplikationen kalder den relevante porttype, vil den kunne fรฅ adgang til de operationer, der er bundet til den. Porttyper er ligesom grรฆnseflader. Sรฅ hvis en klientapplikation skal bruge en webtjeneste, skal den bruge bindingsoplysningerne til at sikre, at den kan oprette forbindelse til den grรฆnseflade, der leveres af den pรฅgรฆldende webtjeneste.
  5. Et tag er et navn givet til selve webtjenesten. Nรฅr en klientapplikation i starten foretager et kald til webtjenesten, gรธr den det ved at kalde navnet pรฅ webtjenesten. For eksempel kan en webtjeneste vรฆre placeret pรฅ en adresse som http://localhost/Guru99/Tutorial.asmx. Servicekoden vil have URL defineret, som fortรฆller klientapplikationen, at en webtjeneste er tilgรฆngelig pรฅ denne placering.

Hvorfor WSDL

En webtjeneste er en vigtig komponent i opbygningen af โ€‹โ€‹moderne webapplikationer. Deres hovedformรฅl er at give flere applikationer, der er bygget pรฅ forskellige programmeringssprog, mulighed for at kommunikere med hinanden. For eksempel kan vi fรฅ en .Net-webapplikation til at kommunikere med en Java applikation via en webtjeneste.

En webservice har fรธlgende nรธglefunktioner:

  • Det er bygget ved hjรฆlp af programmeringssproget XML. Nรฆsten alle moderne teknologier sรฅsom .Net og Java har tilsvarende kommandoer, der har mulighed for at arbejde med XML. Derfor blev XML taget som det mest passende sprog til at bygge webtjenester.
  • Webtjenester kommunikerer via HTTP. HTTP er en protokol, der bruges af alle webbaserede applikationer. Derfor var det fornuftigt at sikre, at webtjenester ogsรฅ havde mulighed for at arbejde via HTTP-protokollen.
  • Webtjenester er i overensstemmelse med en bestemt sprogspecifikation. Denne specifikation er fastsat af W3C, som er det styrende organ for alle webstandarder.
  • Webtjenester har et beskrivelsessprog kendt som WSDL, som bruges til at beskrive webtjenesten.

WSDL-filen er skrevet i almindelig XML. Grunden til, at den er i XML, er, at filen kan lรฆses af ethvert programmeringssprog. Sรฅ hvis klientapplikationen var skrevet i .Net, ville den forstรฅ XML-filen. Tilsvarende, hvis klientapplikationen var skrevet i Java programmeringssprog, sรฅ ville det ogsรฅ vรฆre i stand til at fortolke WSDL-filen.

Behov for WSDL

WSDL-filen er det, der binder det hele sammen. Ud fra ovenstรฅende diagram kan du se, at du kan oprette en webservice i .Net-sproget. Det er her, servicen implementeres. Hvis du ikke havde WSDL-filen og รธnskede en Java klasse for at bruge webtjenesten, ville du krรฆve en masse kodningsindsats for at opnรฅ dette. Men nu med WSDL-filen, som er i XML og kan forstรฅs af ethvert programmeringssprog, kan du nemt have en Java klasse bruger .Net-webtjenesten. Derfor reduceres mรฆngden af โ€‹โ€‹kodningsindsats kraftigt.

WSDL-meddelelsesdel

WSDL bestรฅr af en sektion kaldet "beskeder", som er betegnet med element. Dette element bruges grundlรฆggende til at beskrive de data, der udveksles mellem webtjenesten og klientapplikationen.

Hver webtjeneste vil altid have 2 typer beskeder:

  • Den ene er til input af webtjenesten, og den anden er til output af webservice.
  • Indgangen bruges til at beskrive de parametre, som accepteres af webservicen. Dette er et vigtigt aspekt af klientapplikationen, sรฅ den kender de vรฆrdier, der skal sendes som parametre til webtjenesten.
  • Den anden type meddelelse er outputmeddelelsen, som fortรฆller, hvilke resultater der leveres af webtjenesten.

Hver besked vil til gengรฆld have en element, som bruges til at beskrive den parameter, der bruges af input- og outputmeddelelsen.

Nedenfor er et simpelt eksempel pรฅ, hvordan en besked til en webtjeneste ser ud. Webtjenestens funktionalitet er at angive navnet pรฅ en "Tutorial", nรฅr et "Tutorial ID" er indsendt som en parameter til webtjenesten.

WSDL-meddelelsesdel

  1. Som vi kan se, har webtjenesten 2 beskeder, en til input og en anden til output.
  2. Inputmeddelelsen kaldes TutorialNameRequest, som har รฉn parameter kaldet TutorialID. Denne parameter er af typen number, som er angivet af xsd:number-typen.
  3. Outputmeddelelsen kaldes TutorialNameResponse, som har รฉn parameter kaldet TutorialName. Denne parameter er af typen string, som er angivet af xsd:string-typen.

Port Type Binding

Porte bruges i WSDL til at definere รฉn komplet operation, som tilbydes af webtjenesten. I det forrige emne sรฅ vi, at vores webtjeneste leverede 2 beskeder, รฉn til inputtet kaldet "TutorialNameRequest" og den anden til outputtet kaldet "TutorialNameResponse". Sammen danner input- og outputbeskeden det, der kaldes รฉn komplet operation.

WSDL giver et element kaldet som bruges til at definere de operationer, der leveres af webtjenesten.

Porttype Bindende porttype

Sรฅ i vores ovenstรฅende eksempel kan vi bemรฆrke fรธlgende:

  1. Navnet pรฅ den porttype, der indkapsler operationen, er angivet som "Tutorial_PortType".
  2. Selve operationen fรฅr navnet "Tutorial". Sรฅ vores operation angiver grundlรฆggende et TutorialName, hvis TutorialID'et angives som inputparameter.
  3. Dernรฆst er vores 2 beskeder, en til input og den anden til output, som danner vores operation.

Ud over den element, der er ogsรฅ element, som bruges til at definere, hvordan meddelelserne skal overfรธres.

Porttype Bindingsbinding

  1. Ovenstรฅende eksempel viser, at bindingen bestรฅr af et bindingsnavn, som i vores tilfรฆlde er angivet som "TutorialSoapBinding". Binding er, enkelt sagt, den information, som klientapplikationen bruger til rent faktisk at binde sig til webtjenesten. Nรฅr den er bundet til webtjenesten, har den derefter mulighed for at kalde de forskellige operationer, der eksponeres af webtjenesten.
  2. Transportlaget er angivet som http://, hvilket betyder, at beskederne overfรธres via HTTP-protokollen.

Oprettelse af WSDL-fil

WSDL-filen oprettes, nรฅr en webservice bygges i et hvilket som helst programmeringssprog. Da WSDL-filen er ret kompliceret at generere fra bunden, er alle editorer som Visual Studio til .Net og ... Eclipse forum Java automatisk oprette WSDL-filen.

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

Ovenstรฅende WSDL-fil virker meget skrรฆmmende for enhver bruger. Vi vil dรฆkke de forskellige dele i detaljer i de efterfรธlgende vejledninger, men lad os nu tage et kort overblik over, hvad hver sektion af WSDL-filen rent faktisk gรธr.

Udgivelse af webtjenesteeksempel

Lad os nu se pรฅ et eksempel pรฅ, hvordan vi kan udgive en webtjeneste og bruge den ved hjรฆlp af Visual Studio. I dette eksempel opretter vi en webtjeneste med รฉn WebMethod. Denne metode accepterer en heltalsparameter kaldet "TutorialID". Webmetoden returnerer derefter en streng kaldet "Web Services".

Vi opretter derefter en konsolbaseret applikation, som bruger denne webtjeneste og kalder vores webmetode i overensstemmelse hermed. Lad os se pรฅ de trin, der krรฆves for at udfรธre dette eksempel.

Trin 1) Det fรธrste skridt er at oprette din webservice. De detaljerede trin for, hvordan Asp.Net Oprettelsen af โ€‹โ€‹et webprojekt og en webservice er blevet forklaret link.Fรธlg de samme trin for at oprette projektet og webtjenesten i overensstemmelse hermed. Det vigtigste er at indtaste nedenstรฅende kode i webtjenestefilen.

Udgivelse af webtjenesteeksemplet 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 opretter vi en webmetode kaldet "Guru99WebService.โ€ I denne webmetode inkluderer vi en heltalsparameter, der skal sendes, hver gang denne webmetode kaldes.
  2. Dernรฆst definerer vi en variabel kaldet "TutorialName", som vil indeholde strengvรฆrdien for "Web Services." Dette er den vรฆrdi, som vil blive returneret, nรฅr webtjenesten kaldes.

Trin 2) Nรฅr vi har defineret webtjenestefilen, er nรฆste trin at oprette et klientprojekt, der skal bruge denne webtjeneste. Lad os oprette en simpel konsolapplikation, der kalder denne webtjeneste og kalder "Guru99WebService,โ€ og vis derefter outputtet fra web-metoden i konsollogskรฆrmen. Fรธlg nedenstรฅende trin for at oprette et konsolprogram. Hรธjreklik pรฅ Visual Studio-lรธsningsfilen, og vรฆlg indstillingen Tilfรธj->Nyt projekt.

Udgivelse af webtjenesteeksempel: Tilfรธj nyt projekt

Trin 3) I dette trin,

  1. Sรธrg for fรธrst at vรฆlge Visual C# Windows mulighed. Vรฆlg derefter muligheden for at oprette en konsolapplikation.
  2. Giv dit projekt et navn, som i vores tilfรฆlde er blevet givet som "DemoApplication."

Udgivelse af webtjenesteeksemplets konsolapplikation

Nรฅr du har klikket pรฅ OK-knappen pรฅ ovenstรฅende skรฆrmbillede, vil du kunne se projektet i Solution Explorer i Visual Studio.

Udgivelse af webtjenesteeksemplet med lรธsningsudforskeren

Trin 4) I dette trin skal du indstille DemoApplication Console-applikationen som opstartsprojekt. Dette gรธres for at sikre, at denne applikation starter fรธrst, nรฅr hele Visual Studio-projektet kรธres. Denne konsolapplikation vil derefter kalde webtjenesten, som automatisk startes af Visual Studio. For at fuldfรธre dette trin skal du hรธjreklikke pรฅ DemoApplication-projektet og vรฆlge indstillingen "Angiv som opstartsprojekt".

Udgivelse af webtjenesteeksemplet, der er sat som et opstartsprojekt

Trin 5) Det nรฆste trin er at tilfรธje servicereferencen for vores โ€œGuru99Webserviceโ€ til vores konsolapplikation. Dette gรธres, sรฅ DemoApplication kan referere til webtjenesten og alle webmetoderne i webtjenesten. For at gรธre dette skal du hรธjreklikke pรฅ DemoApplication-projektfilen og vรฆlge menupunktet Tilfรธj->Tjenestereference.

Udgivelse af webtjenesteeksemplet Tilfรธj tjenestereference

Trin 6) I dette trin angiver vi de forskellige vรฆrdier, der krรฆves for at tilfรธje vores servicereference.

  1. Fรธrst skal vi vรฆlge vores "discover"-mulighed. Denne mulighed vil automatisk hente WSDL-filen til vores TutorialService-webtjeneste.
  2. Dernรฆst skal vi give vores servicereference et navn. I vores tilfรฆlde giver vi den navnet Guru99Webtjeneste.
  3. Derefter skal vi udvide TutorialService.asmx-indstillingen, sรฅ vi kan se metoden "GetTutorialService" i hรธjre side. Her er TutorialService.asmx navnet pรฅ vores Visual Studio .Net-fil, som indeholder koden til vores webservice.
  4. Vi vil sรฅ se vores webmetode, som vi havde i vores webtjeneste kendt som "GetTutorialService".

Udgivelse af webtjenestens eksempelreferencevรฆrdier

Nรฅr vi klikker pรฅ knappen "OK", vil al den nรธdvendige kode for at fรฅ adgang til denne webtjeneste blive tilfรธjet til vores DemoApplication Console-applikation, som vist nedenfor. Skรฆrmbilledet viser, at "Guru"99Webservice" blev tilfรธjet til vores konsolapplikation.

Udgivelse af webtjenesteeksemplet tilfรธjet

Trin 7) Det nรฆste trin er at tilfรธje koden til vores konsolapplikation for at fรฅ adgang til webmetoden i vores webtjeneste. ร…bn Program.cs-kodefilen, som automatisk fรธlger med konsolapplikationen, og tilfรธj nedenstรฅende kode.

Udgivelse af webtjenesteeksemplet Program.cs-kode

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 del er at vรฆlge Program.cs-filen. Dette er hovedfilen, som oprettes af Visual Studio, nรฅr en konsolapplikation oprettes. Det er denne fil, der udfรธres, nรฅr konsolapplikationen (i vores tilfรฆlde DemoApplication) udfรธres.
  2. Vi opretter derefter en variabel kaldet "client", som sรฆttes til en instans af vores servicereference, som blev oprettet i et tidligere trin. I vores tilfรฆlde er servicereferencen 'Guru99Webtjeneste.Guru99WebserviceSoapClient()'.
  3. Vi kalder derefter vores webmetode 'GetTutorialService' i TutorialService-webtjenesten. Husk, at vores GetTutorialService-metode accepterer en heltalsparameter, sรฅ vi sender blot en heltalsparameter til webmetoden.
  4. Denne sidste linje er blot for at sikre, at konsollogskรฆrmen forbliver aktiv, sรฅ vi kan se outputtet. Denne kommando venter pรฅ input fra brugeren.

Produktion

Nรฅr alle ovenstรฅende trin er fulgt, og DemoApplication er kรธrt, vises nedenstรฅende output.

Udgivelse af webtjenesteeksemplets output

Fra outputtet kan vi tydeligt se, at DemoApplicationen kalder vores webservice, og at strengen returneret af webservicen vises i vores konsollog.

Ofte Stillede Spรธrgsmรฅl

AI kan lรฆse en kompleks WSDL, forklare dens funktioner i et letforstรฅeligt sprog, generere eksempelforespรธrgsler og markere uoverensstemmelser mellem contracog implementeringen. Dette fremskynder integrationen med ukendte eller รฆldre SOAP-webtjenester.

Ja. AI-assistenter kan omdanne en WSDL-definition til klientstubs, datamodeller og eksempelkald i sprog som C#, Java eller PythonUdviklere bรธr stadig gennemgรฅ den genererede kode for korrekte navnerum og fejlhรฅndtering.

SOAP er den meddelelsesprotokol, der bรฆrer den faktiske XML-anmodning og -svar. WSDL er den beskrivelsesfil, der fortรฆller en klient, hvilke operationer en SOAP-webtjeneste tilbyder, og hvordan de skal kaldes. De bruges sammen.

Ja. WSDL er fortsat standard for SOAP-webtjenester i virksomheds-, bank- og offentlige systemer, der krรฆver formel tilladelse.tracts. Nyere REST API'er bruger typisk OpenAPI (Swagger) i stedet, men mange รฆldre integrationer er stadig afhรฆngige af WSDL.

Opsummer dette indlรฆg med: