What are WSDL messages?

Hvad er WSDL? En Komplet Guide

01/09/2003

Rating: 4.2 (7627 votes)

Web Services Description Language, bedre kendt som WSDL, er et XML-baseret grænsefladebeskrivelsessprog, der bruges til at beskrive funktionaliteten, som en webtjeneste tilbyder. Man kan tænke på en WSDL-fil som en detaljeret instruktionsmanual eller en kontrakt for en webtjeneste. Den giver en maskinlæsbar beskrivelse af, hvordan tjenesten kan kaldes, hvilke parametre den forventer, og hvilke datastrukturer den returnerer. Dens formål ligner derfor en typesignatur i et programmeringssprog, der definerer reglerne for kommunikation mellem en klientapplikation og selve webtjenesten.

How does WSDL work?
A client program connecting to a Web service can read the WSDL file to determine what operations are available on the server. Any special datatypes used are embedded in the WSDL file in the form of XML Schema. The client can then use SOAP to actually call one of the operations listed in the WSDL file, using for example XML over HTTP.

Selvom nyere teknologier som REST og OpenAPI ofte foretrækkes til nye systemer, er WSDL stadig dybt forankret i mange eksisterende virksomhedssystemer, især dem, der er bygget omkring SOAP-protokollen. At forstå WSDL er derfor stadig en værdifuld færdighed for udviklere, der arbejder med integration og vedligeholdelse af disse systemer. Denne artikel vil dykke ned i, hvordan WSDL fungerer, dets struktur, dets forhold til SOAP og dets praktiske anvendelse.

Indholdsfortegnelse

Den Grundlæggende Struktur i et WSDL-dokument

Et WSDL-dokument er skrevet i XML og indeholder en række specifikke elementer, der tilsammen beskriver en webtjeneste fuldstændigt. Disse elementer adskiller de abstrakte definitioner af operationer og meddelelser fra deres konkrete implementering, hvilket tillader genbrug af definitionerne. Lad os se nærmere på de centrale byggeklodser.

Kerneelementer i WSDL

Et validt WSDL-dokument indeholder typisk følgende hovedelementer, som hver især spiller en afgørende rolle:

  • <types>: Dette element fungerer som en container for datatypedefinitioner. Det bruger typisk XML Schema (XSD) til at definere komplekse datatyper, der bruges i meddelelserne mellem klienten og tjenesten. Hvis en webtjeneste for eksempel returnerer et 'Bog'-objekt med et ID, en titel og en forfatter, vil strukturen af dette objekt blive defineret her.
  • <message>: Definerer de data, der udveksles. Hver meddelelse er en abstrakt, typet definition af de data, der kommunikeres, og består af en eller flere dele (<part>). En operation vil typisk have en input-meddelelse (anmodningen) og en output-meddelelse (svaret).
  • <portType> (eller <interface> i WSDL 2.0): Dette er en abstrakt samling af operationer. En operation er en beskrivelse af en handling, som tjenesten understøtter, f.eks. 'GetBook' eller 'AddBook'. Den definerer, hvilke input- og output-meddelelser der er forbundet med hver handling.
  • <binding>: Dette element specificerer den konkrete protokol og dataformat for en bestemt <portType>. Det er her, den abstrakte definition bliver konkret. Bindingen angiver, om tjenesten bruger SOAP over HTTP, og definerer detaljer som meddelelsesstil (f.eks. 'document' eller 'rpc') og kodning.
  • <service>: Dette er det sidste element, der samler det hele. Det definerer en samling af relaterede endepunkter (ports). Et endpoint (eller <port> i WSDL 1.1) er defineret ved at associere en netværksadresse (en URL) med en genanvendelig binding. En klientapplikation bruger denne adresse til rent faktisk at oprette forbindelse til webtjenesten.

WSDL's Forhold til SOAP

Man ser ofte WSDL og SOAP nævnt i samme åndedrag, og det er med god grund. De to teknologier er tæt forbundne, men de tjener forskellige formål. Man kan sige, at WSDL er arkitekttegningen, mens SOAP er det sprog, bygningsarbejderne taler for at udveksle materialer og instruktioner.

SOAP (Simple Object Access Protocol) er en standard for udveksling af strukturerede meddelelser over et netværk, typisk HTTP. Den definerer en specifik XML-struktur for meddelelser, herunder en 'Envelope', der indeholder en 'Header' og en 'Body'. SOAP standardiserer også, hvordan fejlmeddelelser skal returneres.

What is WSDL XML?
WSDL is most commonly seen to describe SOAP web services. A WSDL document is written in XML and contains the following elements: Defines the data types (XML elements) that are used by the web service. Defines the messages that can be exchanged with the web service. Each contains a .

WSDL, derimod, er sproget, der *beskriver* en SOAP-baseret webtjeneste. WSDL-filen fortæller en klient præcis, hvilke operationer der er tilgængelige (f.eks. 'GetBook'), hvilke meddelelser der skal sendes for at kalde disse operationer, og hvordan disse meddelelser er struktureret. Klienten læser WSDL-filen for at forstå reglerne, og bruger derefter SOAP til at formatere og sende de faktiske anmodninger til tjenestens endpoint.

Fra WSDL 1.1 til WSDL 2.0: En Evolution

WSDL har udviklet sig over tid. Den mest udbredte version har længe været WSDL 1.1, men W3C (World Wide Web Consortium) udgav WSDL 2.0 som en officiel anbefaling i 2007. Selvom adoptionen af 2.0 har været langsom, og mange værktøjer stadig primært understøtter 1.1, er forskellene vigtige at kende.

