Web-ServicesWSDL



WSDL stellt eine Spezifikation zur Beschreibung von XML basierten Diensten dar. WSDL beschreibt die Kommunikation zwischen Services in strukturierter Form. Dabei werden unter Verwendung von XML die Netzwerk-Services als Sammlung von Kommunikations-Endpunkten beschrieben, welche in der Lage sind, untereinander Nachrichten auszutauschen. WSDL Service Definitionen enthalten die Dokumentation für verteilte Systeme und dienen als Anleitung, um den Zugriff für die involvierten Systeme zu automatisieren.

Ein WSDL Dokument definiert Services als eine Sammlung von Netzwerkendpunkten oder Ports, wobei hier Ports als URLs verstanden werden. Ein Port definiert den Standort eines Services. Ein Service kann an mehreren Standorten existieren, aber er kann nur auf eine Reihe wohldefinierter Nachrichten antworten. Die Nachrichten beschreiben die Daten, welche übermittelt werden. Jede Nachricht enthält Daten, welche durch Typdefinitionen definiert wurden und sowohl dem Sender als auch dem Empfänger bekannt sind. Die Definition der Daten erfolgt mit XSD. Die Kombination von Port und Nachricht repräsentiert die Sammlung von Operationen und definiert den Porttyp. Ein Port wird durch die Verbindung einer Netzwerkadresse mit einem Binding definiert. Eine Sammlung von Ports definiert einen Service. WSDL enthält folgende Elemente, welche zusammen Endpunkte eines Web Services beschreiben:


  WDSL Elemente 

 

 

Beispiel 

Im folgenden wird die Struktur eines WSDL-Dokumentes im Detail beschrieben. Es handelt sich dabei um das Beispiel einer Kleiderfabrik, welche ihren Kunden die Bestellung durch einen Web Service ermöglicht.


  Struktur eines WSDL-Dokument 

Alles, was in einem WSDL-Dokument enthalten ist, wird vom <Definitions>-Element umklammert.

Die Definition der im Web Service verwendeten Datentypen wird im <Types>-Element festgelegt. Diese kann nun entweder innerhalb des Elements erfolgen oder es kann auf externe XML Schema verwiesen werden.

Im Beispiel werden mehrere verschiedene Elemente definiert, darunter befindet sich ein komplexer Datentyp „clothingType“, welcher eine Auswahl von mehreren Einträgen („jeans", „tshirts", „sweatshirts", „hats") zulässt. Die in der Auswahl enthaltenen Daten entsprechen allesamt dem Datentyp String, auf welchen im externen XML Schema mittels XSD verwiesen wird.


  Struktur eines WSDL-Dokument 

Das <Message>-Element kann ein oder mehrere <Part>-Elemente enthalten. Diese können entweder als Typ oder als Element definiert werden. Der Datentyp „ClothingType" wurde hier als Typ deklariert, was von komplexen Datentypen erwartet wird.

Der Namensraum „tns" steht für „this namespace". Mit dieser Deklaration wird festgehalten, dass ein Element im vorliegenden Dokument definiert wurde und nicht ausserhalb.

Die in den Namen der Nachrichten enthaltenen Bezeichnungen „Input" respektive „Output" sind rein informativ. Die Nachricht „OrderInput" enthält die zwei Teile „jeans" und „quantity", welche als Elemente definiert sind. Die Namen dieser Elemente haben aber keine weitere Bedeutung, sie werden nirgends weiterverwendet. Jedoch darf der Name eines Elementes nicht zweimal in derselben Nachricht verwendet werden. Die zweite Nachricht enthält die Ausgabeparameter „status" und „shipDate". Diese sind ebenfalls als Elemente definiert.


  Struktur eines WSDL-Dokument 

Im <Operation>-Element wird definiert, ob eine Nachricht zur Eingabe oder Ausgabe dient.


  Struktur eines WSDL-Dokument 

Das <PortType>-Element schliesst ein oder mehrere <Operation>-Elemente ein. Es enthält alle abstrakten Informationen und ist verbunden mit den konkreten Informationen des Protokolls und Datenformats.


  Struktur eines WSDL-Dokument 

Binding ist der notwendige Schritt, um ein Transport Protokoll und ein Datenformat mit Nachrichten, Operationen und Porttypen zu verbinden. Binding setzt also die abstrakte Definition in eine konkrete um. Im Beispiel wird HTTP als Transport Protokoll und SOAP als Datenformat festgelegt.

Um ein <Binding>-Element zu definieren, muss vorerst der Name festgelegt werden; er wird später weiterverwendet. Im Weiteren muss der Name des Porttyps angegeben werden, mit welchem das Binding assoziiert wird. Das <SOAP:Binding>-Element erlaubt die Spezifikation des Transport Protokolls, welches verwendet werden muss. Das <Operation>-Element wird hier nochmals verwendet, es nimmt Bezug auf das zuvor definierte Element. Das <SOAP:Operation>-Element wird verwendet, um den Wert des "SOAP Action"-Feldes zu definieren. Im Input-Teil wird festgelegt, dass als Datenformat SOAP verwendet wird, dies findet ebenfalls im Output-Teil statt.


  Struktur eines WSDL-Dokument 

Nun muss noch angegeben werden, wo der Web Service aufgerufen werden kann. Dies geschieht mit dem <Port>-Element. Der Name des <Binding>-Elements wird im Attribut deklariert. Die Erweiterung "soap:adress" erlaubt die Spezifikation der Adresse des Services.


  Struktur eines WSDL-Dokument 

Zuletzt wird das <Port>-Element ins <Service>-Element eingebunden. Dieses kann mehrere <Port>-Elemente enthalten.


  Struktur eines WSDL-Dokument 

Entwicklungswerkzeuge, welche WSDL aktiv unterstützen, erlauben nicht nur die Erstellung von WSDL Definitionen für einen bestimmten Web Service, sie ermöglichen auch einfache die Einbindung bestehender Web Services von Client Seite aus.


Quelle: CC eGov Berner Fachhochschule (http://webservice.iwv.ch)


 

Back
Top