|
|
 |
Web Services Description Language (WSDL)
Status: W3C Note vom 15.03.2001
Version: 1.1
Homepage: http://www.w3.org/TR/wsdl
Verfasser: W3C
Status: W3C Working Draft vom 09.07.2002
Version: 1.2
Homepage: http://www.w3.org/TR/2002/WD-wsdl12-20020709/
Verfasser: W3C
Unter einem Web Service (auch: webbasierten Service)
versteht man eine eigenständige, selbstbeschreibende und modulare Software Applikation, die im Internet
veröffentlicht, lokalisiert und aufgerufen werden kann. Die Funktionalität eines Web Service kann
von einfachen Anwendungen bis hin zu komplexen Business Prozessen reichen. Die Beschreibung des Web
Services und seine Kommunikation erfolgt mit Hilfe von XML-Vokabularen.
Die Web Service Decription Language (WSDL)
ist ein XML-Vokabular, mit dem man Web Services, ihren
Ort und ihre Methoden beschreiben kann. Die Beschreibung des Web Services ist unabhängig
von der Implementierungssprache der Applikation und beschreibt zum einen das Interface
des Services und zum anderen die Bindung dieses Interfaces an ein konkretes Protokoll.
Somit kann ein Nutzer den Web Service aufrufen, ohne Implementierungsdetails wissen zu
müssen.
Die Methoden des Services werden durch die eingehenden (input) und
ausgehenden (output) Nachrichen charakterisiert. Die dabei benutzten
Datentypen und -strukturen werden mit Hilfe eines
XML-Schemas beschrieben, wobei
man sowohl die vordefinierten Datentypen als auch eigene Typen benutzen kann.
In WSDL trennt man die abstrakten Definitionen der Interfaces (port types) mit
den Methoden (operations) und Nachrichten (messages)
des Dienstes von ihrer konkreten Beschreibung, wodurch die abstrakten Definitionen
wiederverwendet werden können.
Eine konkrete Bindung an ein Netzwerkprotokoll erfolgt dann im ebenfalls wiederverwendbaren
binding-Element. Hier werden Informationen über die Kodierung und die
physische Präsentation der Daten festgelegt. Ein Web Service muss nicht zwingend mit
SOAP zusammenarbeiten, es werden auch andere Protokolle wie zum Beispiel HTTP GET/POST
und SMTP unterstützt.
Im service-Element werden port-Elemente zusammengefasst,
welche die Bindings mit konkreten Netzadressen in Form von URIs
verbinden (ein Service kann
über mehrere Ports erreichbar sein).
Quellenangabe:
| Beispiel eines WSDL-Dokumentes |
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/definitions"
xmlns:tns="http://example.com/stockquote/definitions"
xmlns:xsd1="http://example.com/stockquote/schemas"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- Import der selbstdefinierten Datentypen -->
<import namespace="http://example.com/stockquote/schemas"
location="http://example.com/stockquote/stockquote.xsd"/>
<!-- abstrakte Definition der Nachrichten (Request und Response)-->
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<!-- abstrakte Definition des Interfaces, welches hier aus einer Methode mit einer
eingehenden und einer ausgehenden Nachricht besteht -->
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
<!-- Bindung an das SOAP-Protokoll -->
<binding name="StockQuoteSoapBinding" type="defs: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>
<!-- Bindung des Services an einen Port (URI) -->
<service name="StockQuoteService">
<documentation>My first service</documentation>
<!-- über welche(n) Port(s) ist der Service erreichbar ? -->
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
Dieses Beispiel wurde der W3C Note zu WSDL entnommen, kommentiert und leicht modifiziert.
|
| |