WSDL-zelfstudie: Webservices Beschrijving Taal met voorbeeld

Inhoudsopgave:

Anonim

Wat is WSDL?

Web Services Description Language (WSDL) is een op XML gebaseerd bestand dat in feite de clienttoepassing vertelt wat de webservice doet. Het WSDL-bestand wordt gebruikt om in een notendop te beschrijven wat de webservice doet en geeft de klant alle informatie die nodig is om verbinding te maken met de webservice en alle functionaliteit van de webservice te gebruiken.

In deze tutorial gaan we ons concentreren op het laatste punt, het belangrijkste onderdeel van webservices, en dat is de WSDL of de beschrijvingstaal van webservices.

Het WSDL-bestand wordt gebruikt om in een notendop te beschrijven wat de webservice doet en geeft de klant alle informatie die nodig is om verbinding te maken met de webservice en alle functionaliteit van de webservice te gebruiken.

In deze tutorial leer je-

  • Structuur van een WSDL-document
  • WSDL-elementen
  • Waarom WSDL
  • WSDL-berichtdeel
  • Poorttype binding
  • WSDL-bestand maken
  • Publiceren van het webservicevoorbeeld

Structuur van een WSDL-document

Een WSDL-document wordt gebruikt om een ​​webservice te beschrijven. Deze beschrijving is vereist, zodat clienttoepassingen kunnen begrijpen wat de webservice werkelijk doet.

  • Het WSDL-bestand bevat de locatie van de webservice en
  • De methoden die worden weergegeven door de webservice.

Het WSDL-bestand zelf kan voor elke gebruiker erg complex lijken, maar het bevat alle benodigde informatie die elke clienttoepassing nodig heeft om de relevante webservice te gebruiken.

Hieronder ziet u de algemene structuur van een WSDL-bestand

  • Definitie
  • TargetNamespace
  • Gegevenstypen
  • Berichten
  • Poorttype
  • Bindingen
  • onderhoud

Een belangrijk ding om hier op te merken is dat de definitie van berichten, wat wordt doorgegeven door het SOAP-protocol, feitelijk is gedefinieerd in het WSDL-document.

Het WSDL-document vertelt een clienttoepassing in feite welke soorten SOAP-berichten worden verzonden en geaccepteerd door de webservice.

Met andere woorden, de WSDL is net als een ansichtkaart met het adres van een bepaalde locatie. Het adres bevat de gegevens van de persoon die de briefkaart heeft bezorgd. Op dezelfde manier is het WSDL-bestand dus de briefkaart met het adres van de webservice die alle functionaliteit kan leveren die de klant wil.

Hieronder ziet u een diagram van de structuur van een WSDL-bestand

Structuur van een WSDL

WSDL-elementen