WSDL 2.0 blev designet til at være enklere og mere fleksibel. Nogle af de væsentligste ændringer inkluderer:

  • Bedre understøttelse af RESTful-tjenester: WSDL 2.0 understøtter alle HTTP-metoder (GET, POST, PUT, DELETE osv.), hvor WSDL 1.1 primært var begrænset til GET og POST.
  • Forenklet terminologi: Nogle af de oprindelige termer blev omdøbt for at være mere intuitive. For eksempel blev <portType> til <interface>, og <port> blev til <endpoint>.
  • Fjernelse af <message>: I WSDL 2.0 blev de separate <message>-konstruktioner fjernet. I stedet refererer input- og output-elementer direkte til de XML Schema-typer, der definerer meddelelsens indhold, hvilket gør strukturen mere ligetil.

Her er en sammenligningstabel over terminologien:

WSDL 1.1 TermWSDL 2.0 TermBeskrivelse
ServiceServiceEn samling af relaterede endepunkter, der eksponerer tjenestens funktionalitet.
PortEndpointDefinerer den specifikke adresse eller forbindelsespunkt til en webtjeneste.
BindingBindingSpecificerer den konkrete protokol og dataformat for et interface.
PortTypeInterfaceEn abstrakt samling af operationer, der understøttes af tjenesten.
OperationOperationEn enkelt handling eller metode, som tjenesten kan udføre.
Message(Fjernet)En abstrakt definition af de data, der udveksles. I WSDL 2.0 defineres dette direkte via XML Schema.

Hvordan Anvendes en WSDL-fil i Praksis?

En WSDL-fil er designet til at blive forstået af maskiner. Udviklere interagerer sjældent direkte med XML-koden. I stedet bruger de værktøjer og biblioteker, der kan parse WSDL-filen og automatisk generere den nødvendige kode til at interagere med webtjenesten. Dette kaldes ofte at generere en 'klient-stub' eller 'proxy'.

Processen fungerer typisk således:

  1. En udvikler får en URL til en WSDL-fil.
  2. Udvikleren bruger et værktøj (f.eks. wsimport i Java eller Zeep-biblioteket i Python) til at pege på denne WSDL-fil.
  3. Værktøjet læser WSDL-filen, forstår alle operationer, meddelelser og datatyper og genererer klasser og metoder i det valgte programmeringssprog.
  4. Udvikleren kan nu i sin kode kalde metoder på det genererede klientobjekt, som var det en lokal funktion. Biblioteket håndterer i baggrunden oprettelsen af SOAP-anmodninger, sender dem til tjenestens endpoint og parser SOAP-svaret tilbage til et objekt.

Testværktøjer som SoapUI og Postman kan også importere en WSDL-fil direkte. De kan derefter automatisk oprette eksempel-anmodninger for hver operation, hvilket gør det nemt at teste en webtjeneste uden at skrive en eneste linje kode.

Sikkerhed og Overvejelser

Da en WSDL-fil afslører den komplette grænseflade for en webtjeneste, er det vigtigt at overveje sikkerheden. En offentligt tilgængelig WSDL-fil kan give en angriber et detaljeret kort over tjenestens funktionalitet og potentielle sårbarheder. Derfor anbefales det at begrænse adgangen til WSDL-filer og kun inkludere de nødvendige definitioner. Unødvendige operationer eller datastrukturer bør undgås for at minimere angrebsfladen.

Which WSDL descriptions are supported?
The following WSDL descriptions are supported: Each operation specified in the WSDL document is mapped to a service operation by Wsutil.exe. The tool generates separate definitions of the service operations for both the server and the client.

Ofte Stillede Spørgsmål om WSDL

Er WSDL stadig relevant i dag?

Ja, selvom det ikke er det foretrukne valg for nye projekter, er WSDL og SOAP stadig udbredt i store virksomhedssystemer, finansielle institutioner og offentlige sektorer. Mange legacy-systemer afhænger af det, så det er stadig en vigtig teknologi at kende til for systemintegration og vedligeholdelse.

Kan WSDL bruges til REST-tjenester?

WSDL 1.1 blev ikke designet til REST. WSDL 2.0 tilbyder bedre understøttelse, men det blev aldrig standarden. I dag er OpenAPI Specification (tidligere kendt som Swagger) den de facto standard til at beskrive RESTful API'er.

Hvad er forskellen på en abstrakt og en konkret definition i WSDL?

En abstrakt definition beskriver 'hvad' en tjeneste gør, uafhængigt af teknologi. Det inkluderer elementer som <types>, <message> og <portType>. En konkret definition beskriver 'hvordan' man kommunikerer med tjenesten. Det inkluderer <binding> (protokol) og <service> (adresse).

Hvad betyder 'document/literal wrapped' stilen?

Dette er en meget almindelig bindingsstil for SOAP-tjenester. 'Document' betyder, at SOAP Body indeholder et komplet XML-dokument. 'Literal' betyder, at dataene ikke er kodet, men følger det specificerede XML Schema. 'Wrapped' betyder, at anmodnings- og svarparametrene er 'indpakket' i et enkelt overordnet element, der typisk har samme navn som operationen.

Hvis du vil læse andre artikler, der ligner Hvad er WSDL? En Komplet Guide, kan du besøge kategorien Teknologi.

Go up