Vad är WSDL? Betydelse och exempel

⚡ Smart sammanfattning

WSDL (webbtjänster Description Language) är en XML-baserad fil som talar om för en klientapplikation vad en webbtjänst gör och hur den ska anropas. Den här resursen förklarar WSDL-struktur, element, meddelanden, porttyper, bindningar och ett publiceringsexempel.

  • 📄 Kärndefinition: WSDL är en XML-fil som beskriver en webbtjänsts plats, funktioner och de meddelanden den accepterar och returnerar.
  • 🏗️ Dokumentstruktur: Ett WSDL-dokument är organiserat i element som types, message, portType, binding och service, inslagna i en definitionsrot.
  • 🔤 Nyckelelement: Elementet types definierar datatyper, message definierar utbytta data, portType grupperar operationer och bindning mappar dem till ett protokoll.
  • ✉️ Meddelanden och portar: Varje webbmetod använder ett indata- och ett utdatameddelande som tillsammans bildar en operation som exponeras via en porttyp.
  • 🛠️ Automatiskt genererad: Redigerare som Visual Studio och Eclipse generera WSDL-filen automatiskt, som klientprogram använder för att anropa tjänsten.

Vad är WSDL

Vad är WSDL?

Web Services Descriptjonspråk (WSDL) är en XML-baserad fil som i princip talar om för klientapplikationen vad webbtjänsten gör. WSDL-filen används för att i ett nötskal beskriva vad webbtjänsten gör och ger kunden all information som krävs för att ansluta till webbtjänsten och använda all funktionalitet som tillhandahålls av webbtjänsten.

I den här handledningen kommer vi att fokusera på den viktigaste delen av webbtjänster, och det är WSDL, eller webbtjänsterna. Descriptionspråk. Det fungerar som en kontracmellan webbtjänsten och alla klienter som vill konsumera den.

Strukturen för ett WSDL-dokument

Ett WSDL-dokument används för att beskriva en webbtjänst. Denna beskrivning krävs så att klientapplikationer kan förstå vad webbtjänsten faktiskt gör.

  • WSDL-filen innehåller platsen för webbtjänsten, och
  • De metoder som exponeras av webbtjänsten.

Själva WSDL-filen kan se väldigt komplex ut för alla användare, men den innehåller all nödvändig information som alla klientapplikationer skulle behöva för att använda den relevanta webbtjänsten. Nedan följer den allmänna strukturen för en WSDL-fil:

  • Definition
  • Targetnamespace
  • Datatyper
  • Notiser
  • Porttyp
  • Bindningar
  • Service

En viktig sak att notera här är att definitionen av meddelanden, vilket är vad som skickas vidare av SOAP-protokoll, definieras faktiskt i WSDL-dokumentet. WSDL-dokumentet anger för en klientapplikation vilka typer av SOAP-meddelanden som skickas och accepteras av webbtjänsten.

Med andra ord är WSDL precis som ett vykort som har adressen till en viss plats. Adressen anger vart meddelandet ska levereras. På samma sätt är WSDL-filen vykortet som har adressen till webbtjänsten som kan leverera all den funktionalitet som klienten önskar.

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

Nedan visas ett diagram över strukturen för en WSDL-fil.

Strukturen för ett WSDL-dokument

Strukturen för en WSDL

WSDL-element

WSDL-filen innehåller följande huvuddelar:

  1. Ocuco-landskapet Taggen används för att definiera alla komplexa datatyper som kommer att användas i meddelandet som utväxlas mellan klientapplikationen och webbtjänsten. Detta är viktigt eftersom om webbtjänsten arbetar med en komplex datatyp, bör klientapplikationen veta hur den ska bearbetas. Datatyper som flyttal, tal och strängar är alla enkla datatyper, men det kan finnas strukturerade datatyper som tillhandahålls av webbtjänsten. Till exempel kan det finnas en datatyp som heter EmployeeDataType som kan ha två element som heter "EmployeeName" av typen sträng och "EmployeeID" av typen tal eller heltal. Tillsammans bildar de en komplex datatyp.
  2. Ocuco-landskapet Taggen används för att definiera meddelandet som utväxlas mellan klientapplikationen och webbservern. Dessa meddelanden förklarar de in- och utdataoperationer som kan utföras av webbtjänsten. Ett exempel på ett meddelande kan vara ett som accepterar en anställds anställds ID, och utdatameddelandet kan vara namnet på den anställde baserat på det angivna anställds ID.
  3. Ocuco-landskapet taggen används för att kapsla in varje in- och utmeddelande i en logisk operation. Så det kan finnas en operation som heter "GetEmployee" som kombinerar ingångsmeddelandet att acceptera EmployeeID från en klientapplikation och sedan skicka EmployeeName som utdatameddelande.
  4. Ocuco-landskapet Taggen används för att binda operationen till en viss porttyp. Detta är så att klientapplikationen, när den anropar relevant porttyp, kan komma åt de operationer som är bundna till den. Porttyper är precis som gränssnitt. Så om en klientapplikation behöver använda en webbtjänst måste de använda bindningsinformationen för att säkerställa att de kan ansluta till gränssnittet som tillhandahålls av den webbtjänsten.
  5. Ocuco-landskapet En tagg är ett namn som ges till själva webbtjänsten. När en klientapplikation inledningsvis gör ett anrop till webbtjänsten gör den det genom att anropa namnet på webbtjänsten. En webbtjänst kan till exempel finnas på en adress som http://localhost/Guru99/Handledning.asmx. Servicenumret kommer att innehålla URL definierad, vilket anger för klientapplikationen att en webbtjänst är tillgänglig på den här platsen.

