Was sind Web Services?

geschrieben von Jens Goldhammer
21. April 2010

Im letzten Blogartikel über Documentum Foundation Services wurde der Grundstein zum Verständnis über das neue Produkt von EMC gelegt. Es wurde dabei das Datenmodell und die vorhandenen Funktionalitäten betrachtet. Im 2.Teil der DFS-Blogserie soll die Funktionsweise herausgestellt werden. Dafür notwendig sind jedoch Grundkenntnisse zum Thema Web Services, die mit dem nachfolgenden Text gelegt werden sollen. Betrachtet werden sollen Web Services selbst und die damit verbundenen Technologien Web Service Description Language, WSDL, und SOAP.

Was sind Web Services?

„A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.”
(W3C Web Services Architecture Working Group, August 2003)

Ein Web Service lässt sich nach dieser Definition nicht auf eine Technologie beschränken, sondern bündelt Basiskomponenten wie SOAP, Web Service Description Language und XML. Web Services kapseln Funktionen, die von einfachen Datendiensten wie z.B. der Abfrage und Rückgabe von Kundendaten bis hin zu komplexen Geschäftsprozessen reichen. Dabei können Dienste entwickelt werden, um neue Funktionen abzubilden bzw. um eine Schnittstelle zu alten Anwendungen zu bieten.

Der Zweck von Web Services ist es, standardisierte Nachrichten zwischen einem Sender, meist einem Client, und einem Empfänger, meist einem Server, auszutauschen. Die Kommunikation kann in beide Richtungen verlaufen (Request-Response-Mechanismus) und unterstützt damit vorrangig eine Client-Server-Architektur wie in Abbildung 1 dargestellt. Im Web Service-Umfeld spricht man daher auch von einem Servicenutzer, dem Client, der Daten anfragt, und einem Serviceanbieter, dem Server, der Daten liefert bzw. verarbeitet.

Abbildung 1: Clinet-Server-Architektur

Abbildung 1: Client-Server-Architektur 

Die folgenden Kerntechnologien werden bei Web Services benutzt:

  • eXtensible Markup Language (XML)
  • Web Service Description Language (WSDL)
  • SOAP

Auf XML soll an dieser Stelle nicht weiter eingegangen werden. Mehr Informationen sind unter http://www.w3.org/XML/ zu finden.

Die Web Service Description Language

Die WSDL ist die XML-basierte Beschreibungssprache für Web Services. Damit können funktionale Aspekte eines Services standardisiert abgebildet werden. Da XML ohne ein entsprechendes XML-Schema frei aufgebaut sein kann, wurde ein XML-Schema definiert, das besagt, wie eine Schnittstellendefinition eines Web Service formal auszusehen hat. Die aktuelle Version von WSDL ist 2.0 und die Spezifikation dazu ist unter http://www.w3.org/TR/wsdl20/ zu finden.

Die WSDL beschreibt vereinfacht gesagt folgendes:

  • Welche Dienste bieten
  • welche Operationen (inkl. Parameter)
  • unter welcher Adresse an?

Abstrakt kann man sagen, dass WSDL für XML das ist, was Interfaces für Java sind. Die Schnittstelle an sich ist jedoch programmiersprachenunabhängig und bildet damit den Dreh- und Angelpunkt zwischen einem Serviceanbieter und Servicenutzer. Damit kann z.B. der Web Service in Java programmiert sein und der Web Service Client in C#.

Abbildung 2 zeigt den schematischen Aufbau einer WSDL-Datei. Erkennbar ist, dass das WSDL-Format einen stark hierarchischen Aufbau hat. Die Elemente haben Abhängigkeiten untereinander und bauen aufeinander auf. Dadurch steigt die Wiederverwendung, indem einzelne Teile der WSDL ausgelagert werden können. Die einzelnen Bestandteile der WSDL werden in Tabelle 1 näher beschrieben.

wsdl_aufbau1

Abbildung 2: Aufbau der WSDL 

 

wsdl_tabelle

Tabelle 1: Erklärung der WSDL-Bestandteile 

 

