cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache
 

Grundlagen - WSDL

Drucken
WebService Description Language (WSDL)
Geschrieben von: Christian Jänicke
Samstag, 23. Januar 2010

Die Web Service Description Language (WSDL) ist ein XML-Format, um Netzwerkdienste, die sogenannten WebServices zu beschreiben. In einer WSDL werden Nachrichten, die zwischen mehreren Endpunkten ausgetauscht werden, definiert. Diese Nachrichten werden innerhalb der WSDL zunächst abstrakt beschrieben und erst danach an bestimmte Netzwerkprotokolle und Nachrichtenformate gebunden.

Struktur eines WSDL-Dokuments

Ein WSDL-Dokument wird im XML-Format verfasst, wobei der Namensraum (Namespace) der WSDL-Elemente http://schemas.xmlsoap.org/wsdl/ ist. Das Wurzelelement eines WSDL-Dokuments ist <definitions>.

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="Name des Dokuments (optional)" 
  targetNamespace="Namensraum des WSDL-Dokuments (optional)">

</definitions>

Services werden durch die folgende Elemente definiert:

ElementBeschreibung
<types>In dem Element types werden die verwendeten Datentypen beschrieben, die in allen Nachrichten des Services verwendet werden.
<message>In dem Element message werden die Nachrichten definiert, die übertragen werden, wobei jede Nachricht aus mehreren Teilen besteht. Die Nachrichten verwenden die unter types definierten Datentypen.
<operation>Eine operation besteht aus einer (One-way, Notification) oder zwei Nachrichten (Request-response, Solicit-response) und bilden die Operationen (Funktionen) des Services.
<portType>Ein portType faßt mehrere Operationen zusammen, wobei sich jede Operation auf eine Ein- und Ausgabenachricht bezieht, die unter message definiert ist.
<binding>Unter binding werden nun die abstrakten Nachrichten und Operationen, die unter message bzw. portType definiert wurden, an konkrete Netzwerkprotokolle und Datenformate gebunden.
<port>Ein port beschreibt eine Adresse, meist eine URI, unter der die unter binding definierten Bindungen erreichbar sind.
<service>In einem service werden alle unter port beschriebenen Adressen zusammengefasst.

In einem WSDL-Dokument basiert jedes Element auf dem jeweils vorhergehenden, so werden im Element <message> Nachrichten definiert, die auf den Datentypen und Datenstrukturen basieren, die unter <types> definiert wurden. Die <portType>-Elemente definieren Operationen (<operation>), die sich aus Nachrichten zusammensetzen. Im <binding> werden diese Operationen an konkrete Netzwerkprotokolle gebunden und im <port>-Element werden den Bindungen Adressen zugeordnet. Ein <service> fasst nun bestimmte <port>-Elemente zu einem Paket zusammen.

Abhängigkeiten zwischen den WSDL-Elementen
Ansicht: Abhängigkeiten zwischen den WSDL-Elementen

<types>

In dem Element types werden alle relevanten Datentypen und Datenstrukturen definiert, die in den Nachrichten verwendet werden. Für die Definition wird die XML Schema Definition XSD verwendet.

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="Name des Dokuments (optional)" 
  targetNamespace="Namensraum den das WSDL-Dokument definiert (optional)">

  <types>
    <xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema" ...>
    
    </xsd:schema>
  </types>
  
  ...
  
</definitions>

Beispiel

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="BitworldService" 
  targetNamespace="http://www.bitworld.de/bitworldService.wsdl"
  xmlns:xsd1="http://www.bitworld.de/schemas">

  <types>
    <xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema"
      targetNamespace="http://www.bitworld.de/schemas">
    
      <element name="Person">
        <complexType>
          <all>
            <element name="vorname" type="string"/>
            <element name="nachname" type="string"/>
          </all>
        </complexType>
      </element>
    </xsd:schema>
  </types>
  
  ...
  
</definitions>

Oftmals ist es sinnvoller, die Definition der Datentypen und Datenstrukturen in ein separates XML-Schema-Dokument auszulagern und dieses in das WSDL-Dokument zu importieren. Für den Import von externen Quellen wird das Element <input> verwendet.

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema"
  targetNamespace="http://www.bitworld.de/schemas">

  <element name="Person">
    <complexType>
      <all>
        <element name="vorname" type="string"/>
        <element name="nachname" type="string"/>
      </all>
    </complexType>
  </element>
</xsd:schema>
XML-Schema: http://www.bitworld.de/schemas/bitworld.xsd

In dem WSDL-Dokument wird das XML-Schema nun mittels <import> eingebunden, wobei das Element <types> nicht angegeben wird.

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="BitworldService" 
  targetNamespace="http://www.bitworld.de/bitworldService.wsdl">

  <import namespace="http://www.bitworld.de/schemas"
    location="http://www.bitworld.de/schemas/bitworld.xsd"/>
  
  ...
  
</definitions>
WSDL-Dokument: http://www.bitworld.de/bitworldService.wsdl

Auf diese Weise können auch andere Teile des WSDL-Dokuments in externe Dateien ausgelagert und importiert werden. So ist es möglich, eine gemeinsame Datentyp-Basis für verschiedene Sammlungen von Services (Service-Domänen) zu erstellen.

<message>

Nachrichten bestehen aus einem oder mehreren <part>-Elementen — den Parametern der Nachricht. Jedes <message>-Element muss einen eindeutigen Namen haben, wobei der Name nur innerhalb der definierten <message>-Elemente eindeutig sein muss.

<message name="eindeutiger Nachrichtenname">

<part>

Ein <part>-Element definiert einen Nachrichtenparameter. Jedem <part> muss innerhalb des umgebenden <message>-Elements ein eindeutiger Name gegeben werden. Zusätzlich muss ein Datentyp angegeben werden, wobei man entweder ein anderes XSD-Element in dem Attribut element oder einen xsd:simpleType oder xsd:complexType in dem Attribut type angeben muss.

<part name="eindeutiger Parametername" 
  element="qualifizierter Elementname"
  type="qualifizierter Typname (simpleType oder complexType), z.B. xsd:string">

Die Elementnamen beziehen sich auf die unter <types> oder mittels <import> definierten Elemente.

Beispiel

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="BitworldService" 
  targetNamespace="http://www.bitworld.de/bitworldService.wsdl"
  xmlns:xsd1="http://www.bitworld.de/schemas">

  <types>
    <xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema"
      targetNamespace="http://www.bitworld.de/schemas">
    
      <element name="Person">
        <complexType>
          <all>
            <element name="vorname" type="string"/>
            <element name="nachname" type="string"/>
          </all>
        </complexType>
      </element>
    </xsd:schema>
  </types>
  
  <message name="speicherePerson">
    <part name="person" element="xsd1:Person">
    <part name="email" type="xsd:string">
  </message>
  
</definitions>

<portType>

Ein portType fasst eine Menge von Operationen (Funktionen) zusammen, die sich aus den definierten Nachrichten zusammensetzen. Eine Operation besteht aus mindestens einer Nachricht und maximal zwei Nachrichten. In der WSDL-Spezifikation werden die folgenden vier Typen von Operationen (Transmission primitives) definiert:

Endpunkte

Im folgenden taucht öfter der Begriff Endpunkt auf, so dass hier kurz erleutert werden soll, was unter einem Endpunkt zu verstehen ist.
Unter einem Endpunkt (Endpoint) ist ein Kommunikationspartner gemeint, der Nachrichten sendet und/oder Nachrichten empfängt.

TypEndpunkt-RolleBeschreibung
One-wayService-Anbieter
Provider
Der Endpunkt empfängt eine Nachricht.
Request-responseService-Anbieter
Provider
Der Endpunkt empfängt eine Nachricht und sendet eine dazugehörige Nachricht (Antwort).
Solicit-responseService-Nutzer
Consumer
Der Endpunkt sendet eine Nachricht und empfängt eine Nachricht.
NotificationService-Nutzer
Consumer
Der Endpunkt sendet eine Nachricht.

Quellen

Web Services Description Language (WSDL) 1.1, W3C Note 15 March 2001

Zuletzt aktualisiert am Samstag, 23. Januar 2010

Impressum

Impressum

Haftungsausschluss

(1) Haftungsbeschränkung

Inhalte dieser Website

Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Der Anbieter übernimmt jedoch keine Gewähr für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Inhalte. Die Nutzung der abrufbaren Inhalte erfolgt auf eigene Gefahr des Nutzers. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder.

Verfügbarkeit der Website

Der Anbieter wird sich bemühen, den Dienst möglichst unterbrechungsfrei zum Abruf anzubieten. Auch bei aller Sorgfalt können aber Ausfallzeiten nicht ausgeschlossen werden. Der Anbieter behält sich das Recht vor, sein Angebot jederzeit zu ändern oder einzustellen.

Externe Links

Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle dieser externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.

Werbeanzeigen

Für den Inhalt der Werbeanzeigen ist der jeweilige Autor verantwortlich, ebenso wie für den Inhalt der beworbenen Website. Die Darstellung der Werbeanzeige stellt keine Akzeptanz durch den Anbieter dar.

Kein Vertragsverhältnis

Mit der Nutzung der Website des Anbieters kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande. Insofern ergeben sich auch keinerlei vertragliche oder quasivertragliche Ansprüche gegen den Anbieter. Für den Fall, dass die Nutzung der Website doch zu einem Vertragsverhältnis führen sollte, gilt rein vorsorglich nachfolgende Haftungsbeschränkung: Der Anbieter haftet für Vorsatz und grobe Fahrlässigkeit sowie bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht). Der Anbieter haftet unter Begrenzung auf Ersatz des bei Vertragsschluss vorhersehbaren vertragstypischen Schadens für solche Schäden, die auf einer leicht fahrlässigen Verletzung von Kardinalpflichten durch ihn oder eines seiner gesetzlichen Vertreter oder Erfüllungsgehilfen beruhen. Bei leicht fahrlässiger Verletzung von Nebenpflichten, die keine Kardinalpflichten sind, haftet der Anbieter nicht. Die Haftung für Schäden, die in den Schutzbereich einer vom Anbieter gegebenen Garantie oder Zusicherung fallen sowie die Haftung für Ansprüche aufgrund des Produkthaftungsgesetzes und Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt.

(2) Urheberrecht

Die auf dieser Website veröffentlichten Inhalte und Werke sind urheberrechtlich geschützt. Jede vom deutschen Urheberrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des jeweiligen Autors oder Urhebers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Beiträge Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.

Links zur Website des Anbieters sind jederzeit willkommen und bedürfen keiner Zustimmung durch den Anbieter der Website. Die Darstellung dieser Website in fremden Frames ist nur mit Erlaubnis zulässig.

(3) Datenschutz

Durch den Besuch der Website des Anbieters können Informationen über den Zugriff (Datum, Uhrzeit, betrachtete Seite) auf dem Server gespeichert werden. Diese Daten gehören nicht zu den personenbezogenen Daten, sondern sind anonymisiert. Sie werden ausschließlich zu statistischen Zwecken ausgewertet. Eine Weitergabe an Dritte, zu kommerziellen oder nichtkommerziellen Zwecken, findet nicht statt.

Der Anbieter weist ausdrücklich darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen und nicht lückenlos vor dem Zugriff durch Dritte geschützt werden kann.

Die Verwendung der Kontaktdaten der Anbieterkennzeichnung - insbesondere der Telefon-/Faxnummern und E-Mailadresse - zur gewerblichen Werbung ist ausdrücklich nicht erwünscht, es sei denn der Anbieter hatte zuvor seine schriftliche Einwilligung erteilt oder es besteht bereits ein geschäftlicher Kontakt. Der Anbieter und alle auf dieser Website genannten Personen widersprechen hiermit jeder kommerziellen Verwendung und Weitergabe ihrer Daten.

(4) Anwendbares Recht

Es gilt ausschließlich das maßgebliche Recht der Bundesrepublik Deutschland.

(5) Besondere Nutzungsbedingungen

Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Punkten (1) bis (4) abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.

Quelle: Disclaimer von Juraforum.de - Portal mit Rechtsanwalt-Suche.