Varför WSDL

En webbtjänst är en viktig komponent i att bygga moderna webbapplikationer. Deras huvudsyfte är att låta flera applikationer byggda på olika programmeringsspråk kommunicera med varandra. Till exempel kan vi låta en .Net-webbapplikation kommunicera med en Java applikation via en webbtjänst.

En webbtjänst har följande nyckelfunktioner:

  • Den är byggd med programmeringsspråket XML. Nästan alla moderna tekniker som .Net och Java har motsvarande kommandon som har förmågan att arbeta med XML. Därför togs XML som det lämpligaste språket för att bygga webbtjänster.
  • Webbtjänster kommunicerar via HTTP. HTTP är ett protokoll som används av alla webbaserade applikationer. Därför var det klokt att se till att webbtjänster också hade möjlighet att fungera via HTTP-protokollet.
  • Webbtjänster överensstämmer med en viss språkspecifikation. Denna specifikation fastställs av W3C, som är det styrande organet för alla webbstandarder.
  • Webbtjänster har ett beskrivningsspråk som kallas WSDL, som används för att beskriva webbtjänsten.

WSDL-filen är skriven i vanlig XML. Anledningen till att den är i XML är så att filen kan läsas av vilket programmeringsspråk som helst. Så om klientapplikationen skrevs i .Net, skulle den förstå XML-filen. På samma sätt, om klientapplikationen skrevs i Java programmeringsspråk, då skulle det också kunna tolka WSDL-filen.

Behov av WSDL

WSDL-filen är det som binder samman allting. Från diagrammet ovan kan du se att du kan skapa en webbtjänst i .Net-språket. Så det är här tjänsten implementeras. Om du inte hade WSDL-filen och ville ha en Java klassen för att använda webbtjänsten, skulle du behöva mycket kodningsarbete för att uppnå detta. Men nu med WSDL-filen, som är i XML och kan förstås av vilket programmeringsspråk som helst, kan du enkelt ha en Java klass konsumerar webbtjänsten .Net. Därför minskar mängden kodningsansträngning avsevärt.

WSDL-meddelandedel

WSDL består av en sektion som kallas "meddelanden" som betecknas med element. Detta element används i princip för att beskriva de data som utväxlas mellan webbtjänsten och klientapplikationen.

Varje webbtjänst kommer alltid att ha två typer av meddelanden:

  • Den ena är för inmatningen av webbtjänsten, och den andra är för utmatningen av webbtjänsten.
  • Ingången används för att beskriva de parametrar som accepteras av webbtjänsten. Detta är en viktig aspekt av klientapplikationen så att den känner till de värden som ska skickas som parametrar till webbtjänsten.
  • Den andra typen av meddelande är det utgående meddelandet som berättar vilka resultat som tillhandahålls av webbtjänsten.

Varje meddelande kommer i sin tur att ha en element som används för att beskriva parametern som används av in- och utmeddelandet.

Nedan följer ett enkelt exempel på hur ett meddelande för en webbtjänst ser ut. Webbtjänstens funktion är att ange namnet på en "handledning" när ett "handlednings-ID" skickas som en parameter till webbtjänsten.

WSDL-meddelandedel

  1. Som vi kan se har webbtjänsten två meddelanden, ett för indata och det andra för utdata.
  2. Inmatningsmeddelandet kallas TutorialNameRequest och har en parameter som heter TutorialID. Denna parameter är av typen number, vilket anges av typen xsd:number.
  3. Utdatameddelandet kallas TutorialNameResponse och har en parameter som heter TutorialName. Denna parameter är av typen sträng, vilket anges av typen xsd:string.

Bindning av porttyp