Het WSDL-bestand bevat de volgende hoofdonderdelen

  1. De tag wordt gebruikt om alle complexe datatypes te definiëren, die zullen worden gebruikt in het bericht dat wordt uitgewisseld tussen de clienttoepassing en de webservice. Dit is een belangrijk aspect van de clienttoepassing, want als de webservice werkt met een complex datatype, dan moet de clienttoepassing weten hoe het complexe datatype moet worden verwerkt. Gegevenstypen zoals float, getallen en strings zijn allemaal eenvoudige gegevenstypen, maar er kunnen gestructureerde gegevenstypen zijn die door de webservice kunnen worden geleverd.

    Er kan bijvoorbeeld een gegevenstype zijn met de naam EmployeeDataType dat twee elementen kan hebben genaamd "EmployeeName" van het type string en "EmployeeID" van het typenummer of geheel getal. Samen vormen ze een datastructuur die dan een complex datatype wordt.

  2. De tag wordt gebruikt om het bericht te definiëren dat wordt uitgewisseld tussen de clienttoepassing en de webserver. Deze berichten leggen de invoer- en uitvoerbewerkingen uit die door de webservice kunnen worden uitgevoerd. Een voorbeeld van een bericht kan een bericht zijn dat de EmployeeID van een werknemer accepteert, en het outputbericht kan de naam van de werknemer zijn op basis van de verstrekte EmpoyeeID.

  3. De tag wordt gebruikt om elk invoer- en uitvoerbericht in één logische bewerking samen te vatten . Er zou dus een operatie kunnen zijn genaamd "GetEmployee" die het invoerbericht van het accepteren van de EmployeeID van een clienttoepassing combineert en vervolgens de EmployeeName als het uitvoerbericht verzendt.

  4. De tag wordt gebruikt om de bewerking aan het specifieke poorttype te binden. Dit is zodat wanneer de clienttoepassing het relevante poorttype aanroept, deze toegang heeft tot de bewerkingen die aan dit poorttype zijn gebonden. Poorttypen zijn net als interfaces. Dus als een clienttoepassing een webservice moet gebruiken, moeten ze de bindende informatie gebruiken om ervoor te zorgen dat ze verbinding kunnen maken met de interface die door die webservice wordt geboden.

  5. De tag is een naam die aan de webservice zelf wordt gegeven. In eerste instantie, wanneer een clienttoepassing de webservice aanroept, doet dit dit door de naam van de webservice aan te roepen. Een webservice kan bijvoorbeeld worden gevonden op een adres zoals http: //localhost/Guru99/Tutorial.asmx . De servicetag heeft feitelijk de URL die is gedefinieerd als http: //localhost/Guru99/Tutorial.asmx , die de clienttoepassing daadwerkelijk vertelt dat er een webservice beschikbaar is op deze locatie.

Waarom WSDL

Een webservice is een belangrijk onderdeel bij het bouwen van moderne webapplicaties. Hun belangrijkste doel is om meerdere applicaties die op verschillende programmeertalen zijn gebouwd met elkaar te laten praten. We kunnen bijvoorbeeld een .Net-webapplicatie laten praten met een Java-applicatie via een webservice.

Een webservice heeft de volgende hoofdkenmerken

  • Het is gebouwd met behulp van de XML-programmeertaal. Bijna alle moderne technologieën zoals .Net en Java hebben overeenkomstige commando's die met XML kunnen werken. Daarom werd XML als de meest geschikte taal gebruikt voor het bouwen van webservices.
  • Webservices communiceren via HTTP. HTTP is een protocol dat door alle webgebaseerde applicaties wordt gebruikt. Daarom was het logisch om ervoor te zorgen dat webservices ook via het HTTP-protocol konden werken.
  • Webservices voldoen aan een bepaalde taalspecificatie. Deze specificatie is opgesteld door de W3C, het bestuursorgaan voor alle webstandaarden.
  • Webservices hebben een beschrijvingstaal die WSDL wordt genoemd en die wordt gebruikt om de webservice te beschrijven.

Het WSDL-bestand is geschreven in gewone oude XML. De reden dat het in XML is, is dat het bestand kan worden gelezen door elke programmeertaal.

Dus als de clienttoepassing is geschreven in .Net, zou deze het XML-bestand begrijpen. Evenzo, als de clienttoepassing is geschreven in de programmeertaal Java, kan deze ook het WSDL-bestand interpreteren.

Het WSDL-bestand is wat alles samenbindt. Uit het bovenstaande diagram kunt u zien dat u een webservice in de .Net-taal kunt maken.

Dit is dus waar de service wordt geïmplementeerd. Als u het WSDL-bestand niet had en een Java-klasse wilde om de webservice te gebruiken, zou u veel coderingsinspanning nodig hebben om dit te bereiken.

Maar nu met het WSDL-bestand in XML, dat door elke programmeertaal kan worden begrepen, kunt u nu gemakkelijk een Java-klasse de .Net-webservice laten gebruiken. Daarom wordt de hoeveelheid codeerinspanning aanzienlijk verminderd.

WSDL-berichtdeel

