Die Web Services Description Language ( WSDL / ˈwɪzdəl / ) ist eine XML- basierte Schnittstellenbeschreibungssprache , die zur Beschreibung der Funktionalität eines Webdienstes dient. Das Akronym WSDL wird auch für jede spezifische WSDL-Beschreibung eines Webdienstes (auch WSDL - Datei genannt ) verwendet. Diese Beschreibung ist maschinenlesbar und gibt an, wie der Dienst aufgerufen werden kann, welche Parameter er erwartet und welche Datenstrukturen er zurückgibt. Ihre Funktion ist daher vergleichbar mit einer Typsignatur in einer Programmiersprache.

Die neueste Version von WSDL, die 2007 zur W3C-Empfehlung wurde, ist WSDL 2.0. Die Bedeutung des Akronyms hat sich gegenüber Version 1.1 geändert, in der das „D“ für „Definition“ stand.

Beschreibung

Darstellung von Konzepten, die in WSDL 1.1- und WSDL 2.0-Dokumenten definiert sind

Die WSDL beschreibt Dienste als Sammlungen von Netzwerk- Endpunkten oder Ports . Die WSDL-Spezifikation stellt hierfür ein XML- Format bereit. Die abstrakten Definitionen von Ports und Nachrichten sind von ihrer konkreten Verwendung oder Instanz getrennt, wodurch die Wiederverwendung dieser Definitionen ermöglicht wird. Ein Port wird definiert, indem eine Netzwerkadresse einer wiederverwendbaren Bindung zugeordnet wird, und eine Sammlung von Ports definiert einen Dienst. Nachrichten sind abstrakte Beschreibungen der ausgetauschten Daten, und Porttypen sind abstrakte Sammlungen unterstützter Operationen. Die konkreten Protokoll- und Datenformatspezifikationen für einen bestimmten Porttyp bilden eine wiederverwendbare Bindung, wobei die Operationen und Nachrichten dann an ein konkretes Netzwerkprotokoll und Nachrichtenformat gebunden werden. Auf diese Weise beschreibt die WSDL die öffentliche Schnittstelle zum Webdienst.

WSDL wird häufig in Kombination mit SOAP und einem XML-Schema verwendet , um Webdienste über das Internet bereitzustellen . Ein Clientprogramm, das eine Verbindung zu einem Webdienst herstellt, kann die WSDL-Datei lesen, um die auf dem Server verfügbaren Operationen zu ermitteln. Alle verwendeten speziellen Datentypen sind in Form eines XML-Schemas in die WSDL-Datei eingebettet. Der Client kann dann mithilfe von SOAP eine der in der WSDL-Datei aufgeführten Operationen aufrufen, beispielsweise über XML über HTTP .

Die aktuelle Version der Spezifikation ist 2.0; Version 1.1 wurde vom W3C nicht unterstützt , Version 2.0 hingegen ist eine W3C-Empfehlung . [ 1 ] WSDL 1.2 wurde aufgrund der wesentlichen Unterschiede zu WSDL 1.1 in WSDL 2.0 umbenannt. Durch die Unterstützung aller HTTP-Anfragemethoden (nicht nur GET und POST wie in Version 1.1) bietet die WSDL-2.0-Spezifikation eine bessere Unterstützung für RESTful -Webdienste und ist deutlich einfacher zu implementieren. [ 2 ] [ 3 ] Die Unterstützung dieser Spezifikation ist jedoch in Software Development Kits für Webdienste (SDKs) weiterhin unzureichend, da diese häufig nur Tools für WSDL 1.1 anbieten. Beispielsweise unterstützt die Version 2.0 der Business Process Execution Language (BPEL) ausschließlich WSDL 1.1.