Portar används i WSDL för att definiera en komplett operation som erbjuds av webbtjänsten. I föregående avsnitt såg vi att vår webbtjänst tillhandahöll två meddelanden, ett för indata som kallas "TutorialNameRequest" och det andra för utdata som kallas "TutorialNameResponse". Tillsammans bildar indata- och utdatameddelandet det som kallas en komplett operation.

WSDL tillhandahåller ett element som kallas som används för att definiera de funktioner som tillhandahålls av webbtjänsten.

Porttyp Bindningsporttyp

Så i vårt exempel ovan kan vi notera följande:

  1. Namnet på porttypen som inkapslar operationen anges som ”Tutorial_PortType”.
  2. Själva operationen får namnet ”Handledning”. Så vår operation tillhandahåller i princip ett Handledningsnamn om HandledningsID anges som indataparameter.
  3. Nästa är våra två meddelanden, ett för indata och det andra för utdata, vilka utgör vår operation.

Utöver element, det finns också element som används för att definiera hur meddelandena ska överföras.

Porttyp Bindningsbindning

  1. Exemplet ovan visar att bindningen består av ett bindningsnamn som i vårt fall anges som "TutorialSoapBinding". Bindning är, enkelt uttryckt, den information som klientapplikationen använder för att faktiskt binda sig till webbtjänsten. När den väl är bunden till webbtjänsten har den sedan möjlighet att anropa de olika operationer som exponeras av webbtjänsten.
  2. Transportlagret anges som http:// vilket betyder att meddelandena överförs via HTTP-protokollet.

Skapar WSDL-fil

WSDL-filen skapas varje gång en webbtjänst byggs i vilket programmeringsspråk som helst. Eftersom WSDL-filen är ganska komplicerad att generera från grunden, är alla editorer som Visual Studio för .Net och Eclipse för Java skapa WSDL-filen automatiskt.

Nedan är ett exempel på en WSDL-fil skapad 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>

Ovanstående WSDL-fil ser väldigt skrämmande ut för alla användare. Vi kommer att gå igenom de olika delarna i detalj i efterföljande handledningar, men låt oss nu ta en sammanfattning av vad varje del av WSDL-filen faktiskt gör.

Publicera webbtjänstexemplet

Nu ska vi titta på ett exempel på hur vi kan publicera en webbtjänst och använda den med hjälp av Visual Studio. I det här exemplet skapar vi en webbtjänst med en WebMethod. Den här metoden accepterar en heltalsparameter som heter "TutorialID". Web-metoden returnerar sedan en sträng som heter "Web Services".

Vi skapar sedan en konsolbaserad applikation som använder denna webbtjänst och anropar vår webbmetod därefter. Låt oss titta på stegen som krävs för att utföra detta exempel.

Steg 1) Det första steget är att skapa din webbtjänst. De detaljerade stegen för hur Asp.Net webbprojekt och en webbtjänst skapas har förklarats här.Följ samma steg för att skapa projektet och webbtjänsten. Det viktigaste är att ange koden nedan i webbtjänstfilen.

Publicera webbtjänstens exempelkod för webbtjänsten

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 Förklaring:

  1. Här skapar vi en webbmetod som heter "Guru99WebService.” I den här webbmetoden inkluderar vi en heltalsparameter som måste skickas varje gång webbmetoden anropas.
  2. Därefter definierar vi en variabel som heter "TutorialName" som kommer att hålla strängvärdet för "Web Services." Detta är värdet som kommer att returneras när webbtjänsten anropas.

Steg 2) När vi har definierat webbtjänstfilen är nästa steg att skapa ett klientprojekt som kommer att använda denna webbtjänst. Låt oss skapa en enkel konsolapplikation som anropar denna webbtjänst och anropar "Guru99WebService” och visa sedan utdata från web-metoden på konsolens loggskärm. Följ stegen nedan för att skapa ett konsolprogram. Högerklicka på Visual Studio-lösningsfilen och välj alternativet Lägg till->Nytt projekt.

Publicera webbtjänstexemplet lägg till nytt projekt

Steg 3) I detta steg

  1. Se till att först välja Visual C# Windows alternativ. Välj sedan alternativet att skapa en konsolapplikation.
  2. Ge ditt projekt ett namn som i vårt fall har getts som "DemoApplication."

Publicera konsolapplikationen för exempelwebbtjänsten

När du har klickat på OK-knappen på skärmen ovan kan du se projektet i Solution Explorer i Visual Studio.

Publicera lösningsutforskaren för exempelwebbtjänsten