De WSDL bestaat uit een sectie genaamd "messages" die wordt aangeduid met het -element.

Dit element wordt in feite gebruikt om de gegevens te beschrijven die worden uitgewisseld tussen de webservice en de clienttoepassing.

Elke webservice heeft altijd 2 soorten berichten,

  • De ene is voor de invoer van de webservice en de andere is voor de uitvoer van de webservice.
  • De invoer wordt gebruikt om de parameters te beschrijven die door de webservice worden geaccepteerd. Dit is een belangrijk aspect van de clienttoepassing, zodat deze de waarden kent die als parameters naar de webservice moeten worden verzonden.
  • Het andere type bericht is het uitvoerbericht dat vertelt welke resultaten door de webservice worden geleverd.

Elk bericht heeft op zijn beurt een -element dat wordt gebruikt om de parameter te beschrijven die door het invoer- en uitvoerbericht wordt gebruikt.

Hieronder ziet u een eenvoudig voorbeeld van hoe een bericht voor een webservice eruitziet. De functionaliteit van de webservice is om de naam van een "Tutorial" op te geven zodra een "Tutorial ID" als parameter naar de webservice is verzonden.

  1. Zoals we kunnen zien, heeft de webservice 2 berichten, een voor de invoer en de andere voor de uitvoer.
  2. Het invoerbericht staat bekend als TutorialNameRequest en heeft één parameter genaamd TutorialID. Deze parameter is van het typenummer dat wordt gespecificeerd door het xsd: nummertype
  3. Het uitvoerbericht staat bekend als TutorialNameResponse en heeft één parameter genaamd TutorialName. Deze parameter is van het type string dat wordt gespecificeerd door het xsd: stringtype

Poorttype binding

Poorten worden gebruikt in WSDL om één complete operatie te definiëren die wordt aangeboden door de webservice.

In het vorige onderwerp zagen we dat onze webservice 2 berichten leverde, één voor de invoer genaamd "TutorialNameRequest" en de andere voor de uitvoer genaamd "TutorialNameResponse." Samen staat het invoer- en uitvoerberichtformulier bekend als één complete bewerking.

WSDL biedt een element met de naam dat wordt gebruikt om de bewerkingen van de webservice te definiëren.

Dus in ons bovenstaande voorbeeld kunnen we het volgende opmerken:

  1. De naam van het poorttype dat de bewerking omvat, wordt gegeven als "Tutorial_PortType."
  2. De operatie zelf krijgt de naam "Tutorial". Dus onze operatie biedt in feite een TutorialName als de TutorialID wordt gegeven als een invoerparameter.
  3. Hierna volgen onze 2 berichten, een voor de input en de andere voor de output die onze operatie vormt

Naast het -element is er ook het -element dat wordt gebruikt om te bepalen hoe de berichten worden overgedragen.

  1. Het bovenstaande voorbeeld laat zien dat de binding bestaat uit een bindingnaam die in ons geval wordt gegeven als "TutorialSoapBinding". Bindend in eenvoudige bewoordingen is de informatie die de clienttoepassing gebruikt om zich daadwerkelijk aan de webservice te binden. Zodra het daadwerkelijk aan de webservice is gebonden, kan het de verschillende bewerkingen oproepen die door de webservice worden weergegeven.
  2. De transportlaag wordt gegeven als http: //, wat betekent dat de berichten worden verzonden via het HTTP-protocol.

WSDL-bestand maken

Het WSDL-bestand wordt gemaakt wanneer een webservice in een programmeertaal wordt gebouwd.

Omdat het WSDL-bestand vrij ingewikkeld is om helemaal opnieuw te worden gegenereerd, maken alle editors zoals Visual Studio for .Net en Eclipse for Java automatisch het WSDL-bestand.

Hieronder ziet u een voorbeeld van een WSDL-bestand gemaakt in Visual Studio.




TutorialService

