Vad är WSDL?
Web Services Description Language (WSDL) är en XML-baserad fil som i grunden berättar för klientapplikationen vad webbtjänsten gör. WSDL-filen används för att i korthet beskriva vad webbtjänsten gör och ger klienten all information som krävs för att ansluta till webbtjänsten och använda all funktionalitet som tillhandahålls av webbtjänsten.
I denna handledning kommer vi att fokusera på den sista punkten som är den viktigaste delen av webbtjänster, och det är WSDL eller beskrivningsspråket för webbtjänster.
WSDL-filen används för att i korthet beskriva vad webbtjänsten gör och ger klienten 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 lär du dig-
- Strukturen för ett WSDL-dokument
- WSDL-element
- Varför WSDL
- WSDL-meddelandedel
- Portbindning
- Skapa WSDL-fil
- Publicering av webbtjänstexemplet
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
- Metoderna som exponeras av webbtjänsten.
WSDL-filen i sig 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 relevant webbtjänst.
Nedan är den allmänna strukturen för en WSDL-fil
- Definition
- TargetNamespace
- Datatyper
- Meddelanden
- Porttyp
- Bindningar
- service
En viktig sak att notera här är att definitionen av meddelanden, vilket är vad som skickas av SOAP-protokollet, faktiskt definieras i WSDL-dokumentet.
WSDL-dokumentet berättar faktiskt 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 innehåller uppgifter om den person som levererade vykortet. Därför är WSDL-filen på samma sätt vykortet, som har adressen till webbtjänsten som kan leverera alla funktioner som klienten vill ha.
… … … … …
Nedan finns ett diagram över strukturen för en WSDL-fil

WSDL-element
WSDL-filen innehåller följande huvuddelar
-
Den
taggen används för att definiera alla de komplexa datatyper, som kommer att användas i meddelandet som utbyts mellan klientprogrammet och webbtjänsten. Detta är en viktig aspekt av klientapplikationen, för om webbtjänsten fungerar med en komplex datatyp bör klientapplikationen veta hur den komplexa datatypen ska behandlas. Datatyper som float, siffror och strängar är alla enkla datatyper, men det kan finnas strukturerade datatyper som kan tillhandahållas av webbtjänsten. Det kan till exempel finnas en datatyp som heter EmployeeDataType som kan ha två element som heter "EmployeeName" av typsträngen och "EmployeeID" av typnummer eller heltal. Tillsammans bildar de en datastruktur som sedan blir en komplex datatyp.
-
Den
taggen används för att definiera meddelandet som utbyts mellan klientapplikationen och webbservern. Dessa meddelanden förklarar ingångs- och utmatningsfunktionerna som kan utföras av webbtjänsten. Ett exempel på ett meddelande kan vara ett meddelande som accepterar anställdas ID för en anställd, och utgångsmeddelandet kan vara namnet på den anställde baserat på EmpoyeeID som tillhandahålls. -
Den
taggen används för att kapsla in varje ingång och utgång meddelande till en logisk operation. Så det kan finnas en operation som heter "GetEmployee" som kombinerar inmatningsmeddelandet att acceptera EmployeeID från ett klientprogram och sedan skicka EmployeeName som utdatameddelande. -
Den
taggen används för att binda operationen till den speciella porttyp. Detta är så att när klientapplikationen anropar den relevanta porttypen kommer den att kunna komma åt de operationer som är bundna till denna porttyp. Porttyper är precis som gränssnitt. Så om en klientapplikation behöver använda en webbtjänst måste de använda den bindande informationen för att säkerställa att de kan ansluta till gränssnittet som tillhandahålls av den webbtjänsten. -
Den
taggen är ett namn som webbtjänsten själv. Inledningsvis, när ett klientprogram ringer till webbtjänsten, kommer det att göras genom att ringa namnet på webbtjänsten. Till exempel kan en webbtjänst lokaliseras på en adress som http: //localhost/Guru99/Tutorial.asmx . Servicetaggen kommer faktiskt att ha URL: n definierad som http: //localhost/Guru99/Tutorial.asmx , som faktiskt berättar för klientapplikationen att det finns en webbtjänst tillgänglig på den här platsen.
Varför WSDL
En webbtjänst är en viktig komponent för att bygga moderna webbapplikationer. Deras huvudsyfte är att låta flera applikationer byggda på olika programmeringsspråk prata med varandra. Till exempel kan vi ha ett .Net-webbapplikationssamtal med en Java-applikation via en webbtjänst.
En webbtjänst har följande nyckelfunktioner
- Den är byggd med hjälp av XML-programmeringsspråket. Nästan all modern teknik som .Net och Java har motsvarande kommandon som har förmågan att arbeta med XML. Därför togs XML som det mest lämpliga 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 bara meningsfullt att se till att webbtjänster också hade förmågan att arbeta över HTTP-protokollet.
- Webbtjänster överensstämmer med en viss språkspecifikation. Denna specifikation ställs in av W3C, som är det styrande organet för alla webbstandarder.
- Webbtjänster har ett beskrivningsspråk som kallas WSDL, vilket används för att beskriva webbtjänsten.
WSDL-filen är skriven i vanlig gammal XML. Anledningen till att det finns 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 på Java-programmeringsspråket, skulle den också kunna tolka WSDL-filen.
WSDL-filen är det som binder allt ihop. Från ovanstående diagram kan du se att du kan skapa en webbtjänst på .Net-språket.
Så det är här tjänsten implementeras. Om du inte hade WSDL-filen och ville ha en Java-klass för att konsumera webbtjänsten, skulle du behöva mycket kodning för att uppnå detta.
Men nu med WSDL-filen som finns i XML, som kan förstås av vilket programmeringsspråk som helst, kan du nu enkelt få en Java-klass att konsumera .Net-webbtjänsten. Därför minskas mängden kodningsansträngning kraftigt.
WSDL-meddelandedel
WSDL består av ett avsnitt som kallas "meddelanden" som betecknas med elementet
Detta element används i princip för att beskriva data som utbyts mellan webbtjänsten och klientapplikationen.
Varje webbtjänst har alltid två typer av meddelanden,
- Den ena är för inmatningen av webbtjänsten och den andra är för utgången från 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 vet vilka 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 ett
Nedan följer ett enkelt exempel på hur ett meddelande till en webbtjänst ser ut. Webbtjänstens funktionalitet är att ange namnet på en "Självstudie" när ett "Självstudie-ID" skickas som en parameter till webbtjänsten.
- Som vi kan se har webbtjänsten två meddelanden, ett för ingången och det andra för utdata.
- Inmatningsmeddelandet kallas TutorialNameRequest som har en parameter som heter TutorialID. Denna parameter är av det typnummer som anges av xsd: number-typen
- Utgångsmeddelandet är känt som TutorialNameResponse som har en parameter som heter TutorialName. Den här parametern är av den typsträng som anges av xsd: strängtypen
Portbindning
Portar används i WSDL för att definiera en fullständig operation som erbjuds av webbtjänsten.
I föregående ämne såg vi att vår webbtjänst tillhandahöll två meddelanden, ett för ingången som heter "TutorialNameRequest" och det andra för utdata som heter "TutorialNameResponse." Tillsammans är ingångs- och utmatningsmeddelandeformuläret känt som en komplett operation.
WSDL tillhandahåller ett element som heter
Så i vårt exempel ovan kan vi notera följande:
- Namnet på porttypen som inkapslar operationen ges som "Tutorial_PortType."
- Själva operationen får namnet "Tutorial". Så vår operation ger i princip ett TutorialName om TutorialID ges som inmatningsparameter.
- Nästa är våra två meddelanden, en för ingången och den andra för den utgång som bildar vår operation
Förutom elementet
- Ovanstående exempel visar att bindningen består av ett bindande namn som i vårt fall ges som "TutorialSoapBinding". Bindande i enkla termer är 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 förmågan att ringa de olika operationerna som exponeras av webbtjänsten.
- Transportlagret ges som http: // vilket betyder att meddelandena som överförs via HTTP-protokollet.
Skapa WSDL-fil
WSDL-filen skapas när en webbtjänst byggs på något programmeringsspråk.
Eftersom WSDL-filen är ganska komplicerad för att genereras helt enkelt, skapar alla redaktörer som Visual Studio för .Net och Eclipse för Java automatiskt WSDL-filen.
Nedan följer ett exempel på en WSDL-fil som skapats i Visual Studio.
TutorialService
Ovanstående WSDL-fil ser väldigt skrämmande ut för alla användare, vi kommer att täcka de olika delarna i detalj i de efterföljande handledningarna, men låt oss nu sammanfatta vad varje avsnitt i WSDL-filen egentligen
Publicering av webbtjänstexemplet
Låt oss nu titta på ett exempel på hur vi kan publicera en webbtjänst och konsumera den med Visual Studio.
I det här exemplet skapar vi en webbtjänst med en WebMethod. Denna metod accepterar en heltalsparameter som kallas "TutorialID". Webbmetoden returnerar sedan en sträng som heter "Web Services".
Vi skapar sedan en konsolbaserad applikation som kommer att konsumera denna webbtjänst och ringa vår webbmetod i enlighet därmed.
Låt oss titta på de steg som krävs för att genomföra detta exempel.
Steg 1) Det första steget är att skapa din webbtjänst. De detaljerade stegen för hur Asp.Net-webbprojektet och en webbtjänst skapas har förklarats här; Följ samma steg för att skapa projektet och webbtjänsten i enlighet med detta. Nyckeldelen är att ange koden nedan i webbtjänstfilen.
namespace webservic asmx{[WebService(Name = "Guru99 Web service")]public class TutorialService : System.Web.Services.WebService{[WebMethod]public string GetTutorialService(int TutoriallD){string TutorialName = "Web Services";return TutorialName;}}}
Kodförklaring:
- Här skapar vi en webbmetod som heter "Guru99WebService." I den här webbmetoden inkluderar vi en heltalsparameter som måste skickas när denna webbmetod anropas.
- Därefter definierar vi en variabel som heter "TutorialName" som kommer att innehålla strängvärdet för "Web Services." Detta är det värde som 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 konsumera denna webbtjänst.
Låt oss skapa en enkel konsolapplikation som kallar denna webbtjänst, anropar "Guru99WebService" och visar sedan utgången från webmetoden på konsolloggskärmen. Följ stegen nedan för att skapa en konsolapplikation.
Högerklicka på Visual Studio-lösningsfilen och välj alternativet Lägg till-> Nytt projekt
Steg 3) I det här steget,
- Se till att först välja alternativet Visual C # Windows. Välj sedan alternativet att skapa en konsolapplikation.
- Ge ett namn för ditt projekt som i vårt fall har fått "DemoApplication."
När du har klickat på OK på skärmen ovan kommer du att kunna se projektet i Solution Explorer i Visual Studio.
Steg 4) I det här steget ställer du in DemoApplication Console-programmet som startprojekt. Detta görs för att säkerställa att denna applikation startar först när hela Visual Studio-projektet körs. Denna konsolapplikation kommer i sin tur att ringa upp webbtjänsten som automatiskt startas av Visual Studio.
För att slutföra detta steg, högerklicka på DemoApplication-projektet och välj alternativet "Ange som StartUp-projekt."
Steg 5) Nästa steg är att lägga till tjänstreferensen för vår "Guru99Webservice" i 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ögerklickar du på projektfilen DemoApplication och väljer menyalternativet Lägg till> Tjänstereferens.
Steg 6) I det här steget tillhandahåller vi de olika värden som krävs för att lägga till vår servicereferens
- För det första måste vi välja vårt upptäcktsalternativ. Detta alternativ hämtar automatiskt WSDL-filen för vår TutorialService-webbtjänst.
- Därefter ska vi ge ett namn för vår servicereferens. I vårt fall ger vi det namnet Guru99Webservice.
- Då måste vi utöka alternativet TutorialService.asmx så att vi kan ha möjligheten att 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.
- Vi kommer då att se vår webbmetod som vi hade i vår webbtjänst som kallas "GetTutorialService"
När vi klickar på "OK" -knappen läggs all nödvändig kod för att få åtkomst till denna webbtjänst till vår DemoApplication Console-applikation som visas nedan.
Skärmdumpen visar att "Guru99Webservice" har lagts till i vår konsolapplikation.
Steg 7) Nästa steg är att lägga till koden i vår konsolapplikation för att komma åt webmetoden i vår webbtjänst. Öppna Program.cs-kodfilen som kommer automatiskt med konsolprogrammet och lägg till koden nedan
namespace DemoApplication{class Program{static void Main(string[ ] args){var client = new Guru99Webservice.Guru99WebserviceSoapClient();Console.WriteLine(client.GetTutorialService(l));Console.ReadKey();}}}
Kodförklaring: -
- Den första delen är att välja Program.cs-filen. Detta är huvudfilen som skapas av Visual Studio när ett konsolprogram skapas. Den här filen är vad som körs när konsolprogrammet (i vårt fall demo-applikation) körs.
- Vi skapar sedan en variabel som kallas "klient" som kommer att ställas in till en instans av vår service-referens som skapades i ett tidigare steg. I vårt fall är tjänstreferensen 'Guru99Webservice.Guru99WebserviveSoapClient ()'
- Vi kallar då vår webbmetod 'GetTutorialService' i TutorialService-webbtjänsten Kom ihåg att vår GetTutorialService-metod accepterar en heltalsparameter, så vi skickar bara en helparameter till webbmetoden.
- Den här sista raden är bara för att säkerställa att konsolloggskärmen förblir aktiv så att vi kan se utdata. Detta kommando väntar bara på några inmatningar från användaren.
Produktion
När alla ovanstående steg följs och DemoApplication körs visas nedanstående utdata.
Från utdata 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.
Sammanfattning
- Fullständig form av WSDL är webbtjänstens beskrivningsspråk
- Ett WSDL-dokument är ett dokument som används för att beskriva en webbtjänst. Detta är nyckeln för alla klientapplikationer för att veta var webbtjänsten finns. Det gör det också möjligt för klientapplikationen att förstå de metoder som finns tillgängliga i webbtjänsten.
- WSDL-filen gör det mycket enkelt för webbtjänsten att implementeras på ett programmeringsspråk och ringas från ett annat programmeringsspråk.
- WSDL-dokumentet består normalt av ett meddelande. För varje webbmetod finns två meddelanden, det ena är för inmatningen och det andra för utmatningen. Tillsammans bildar de en operation.
- Web Services Description Language (står för WSDL) -filer skapas normalt i redigeraren som används för motsvarande programmeringsspråk.
- Vi har sett hur vi kan konsumera en webbtjänst i Visual Studio. Detta kan göras genom att skapa ett annat projekt som är en konsolapplikation. Sedan genom att lägga till en tjänstreferens kan vi sedan komma åt webbmetoderna i vår webbtjänst.