Steg 4) I det här steget ställer du in DemoApplication Console-applikationen som startprojekt. Detta görs för att säkerställa att den här applikationen startas först när hela Visual Studio-projektet körs. Den här konsolapplikationen anropar i sin tur webbtjänsten som automatiskt startas av Visual Studio. För att slutföra det här steget högerklickar du på DemoApplication-projektet och väljer alternativet "Ange som startprojekt".

Publicera webbtjänstexemplet som startprojekt

Steg 5) Nästa steg är att lägga till servicereferensen för vår "Guru99Webservice” till vår konsolapplikation. Detta görs så att DemoApplication kan referera till webbtjänsten och alla webbmetoder i webbtjänsten. För att göra detta, högerklicka på DemoApplication-projektfilen och välj menyalternativet Lägg till->Tjänstreferens.

Publicera webbtjänsten Exempel på lägg till tjänstreferens

Steg 6) I det här steget anger vi de olika värden som krävs för att lägga till vår servicereferens.

  1. Först måste vi välja vårt upptäckningsalternativ. Det här alternativet hämtar automatiskt WSDL-filen för vår TutorialService-webbtjänst.
  2. Nästa steg är att ge vår tjänstreferens ett namn. I vårt fall ger vi den namnet Guru99Webbtjänst.
  3. Sedan behöver vi expandera alternativet TutorialService.asmx så att vi kan se metoden "GetTutorialService" på höger sida. Här är TutorialService.asmx namnet på vår Visual Studio .Net-fil som innehåller koden för vår webbtjänst.
  4. Vi kommer då att se vår webbmetod som vi hade i vår webbtjänst som kallas ”GetTutorialService”.

Publicera referensvärden för webbtjänstens exempeltjänst

När vi klickar på knappen ”OK” läggs all kod som krävs för att komma åt den här webbtjänsten till i vår DemoApplication Console-applikation, som visas nedan. Skärmdumpen visar att ”Guru"99Webservice" har lagts till i vår konsolapplikation.

Publicering av webbtjänstens exempeltjänst tillagd

Steg 7) Nästa steg är att lägga till koden i vår konsolapplikation för att komma åt webbmetoden i vår webbtjänst. Öppna kodfilen Program.cs som levereras automatiskt med konsolapplikationen och lägg till koden nedan.

Publicera webbtjänstens exempelkod Program.cs

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

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

         Console.ReadKey();
      }
   }
}

Code Förklaring:

  1. Den första delen är att välja Program.cs-filen. Detta är huvudfilen som skapas av Visual Studio när en konsolapplikation skapas. Det är den här filen som körs när konsolapplikationen (i vårt fall DemoApplication) körs.
  2. Sedan skapar vi en variabel som heter "client" som kommer att sättas till en instans av vår Service-referens som skapades i ett tidigare steg. I vårt fall är service-referensen 'Guru99Webbtjänst.Guru99WebserviceSoapClient()'.
  3. Vi anropar sedan vår webbmetod 'GetTutorialService' i webbtjänsten TutorialService. Kom ihåg att vår GetTutorialService-metod accepterar en heltalsparameter, så vi skickar bara en heltalsparameter till webbmetoden.
  4. Den här sista raden är bara för att säkerställa att konsolens loggskärm förblir aktiv så att vi kan se utdata. Detta kommando väntar på inmatning från användaren.

Produktion

När alla ovanstående steg har följts och DemoApplication har körts visas nedanstående utdata.

Publicera exempelutdata för webbtjänsten

Från utgången kan vi tydligt se att DemoApplication anropar vår webbtjänst och att strängen som returneras av webbtjänsten visas i vår konsollogg.

Vanliga frågor

AI kan läsa en komplex WSDL, förklara dess funktioner på ett enkelt språk, generera exempelförfrågningar och flagga avvikelser mellan kontracoch implementeringen. Detta påskyndar integrationen med okända eller äldre SOAP-webbtjänster.

Ja. AI-assistenter kan omvandla en WSDL-definition till klientstubbar, datamodeller och exempelanrop i språk som C#, Java, eller PythonUtvecklare bör fortfarande granska den genererade koden för korrekta namnrymder och felhantering.

SOAP är meddelandeprotokollet som bär själva XML-förfrågan och svaret. WSDL är beskrivningsfilen som berättar för en klient vilka operationer en SOAP-webbtjänst erbjuder och hur de ska anropas. De används tillsammans.

Ja. WSDL är fortfarande standard för SOAP-webbtjänster i företags-, bank- och myndighetssystem som kräver formell behörighet.tracts. Nyare REST API:er använder vanligtvis OpenAPI (Swagger) istället, men många äldre integrationer är fortfarande beroende av WSDL.

Sammanfatta detta inlägg med: