- Web Services Description Language
-
Web Services Description Language Dateiendung: .wsdl
MIME-Type: application/wsdl+xml
Entwickelt von: World Wide Web Consortium Container für: XML Standard(s): W3C WSDL 1.1
W3C WSDL 2.0Die Web Services Description Language (WSDL) ist eine plattform-, programmiersprachen- und protokollunabhängige Beschreibungssprache für Netzwerkdienste (Webservices) zum Austausch von Nachrichten auf Basis von XML.
Inhaltsverzeichnis
Inhalte
WSDL ist eine Metasprache, mit deren Hilfe die angebotenen Funktionen, Daten, Datentypen und Austauschprotokolle eines Webservice beschrieben werden können. Es werden im Wesentlichen die Operationen definiert, die von außen zugänglich sind, sowie die Parameter und Rückgabewerte dieser Operationen. Im Einzelnen beinhaltet ein WSDL-Dokument funktionelle Angaben zu:
- der Schnittstelle
- Zugangsprotokoll und Details zum Deployment
- Alle notwendigen Informationen zum Zugriff auf den Service, in maschinenlesbarem Format
Nicht enthalten sind hingegen:
- Quality-of-Service-Informationen
- Taxonomien/Ontologien zur semantischen Einordnung des Services
Beschreibungselemente
Services werden durch sechs XML-Hauptelemente definiert:
- types (Datentypen)
- Definition der Datentypen, die zum Austausch der messages benutzt werden
- message (Nachricht)
- Abstrakte Definitionen der übertragenen Daten, bestehend aus mehreren logischen Teilen, von denen jeder mit einer Definition innerhalb eines Datentypsystems verknüpft ist.
- portType (Schnittstellentypen)
- Eine Menge von abstrakten Operationen (vier Typen von ausgetauschten Nachrichten):
- One-way: Der Service bekommt eine Input-Message vom Client.
- Request-response: Der Service bekommt einen Request (Input-Message) vom Client und sendet eine Antwort (Output-Message).
- Solicit-response: Der Service sendet eine Message und erwartet eine Antwort vom Client.
- Notification: Der Service sendet eine Output-Message.
- In WSDL 2.0 wurde die Bezeichnung zu Interface geändert.
- binding (Bindung)
- Bestimmt das konkrete Protokoll und Datenformat für die Arbeitsschritte und Nachrichten, die durch einen bestimmten Port-Typ gegeben sind.
- port (Port)
- Spezifiziert eine Adresse für eine Bindung, also eine Kommunikationsschnittstelle, üblicherweise ein URI. In WSDL 2.0 wurde die Bezeichnung zu Endpoint geändert.
- service (Service)
- Fasst eine Menge von verwandten Ports zusammen.
Zudem werden diese sechs Hauptelemente in die Gruppe der abstrakten und konkreten Definitionen eingeteilt.
Abstrakte Definitionen:
- Types
- Messages
- PortTypes (ab WSDL 2.0: Interfaces)
Konkrete Definitionen:
- Bindings
- Ports (ab WSDL 2.0: Endpoints)
- Services
Die Definition von konkreten Inhalten unterscheidet WSDL von den bestehenden Schnittstellenbeschreibungssprachen wie IDL. Diese hatten die Schnittstellen bisher nur abstrakt beschrieben.
Anwendung
WSDL wird häufig in Kombination mit SOAP und dem XML-Schema verwendet, um Webservices im Internet anzubieten. Ein Client, der einen Webservice aufruft, kann WSDL lesen, um zu bestimmen, welche Funktionen auf dem Server verfügbar sind. Alle verwendeten speziellen Datentypen sind in der WSDL-Datei in XML-Form eingebunden. Der Quellcode, der zum Zusammensetzen der gesendeten Objekte auf der Client-Seite notwendig ist, kann automatisiert aus der WSDL-Datei generiert werden. Der Client kann nun SOAP verwenden, um eine in WSDL gelistete Funktion letztlich aufzurufen.
Anwendungsbeispiel
Anhand eines Beispiels soll verdeutlicht werden, wie die einzelnen Abschnitte eines WSDL-Dokuments miteinander verknüpft sind. In diesem Beispiel wird ein Service implementiert, der nach Erhalt eines Aktiennamens den aktuellen Handelswert dieser Aktie zurückgibt.
<definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2001/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions>
Erläuterung
Durch das Element <operation> innerhalb <portType> wird eine Funktion "GetLastTradePrice" definiert, die einen Input bekommt und einen Output zurückgibt. Der Input ist der Name der Aktie, der Output damit der Wert der Aktie. Die Reihenfolge der <input>- und <output>-Elemente legt fest, dass diese Operation eine Request-Response-Operation werden soll. Ändert man die Reihenfolge (z.B. Zuerst <output> dann <input>) oder lässt man eines der beiden Elemente ganz weg, dann ändert sich auch das "Message Exchange Pattern (MEP)" . Dies ermöglicht z.B. auch Operationen zu definieren, die nur einen Request abgeben und nicht auf eine Response warten.
Als Programmierer muss man noch festlegen, welche Parameter die Eingabe und die Ausgabe erwarten. Dies geschieht durch das <message>-Element. In unserem Beispiel wird bei der Operation "GetLastTradePrice" im <input>-Tag auf die Message "GetLastTradePriceInput" verwiesen.
Im <message>-Element werden einzelne Parameter zu einer Gruppe zusammengefasst, so dass diese für mehrere Operationen zur Verfügung stehen. In unserem Beispiel hat das Message-Element "GetLastTradePriceInput" nur einen Parameter <part>, der vom Typ "TradePriceRequest" ist. Die Operation "GetLastTradePrice" braucht deshalb nur einen Parameter. Wäre innerhalb von Message "GetLastTradePriceInput" z.B. ein weiterer Parameter für Börse definiert, würde unsere Operation dementsprechend 2 Parameter benötigen. Wie bei einer Funktion kann man auch den Eintrag dieser Parameter mit use="required" erzwingen oder mit use="optional" optional handhaben.
Nun müssen die Typen (String, Integer, eigener Typ) für die Parameter definiert werden. Die Typen werden gesondert innerhalb der <types>..</types>-Tags definiert. Dabei können gemäß XSD komplexe und einfache Datentypen definiert werden. "TradePriceRequest" ist hier ein komplexer Datentyp, der einen String erwartet. Vermutlich hat man hier aus Erweiterungsaspekten einen komplexen Typ definiert, obwohl auch ein einfacher Datentyp String genügt hätte.
Zwischen <binding>..</binding> wird das Nachrichtenformat und das Protokoll definiert. Das Protokoll wird im Attribut "transport" festgelegt, was in unserem Beispiel HTTP ist. Außerdem kann noch festgelegt werden, ob die Nachricht im "rpc style" oder "document style" verschickt werden soll und wie die Eingabe und Ausgabe zu kodieren ist. Beim "document style" werden nur Daten an den zuständigen Service gesendet, während beim "rpc style" eine bestimmte Methode samt ihrer Parameter gesendet wird, die am Endpunkt aufgerufen werden soll.
Im Element <service> wird ein Endpunkt "(Port)" mittels eines bindings an unsere Operationen gebunden und die Adresse festgelegt, mit der man diesen port erreichen kann.
Entwicklungsstand
Am 15. März 2001 veröffentlichte das World Wide Web Consortium die Web Service Description Language (WSDL) Note Version 1.1. Seit dem 6. Januar 2006 ist die Version 2 in einem Draft-Dokument für die Sprachdefinition (core language) und die Nachrichten-Muster (message patterns) auf der Seite des W3C verfügbar. Am 26. Juni 2007 wurde die Version 2.0 veröffentlicht.
Erweiterungen und Abgrenzung zu anderen Entwicklungen
WSDL spezifiziert lediglich die syntaktischen Elemente eines Webservices, d. h. die Art und Weise, wie ein Client auf den entsprechenden Webservice zugreifen kann. Darüber hinausgehende semantische Spezifikationen eines Webservices sind allerdings oft wünschenswert; Informationen über die Antwortzeit, Kosten eines Services, Sicherheitsbestimmungen sowie genauere Spezifikationen der Effekte einer Operation werden insbesondere zur automatischen Auffindung (Discovery) und Orchestrierung von Diensten benötigt. Zur Beschreibung dieser Parameter gibt es zum einen Erweiterungen von WSDL wie WSDL-S oder WSLA, zum anderen Entwicklungen wie OWL-S oder WSMO, die Ontologien zur semantischen Beschreibung von Webservices definieren. Diese Ontologien sind wesentlich mächtiger bei der Beschreibung von Webservices, bringen aber eine dementsprechende Komplexität mit sich. In der OGSA (Open Grid Services Architecture), einer Standardbeschreibung für Grid-Services, ist mit GWSDL (Grid-extended WSDL) eine Erweiterung definiert, die es gestattet, formalisierte Service-Status (also Status von Service-Instanzen) zu der Interfacedefinition hinzuzufügen.
Siehe auch
- WS-* - Sammlung von Standards, die SOAP/WSDL modular erweitern
- Business Process Execution Language (WS-BPEL) - XML-basierte Sprache zur Beschreibung von Geschäftsprozessen
- Business Process Modeling Language - XML-basierte plattformunabhängige Metasprache zur Beschreibung von Geschäftsprozessmodellen
- semantisches Web - Erweiterung des World Wide Web (WWW) um maschinenlesbare Daten
- Universal Description, Discovery and Integration (UDDI) - standardisierten Verzeichnisdienst im Umfeld von dynamischen Webservices
- Web Application Description Language (WADL) - eine einfache Alternative zu WSDL für XML/HTTP-Anwendungen
Weblinks
- W3C Beschreibung zu WSDL
- W3C Beschreibung zu WSDL 2.0
- WSDL Tutorial
- WSDL Lesen für Einsteiger Eine Einführung
- bitworld.de – WSDL
- Erklärung der wsdl-Syntax
Standards des World Wide Web ConsortiumsEmpfehlungen (Recommendations): ATAG | Canonical XML | CSS | CharMod | CC/PP | DDR Simple API | DOM | EXI | Element Traversal | EMMA | GRDDL | HTML | ITS | MathML | OWL | P3P | PICS | PLS | PNG | POWDER | RDF | RDF-Schema | Ruby | SISR | SKOS | SML | SMIL | SOAP | SOAP MTOM | SPARQL | SRGS | SSML | SVG | SSML | UAAG | VoiceXML | WCAG | Webarch | WebCGM | WSDL | WS-Adressing | WS-Policy | XHTML | XML | XInclude | XKMS | XLink | XML Base | XMLEnc-Decrypt | XML Events | XML Information Set | XML Namespace | XML Schema | XML Signature | XOP | XForms | XPath | XPointer | XProc | XQuery | XSL | XSLT
Arbeitsentwürfe (Working Drafts) und Kandidaten (Candidate Recommendations): Capture API | CCXML | CDF | Clipboard API | Contacts API | Cross-Origin Resource Sharing | CURIE | EARL | File API | HTML5 | HTML Canvas | HTML Microdata | Indexed Database API | InkML | LTLI | RIF | Selectors API | System Information API | WAI-ARIA | Web IDL | Web Sockets API | Web SQL Database | WICD | Widgets | XFrames | XBL
Wikimedia Foundation.
Schlagen Sie auch in anderen Wörterbüchern nach:
Web Services Description Language — Infobox file format name = Web Services Description Language icon = logo = extension = .wsdl mime = application/wsdl+xml type code = uniform type = magic = owner = [http://www.w3.org/ World Wide Web Consortium] genre = contained by = XML… … Wikipedia
Web Services Description Language — WSDL (англ. Web Services Description Language) язык описания веб сервисов, основанный на языке WSDL Version 2.0 от 27 марта 2006 года), которая имеет статус кандидата рекомендации и версия 1.1 (WSDL Version 1.1 от 15 марта 2001 года), которая… … Википедия
Web Services Description Language — Une représentation des concepts définis par un document WSDL 1.1 Il s agit d une tentative de normalisation regroupant la description des éléments permettant de mettre en place l accès à un service réseau (Service Web). Il fait notamment… … Wikipédia en Français
Web Service Description Language — Vorlage:Infobox Dateiformat/Wartung/magic fehltVorlage:Infobox Dateiformat/Wartung/genre fehltVorlage:Infobox Dateiformat/Wartung/website fehlt Web Services Description Language … Deutsch Wikipedia
Web Application Description Language — The Web Application Description Language (WADL) is an XML based file format that provides a machine readable description of HTTP based web applications. These applications are typically REST web services.The purpose of WADL is to allow services… … Wikipedia
Web Services Endpoint Language — (WSEL) was an XML format proposed by IBM for the description of non operational characteristics of service endpoints, such as quality of service, cost, or security properties. It never gained wide acceptance … Wikipedia
Web Services Flow Language — Le Web Services Flow Language est un langage inventé par IBM. Ce langage s attaque à un problème clé des services Web : la description de l enchaînement des traitements sur de multitudes d applications réparties. Une fois qu un businnes… … Wikipédia en Français
Web Services Modeling Language — WSML or Web Service Modeling Language is a formal language that provides a syntax and semantics for the Web Service Modeling Ontology (WSMO).In other words, the WSML provides means to formally describe the WSMO elements as Ontologies, Semantic… … Wikipedia
IBM Web Services Flow Language — Web Services Flow Language (WSFL) is an XML language proposed by IBM to describe the composition of Web services. WSFL has been superseded by BPEL. See also * List of Web service markup languagesAnd also homework External links *… … Wikipedia
Web Services Discovery — Web services provide access to software systems over the Internet using standard protocols. In a minimalistic scenario there exists at least a Web service provider that publishes some service such as a weather service and a Web service consumer… … Wikipedia