WSDL 1.1 TermWSDL 2.0 TermBeschreibung
ServiceServiceEnthält eine Reihe von Systemfunktionen, die den webbasierten Protokollen zugänglich gemacht wurden.
HafenEndpunktDefiniert die Adresse oder den Verbindungspunkt zu einem Webdienst. Sie wird typischerweise durch eine einfache HTTP- URL- Zeichenfolge dargestellt.
BindungBindungLegt die Schnittstelle fest und definiert den SOAP- Bindungsstil ( RPC /Dokument) und den Transport ( SOAP- Protokoll). Der Bindungsabschnitt definiert außerdem die Operationen.
PorttypSchnittstelleDefiniert einen Webdienst, die Operationen, die durchgeführt werden können, und die Nachrichten, die zur Durchführung der Operation verwendet werden.
BetriebBetriebDefiniert die SOAP-Aktionen und die Art der Nachrichtenkodierung, zum Beispiel „Literal“. Eine Operation ist vergleichbar mit einem Methoden- oder Funktionsaufruf in einer traditionellen Programmiersprache.
NachrichtN / AEine Nachricht entspricht typischerweise einer Operation. Sie enthält die zur Durchführung der Operation benötigten Informationen. Jede Nachricht besteht aus einem oder mehreren logischen Teilen. Jeder Teil ist mit einem Attribut zur Nachrichtentypisierung verknüpft. Das Attribut „Nachrichtenname“ vergibt einen eindeutigen Namen für alle Nachrichten. Das Attribut „Teilname“ vergibt einen eindeutigen Namen für alle Teile der übergeordneten Nachricht. Teile beschreiben den logischen Inhalt einer Nachricht. In der RPC-Bindung kann eine Bindung auf den Namen eines Teils verweisen, um bindungsspezifische Informationen über diesen Teil anzugeben. Ein Teil kann einen Parameter in der Nachricht darstellen; die Bindungen definieren die tatsächliche Bedeutung des Teils. In WSDL 2.0 wurden Nachrichten entfernt. Dort werden XML- Schema-Typen zur Definition von Eingabe-, Ausgabe- und Fehlerkörpern einfach und direkt referenziert.
TypenTypenBeschreibt die Daten. Hierfür wird die XML-Schema- Sprache (auch bekannt als XSD ) verwendet (direkt im Code oder per Verweis).

Beispiel-WSDL-Datei

<?xml version="1.0" encoding="UTF-8"?> <description xmlns= "http://www.w3.org/ns/wsdl" xmlns:tns= "http://www.tmsws.com/wsdl20sample" xmlns:whttp= "http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsoap= "http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace= "http://www.tmsws.com/wsdl20sample" ><documentation> Dies ist ein Beispiel -WSDL- 2.0- Dokument. </documentation><!-- Abstrakter Typ --> <types> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" xmlns= "http://www.tmsws.com/wsdl20sample" targetNamespace= "http://www.example.com/wsdl20sample" > <xs:element name= "request" > ... </xs:element> <xs:element name= "response" > ... </xs:element> </xs:schema> </types><!-- Abstrakte Schnittstellen --> <interface name= "Interface1" > <fault name= "Error1" element= "tns:response" /> <operation name= "Get" pattern= "http://www.w3.org/ns/wsdl/in-out" > <input messageLabel= "In" element= "tns:request" /> <output messageLabel= "Out" element= "tns:response" /> </operation> </interface><!-- Konkrete Bindung über HTTP --> <binding name= "HttpBinding" interface= "tns:Interface1" type= "http://www.w3.org/ns/wsdl/http" > <operation ref= "tns:Get" whttp:method= "GET" /> </binding> <!-- Konkrete Bindung mit SOAP --> <binding name= "SoapBinding" interface= "tns:Interface1" type= "http://www.w3.org/ns/wsdl/soap" wsoap:protocol= "http://www.w3.org/2003/05/soap/bindings/HTTP/" wsoap:mepDefault= "http://www.w3.org/2003/05/soap/mep/request-response" > <operation ref= "tns:Get" /> </binding><!-- Webdienst, der Endpunkte für beide Bindungen anbietet --> <service name= "Service1" interface= "tns:Interface1" > <endpoint name= "HttpEndpoint" binding= "tns:HttpBinding" address= "http://www.example.com/rest/" /> <endpoint name= "SoapEndpoint" binding= "tns:SoapBinding" address= "http://www.example.com/soap/" /> </service> </description>