Auf die Darstellung eines Beispiels soll an dieser Stelle verzichtet werden. Daher erfolgt hier nur ein Verweis auf ein Beispiel unter der URL http://www.w3.org/2001/03/14-annotated-WSDL-examples.html.

SOAP

Wenn ein Dienstnutzer eine in WSDL definierte Schnittstelle nutzen möchte, wird eine Dienstkommunikation benötigt, die zwischen Serviceanbieter und Servicenutzer stattfindet. Diese Dienstkommunikation kann technisch auf verschiedene Arten umgesetzt werden. Neben den Spezifikationen XML-RPC und Distributed Data Exchange (WDDX) wird in der Praxis vor allem SOAP favorisiert. Es stellt zurzeit das wichtigste Kommunikationsprotokoll für Web Service-Anwendungen dar und basiert auf XML.

In Abbildung 2 wird der Kommunikationsablauf mittels SOAP über das Transportprotokoll HTTP veranschaulicht. Es zeigt den grundsätzlichen Ablauf einer Kommunikation zwischen Serviceanbieter und Servicenutzer. Analog kann der Ablauf auf andere Transportprotokolle übertragen werden, denn SOAP ist grundsätzlich nicht an HTTP gebunden, wird aber am häufigsten damit benutzt.

 

soap_kommunikation1

Abbildung 3: synchroner Kommunikationsablauf mittels SOAP via HTTP-Protokoll 

 

Der Kommunikationsablauf kann in folgende Schritte unterteilt werden:

  1. Innerhalb einer Anwendung wird mittels SOAP-Client eine SOAP-Nachricht mit den Nutzdaten erzeugt.
  2. Die Übertragung findet unter Nutzung von etablierten Standards statt. In diesem Fall ist das HTTP. Der SOAP-Client erzeugt einen HTTP-Client, der die Übertragung der SOAP-Nachricht zum Server übernimmt.
  3. Auf dem HTTP-Server wird die Nachricht empfangen. Der SOAP-Server leitet die Nachricht zum Web Service weiter. Dieser kann die übertragenden Informationen extrahieren und verarbeiten.
  4. Falls die Bearbeitung im Web Service erfolgt ist, wird die Nachricht zurück zur Anwendung gesendet. Im Fall von HTTP wird die Nachricht über die noch vorhandene, offene Verbindung (HTTP-Session) gesendet. Dadurch trifft die Nachricht wieder bei der Anwendung ein.

Wie jedoch sehen diese Nachrichten aus, die ausgetauscht werden? Genau dies legt SOAP fest, denn es definiert das Format und den Aufbau der Nachrichten, die Dienstanbieter und Dienstnutzer per Datenübertragung austauschen. Die Struktur wird in Abbildung 3 dargestellt. Deutlich wird daran, dass grundsätzlich ein Umschlag (SOAP-Envelope) den optionalen Kopf (SOAP-Header) und den obligatorischen Körper (SOAP-Body) kapselt. Der Header kann wiederum mehrere Informationen in Form von XML-Elementen enthalten. Er bietet meist Platz für Angaben zur Sicherheit und Routing. Der Body enthält im Gegensatz dazu die zu übertragenden Nutzdaten, d.h. ein XML-Fragment passend zur Schnittstellenbeschreibung (Stichwort WSDL!). Dieser Aufbau ist in Abbildung 4 zu sehen.

soap_aufbau4

Abbildung 4: Aufbau von SOAP-Nachrichten 

Beispiele für SOAP-Nachrichten sind ebenfalls unter der URL http://www.w3.org/2001/03/14-annotated-WSDL-examples.html zu finden.

Fazit

Der Artikel vermittelt grundsätzliches Wissen zum Thema Web Services und erklärt die wichtigsten Fakten zu den Technologien WSDL als Schnittstellenbeschreibungssprache und SOAP als Nachrichtenformat. Die Documentum Foundation Services selbst sind mehrere Dienste vereint unter einer SOAP-Schnittstelle und sind durch mehrere WSDL-Dateien in ihrer Funktion beschrieben. Wie die Nutzung dann im Detail funktioniert, erfahren Sie im nächsten Artikel zum Thema DFS.

Sei der erste!

Kommentar schreiben