Het bovenstaande WSDL-bestand ziet er voor elke gebruiker erg intimiderend uit, we zullen de verschillende delen in detail behandelen in de volgende tutorials, maar laten we voorlopig eens kijken wat elke sectie van het WSDL-bestand eigenlijk doet

Publiceren van het webservicevoorbeeld

Laten we nu eens kijken naar een voorbeeld van hoe we een webservice kunnen publiceren en gebruiken met Visual Studio.

In dit voorbeeld maken we een webservice met één webmethode. Deze methode accepteert een Integer-parameter met de naam "TutorialID." De webmethode retourneert vervolgens een tekenreeks met de naam 'Webservices'.

We zullen dan een consoletoepassing maken die deze webservice gebruikt en onze webmethode dienovereenkomstig aanroepen.

Laten we eens kijken naar de stappen die nodig zijn om dit voorbeeld uit te voeren.

Stap 1) De eerste stap is het maken van uw webservice. De gedetailleerde stappen van hoe het Asp.Net-webproject en een webservice worden gemaakt, worden hier uitgelegd; Volg dezelfde stappen om het project en de webservice dienovereenkomstig te maken. Het belangrijkste is om de onderstaande code in het webservices-bestand in te voeren.

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;}}}

Code Verklaring:

  1. Hier maken we een webmethode met de naam "Guru99WebService". In deze webmethode nemen we een integer-parameter op die moet worden doorgegeven wanneer deze webmethode wordt aangeroepen.
  2. Vervolgens definiëren we een variabele genaamd "TutorialName" die de stringwaarde van "Web Services" zal bevatten. Dit is de waarde die wordt geretourneerd wanneer de webservice wordt aangeroepen.

Stap 2) Nadat we het webservices-bestand hebben gedefinieerd, is de volgende stap het maken van een klantproject dat deze webservice zal gebruiken.

Laten we een eenvoudige consoletoepassing maken die deze webservice aanroept, de "Guru99WebService" aanroepen en vervolgens de uitvoer van de webmethode weergeven in het consolelogscherm. Volg de onderstaande stappen om een ​​consoletoepassing te maken.

Klik met de rechtermuisknop op het Visual Studio-oplossingsbestand en kies de optie Toevoegen-> Nieuw project

Step3) In deze stap,

  1. Zorg ervoor dat u eerst de optie Visual C # Windows kiest. Kies vervolgens de optie om een ​​consoletoepassing te maken.
  2. Geef een naam voor uw project die in ons geval is gegeven als "DemoApplication."

Nadat u in het bovenstaande scherm op de knop OK heeft geklikt, kunt u het project zien in de Oplossingsverkenner in Visual Studio.

Stap 4) In deze stap stelt u de DemoApplication Console-toepassing in als het opstartproject. Dit wordt gedaan om ervoor te zorgen dat deze applicatie als eerste wordt gestart wanneer het volledige Visual Studio-project wordt uitgevoerd. Deze consoletoepassing roept op zijn beurt de webservice op die automatisch wordt gestart door Visual Studio.

Om deze stap te voltooien, klikt u met de rechtermuisknop op het DemoApplication-project en kiest u de optie "Instellen als opstartproject".

Stap 5) De volgende stap is het toevoegen van de servicereferentie van onze "Guru99Webservice" aan onze consoletoepassing. Dit wordt gedaan zodat de DemoApplication kan verwijzen naar de webservice en alle webmethoden in de webservice.

Klik hiervoor met de rechtermuisknop op het DemoApplication-projectbestand en kies de menuoptie Toevoegen-> Servicereferentie.