Geschichte

WSDL 1.0 (September 2000) wurde von IBM , Microsoft und Ariba entwickelt , um Webdienste für ihr SOAP-Toolkit zu beschreiben. Es entstand durch die Kombination zweier Dienstbeschreibungssprachen: NASSL (Network Application Service Specification Language) von IBM und SDL (Service Description Language) von Microsoft.

WSDL 1.1, veröffentlicht im März 2001, ist die Formalisierung von WSDL 1.0. Zwischen 1.0 und 1.1 wurden keine wesentlichen Änderungen eingeführt.

WSDL 1.2 (Juni 2003) war ein Arbeitsentwurf des W3C, wurde aber zu WSDL 2.0 weiterentwickelt. Laut W3C ist WSDL 1.2 für Entwickler einfacher und flexibler als die Vorgängerversion. WSDL 1.2 versucht, nicht interoperable Funktionen zu entfernen und definiert die HTTP-1.1-Anbindung präziser. WSDL 1.2 wurde von den meisten SOAP-Servern/Anbietern nicht unterstützt.

WSDL 2.0 wurde im Juni 2007 zur W3C-Empfehlung. WSDL 1.2 wurde in WSDL 2.0 umbenannt, da es wesentliche Unterschiede zu WSDL 1.1 aufweist. Die Änderungen sind folgende:

  • Der Beschreibungssprache wurde weitere Semantik hinzugefügt.
  • Entfernte Nachrichtenkonstrukte
  • Überlastung des Bedieners nicht unterstützt
  • PortTypes wurden in Schnittstellen umbenannt
  • Ports wurden in Endpunkte umbenannt

WSDL-Teilmenge

Eine Subset-WSDL (SWSDL) [ 4 ] ist eine WSDL-Datei, die nur einen Teil der Operationen einer ursprünglichen WSDL-Datei enthält. Entwickler können mithilfe einer SWSDL auf einen Subset-Service zugreifen und so Teilmengen des Webdienstcodes bearbeiten. Eine Subset-WSDL eignet sich für Webdiensttests und die Top-Down-Entwicklung. Durch den Zugriff auf einen Subset-Service kann ein Webdienst in einzelne Schichten unterteilt werden. Mithilfe einer SWSDL lassen sich Subset-Services in Schichten kategorisieren. SWSDLs werden für die Analyse, das Testen und die Top-Down-Entwicklung von Webdiensten verwendet. AWSCM [ 5 ] ist ein Tool, das Subset-Operationen in einer WSDL-Datei identifizieren und daraus eine Subset-WSDL erstellen kann.

Sicherheitsüberlegungen

Da WSDL-Dateien eine XML-basierte Spezifikation zur Beschreibung eines Webdienstes darstellen, sind sie anfällig für Angriffe. [ 6 ] Um diese Schwachstelle zu minimieren, wird empfohlen, den Zugriff auf generierte WSDL-Dateien einzuschränken, geeignete Zugriffsbeschränkungen für WSDL-Definitionen festzulegen und unnötige Definitionen in Webdiensten zu vermeiden.

Siehe auch

Referenzen

  1. ^ „Web Services Definition Language (WSDL) Version 2.0 Part 1: Core Language“ . Abgerufen am 27.06.2007 .
  2. ^ "Web Services Definition Language (WSDL) Version 2.0 Part 2: Adjuncts" .
  3. ^ „WITW WSDL 2.0 HTTP Binding“ . Archiviert vom Original am 20.06.2012 . Abgerufen am 20.09.2007 .
  4. ^ Chaturvedi, Animesh (2014). Subset WSDL to Access Subset Service for Analysis . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. S. 688. doi : 10.1109/CloudCom.2014.149 . ISBN 978-1-4799-4093-6Die
  5. ^ Chaturvedi, Animesh (2014). Automated Web Service Change Management AWSCM - A Tool . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. S. 715. doi : 10.1109/CloudCom.2014.144 . ISBN 978-1-4799-4093-6Die
  6. ^ „WSDL-Offenlegung“ . Abgerufen am 31.05.2017 .