Stap 6) In deze stap geven we de verschillende waarden die nodig zijn om onze servicereferentie toe te voegen

  1. Allereerst moeten we onze ontdekkingsoptie kiezen. Deze optie haalt automatisch het WSDL-bestand op voor onze TutorialService-webservice.
  2. Vervolgens moeten we een naam geven voor onze servicereferentie. In ons geval geven we het de naam Guru99Webservice.
  3. Vervolgens moeten we de optie TutorialService.asmx uitbreiden, zodat we de 'GetTutorialService'-methode aan de rechterkant kunnen zien. Hier is TutorialService.asmx de naam van ons Visual Studio .Net-bestand dat de code voor onze webservice bevat.
  4. We zullen dan onze webmethode zien die we hadden in onze webservice die bekend staat als "GetTutorialService"

Wanneer we op de knop 'OK' klikken, wordt alle vereiste code om toegang te krijgen tot deze webservice toegevoegd aan onze DemoApplication Console-applicatie, zoals hieronder weergegeven.

De schermafbeelding laat zien dat de "Guru99Webservice" met succes is toegevoegd aan onze consoletoepassing.

Stap 7) De volgende stap is om de code toe te voegen aan onze consoletoepassing om toegang te krijgen tot de webmethode in onze webservice. Open het Program.cs-codebestand dat automatisch bij de consoletoepassing wordt geleverd en voeg de onderstaande code toe

namespace DemoApplication{class Program{static void Main(string[ ] args){var client = new Guru99Webservice.Guru99WebserviceSoapClient();Console.WriteLine(client.GetTutorialService(l));Console.ReadKey();}}}

Code Verklaring: -

  1. Het eerste deel is om het bestand Program.cs te kiezen. Dit is het hoofdbestand dat wordt gemaakt door Visual Studio wanneer een consoletoepassing wordt gemaakt. Dit bestand wordt uitgevoerd wanneer de console-applicatie (in ons geval de demo-applicatie) wordt uitgevoerd.
  2. Vervolgens maken we een variabele met de naam "client" die wordt ingesteld op een instantie van onze servicereferentie die in een eerdere stap is gemaakt. In ons geval is de servicereferentie 'Guru99Webservice.Guru99WebserviveSoapClient ()'
  3. We noemen dan onze webmethode 'GetTutorialService' in de TutorialService-webservice. Onthoud dat onze GetTutorialService'-methode een integer-parameter accepteert, dus we geven alleen een integer-parameter door aan de web-methode.
  4. Deze laatste regel is alleen om ervoor te zorgen dat het logboekscherm van de console actief blijft, zodat we de uitvoer kunnen bekijken. Dit commando wacht gewoon op wat input van de gebruiker.

Uitvoer

Wanneer alle bovenstaande stappen zijn gevolgd en de DemoApplication wordt uitgevoerd, wordt de onderstaande uitvoer weergegeven.

Aan de uitvoer kunnen we duidelijk zien dat de DemoApplication onze webservice aanroept en dat de string die door de webservice wordt geretourneerd, wordt weergegeven in ons consolelogboek.

Overzicht

  • De volledige vorm van WSDL is de Web Services Description Language
  • Een WSDL-document is een document dat wordt gebruikt om een ​​webservice te beschrijven. Dit is essentieel voor elke clienttoepassing om te weten waar de webservice zich bevindt. Het stelt de clienttoepassing ook in staat de methoden te begrijpen die beschikbaar zijn in de webservice.
  • Het WSDL-bestand maakt het heel gemakkelijk voor de webservice om in één programmeertaal te worden geïmplementeerd en vanuit een andere programmeertaal te worden aangeroepen.
  • Het WSDL-document bestaat normaal gesproken uit een bericht. Voor elke webmethode zijn er 2 berichten, één voor de invoer en de andere voor de uitvoer. Samen vormen ze een operatie.
  • Web Services Description Language (staat voor WSDL) -bestanden worden normaal gesproken gemaakt in de editor die wordt gebruikt voor de bijbehorende programmeertaal.
  • We hebben gezien hoe we een webservice in Visual Studio kunnen gebruiken. Dit kan worden gedaan door een ander project te maken dat een consoletoepassing is. Door vervolgens een servicereferentie toe te voegen, hebben we toegang tot de webmethoden in onze webservice.