Definition und Abrenzung

Die Grundidee der Webservices stammt aus den Überlegungen und Arbeiten zur Entwicklung von verteilter Software. Dies ist ein Ansatz, der in der Informatik bereits seit wesentlich längerer Zeit verfolgt wird und der bedeutend älter ist als jegliche Überlegung zum Webservice-Begriff und angrenzenden Technologien. Dieser Abschnitt soll den Bogen nicht allzu weit spannen und auch keinen geschichtlichen Abriss über die verschiedenen Techniken geben, die es im Laufe der Zeit in verschiedenen Programmiersprachen und auf unterschiedlichen Plattformen gegeben hat, um verteilte Anwendungen zu realisieren. Stattdessen genügen die beiden Hinweise auf die weit zurückliegenden Basisüberlegungen und die begrenzten Möglichkeiten, die mit bereits umgesetzten und auch heute noch nutzbaren Techniken einhergingen. Sie lassen sich im Wesentlichen mit der geringen Austauschbarkeit von binären Datenströmen zum Methoden-/Dienstaufruf und damit gleichermaßen verbundenen Schwierigkeiten, eine Parameterübergabe von einer Plattform / Programmiersprache zur anderen zu realisieren, umreißen. Für gewöhnlich besteht auch heute noch der einfachste Weg darin, die Plattform und Programmiersprache nicht zu verlassen, wenn verteilte Anwendungen mit herkömmlichen Mitteln konstruiert werden. Dies ist bei Webservices aufgrund der eingesetzten XML-Technologien zum Austausch und zur Beschreibung von Nachrichten sowie des ganzes Dienstes eine gänzlich andere Situation.

Definition

Auch wenn das W3C quasi die gesamte Webservice-Technologie maßgeblich steuert und sicherlich die größte Antriebskraft zu ihrer Entwicklung und ihrem Ausbau darstellt, so gibt es verschiedene andere Ansätze und Technologien, mit deren Hilfe sie eingerichtet werden können. Nichtsdestoweniger soll an dieser Stelle insbesondere die W3C-Definition von Webservices im Vordergrund stehen. Sie ist im Dokument "Web Services Architecture, W3C Working Group Note 11 February 2004" (http://www.w3.org/TR/ws-arch/#whatis) im Abschnitt "1.4 What is a Web service?" zu finden und lautet:

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.

Die verschiedenen Teile der Definition lassen sich leicht auseinander nehmen und mit erweiterten Angaben so versehen, dass man einen guten Überblick über den grundlegenden Aufbau und die Funktionsweise eines Webdienstes erhält. Zunächst handelt es sich um eine netzwerkgestützte Software, deren Ziel die Unterstützung und Einrichtung von Maschine-zu-Maschine-Kommunikation - bzw. im Wortlaut der Definition Interaktion - ist. Die Existenz eines Netzwerkes ist insoweit wichtig, als dass gerade kein allein stehendes System errichtet wird, sondern eine solches, dessen Einzelteile an verschiedenen Netzwerkadressen verfügbar sind. Seine Schnittstelle, d.h. seine aufrufbaren Operationen und die für ihre Funktionsweise notwendigen Parameter- und Rückgabewerte sowie natürlich die Operationsnamen und weitere Informationen, die für die Nutzung des Dienstes Bedeutung haben, sind gleichfalls in einem maschinenlesbaren Format gehalten.

Sofern ausschließlich W3C-Technologien zum Einsatz kommen, wäre dies ein XML-Dokument im WSDL-Format (Web Services Description Language). Die verschiedenen Klienten des Dienstes führen ihre Interaktion, d.h. den Aufruf der angebotenen Operationen so aus, dass sie die Beschreibung verarbeiten bzw. sich in ihrem Verhalten gegenüber dem System nach ihr richten und die Nachrichten typischerweise über HTTP in XML austauschen. Sofern auch in diesem Fall ausschließlich W3C-Technologien zum Einsatz kommen, wäre das grundlegende Nachrichtenformat SOAP, welches andere XML-Formate wie XML Schema oder Standards wie die XML Schema-Datentypen beinhaltet.

Eine alternative Definition fasst die wesentlichen Sachverhalte etwas kürzer zusammen und konzentriert sich dabei mehr auf die technischen Gegebenheiten und weniger auf Architekturfragen. Sie ist im Dokument "Web Services Architecture Requirements, W3C Working Group Note 11 February 2004" im Abschnitt “1.1 What is a Web service?” (http://www.w3.org/TR/wsa-reqs/#id2604831) zu finden.

Definition: A Web service is a software system identified by a URI, whose public interfaces and bindings are defined and described using XML. Its definition can be discovered by other software systems. These systems may then interact with the Web service in a manner prescribed by its definition, using XML based messages conveyed by Internet protocols.

Diese Definition, wie gerade schon erwähnt, konzentriert sich darauf, dass es sich um ein Softwaresystem handelt, das unter einem URI zu erreichen ist. Die Schnittstellen und damit insbesondere die Namen der Operationen und ihr erwartetes (Rückgabe-)Datenformat sind in einem XML-Format festgelegt. Diese Festlegungen lassen sich automatisch entdecken, auswerten und suchen. Für die Benutzung des Dienstes sind ebenfalls wieder XML-Nachrichten zu verwenden, die über Internet-Protokolle ausgetauscht werden.

Architektur

Unterschiedliche Begriffe und Bezeichnungen formen eine Basisarchitektur, die durch unterschiedliche Softwareentwicklungstechnologien sowie XML-Standards und andere technische Gegebenheiten zu einem Gebilde umgesetzt werden können, welches den Namen Webservice tragen kann.

Die ersten beiden Begriffe sind Agent und Webservice. Sie werden im genannten Dokument im Abschnitt „1.4.1 Agents and Services“ (http://www.w3.org/TR/ws-arch/#id2260073) beschrieben.

Der Begriff Webservice selbst wird als abstrakter Begriff und mehr in Form eines Konzepts verstanden. Es handelt sich um eine Software, die als Agent verstanden werden kann und die den Dienst durch den Empfang und den Versand von Nachrichten implementiert. Der Agent ist dabei diejenige Entität, die für den Nachrichtenaustausch zur Verfügung steht, während der Webservice durch die angebotenen Operationen errichtet wird. Beide Konzepte (Agent und Webservice) sollen deutlich voneinander getrennt werden. Der Agent wird durch eine gegebene Programmiersprache implementiert, deren genaue Verwendung sich genauso ändern kann wie die genutzte Programmiersprache selbst. Sofern allerdings die verschiedenen eingesetzten Technologien die gleichen Operationen anbieten, handelt es sich um denselben Webservice.

Die nächsten beiden Begriffe sind werden im genannten Dokument im Abschnitt „1.4.2 Requesters and Providers“ (http://www.w3.org/TR/ws-arch/#reqpro) vorgestellt.

Ein Webservice wird auf Bestreben und unter der Zielsetzung seines Besitzers eingerichtet. Dies können eine Person oder eine Organisation wie z.B. auch ein Unternehmen sein. Die einrichtende Einheit wird als Anbieter verstanden, welche einen geeigneten Agenten für das Angebot eines Webdienstes erstellt. Auf der anderen Seite existiert ein Nachfrager, der ebenfalls in konkreter Gestalt einer Person oder Organisation auftreten kann und der den angebotenen Dienst nutzen möchte. Dies geschieht über einen nachfragenden Agenten, der mit dem Agenten des Anbieters geeignete und vom Anbieter in ihrem Format festgelegte Nachrichten austauscht und Antworten empfängt. In den verschiedenen Anwendungsfällen für Webservices gibt es genügend Beispiele für Einsatzbereiche, in denen der initiale Akt gerade nicht vom Nachfrager ausgeht, sondern vom Anbieter, aber dies soll die beiden Konzepte nicht in ihrer Benennung und Beschreibung verändern oder beeinflussen.

Beteiligte ParteienBeteiligte Parteien

Für die Nutzung des Webdienstes wird eine Beschreibung der angebotenen Operationen benötigt. Dies wird als eigenständiges Konzept im Abschnitt „1.4.3 Service Description“ (http://www.w3.org/TR/ws-arch/#id2263315) eingeführt.

Die Webservices-Beschreibung ist zunächst nicht notwendigerweise im vom W3C vorgeschlagenen und standardisierten WSDL-Format zu verfassen. Vielmehr ist für die Basisarchitektur überhaupt eine Dienstbeschreibung notwendig, welche ebenfalls als maschinenlesbares Dokument vorliegt und inhaltlich die Operationen und ihre Signaturen festlegt. Darüber hinaus soll es auch das Nachrichtenformat beschreiben, sofern keine atomaren Datentypen wie bei einfachen Methoden zum Einsatz kommen, das Transportprotokoll und sonstige technische Informationen wie Netzwerkadressen geben, die für die konkrete Nutzung des Diensts unverzichtbar sind.

Als vorletzten Grundbaustein der Basisarchitektur existiert die Notwendigkeit, die Bedeutung / Semantik des Dienstes zu beschreiben. Diese Eigenschaft von Webservices ist im Abschnitt „1.4.4 Semantics“ (http://www.w3.org/TR/ws-arch/#id2263364) zu finden.

Die dem Dienst zukommende Bedeutung wird als von beiden beteiligten Parteien geteilte Erwartung beschrieben, die das Verhalten des Dienstes betrifft. Als Reaktion kommen dabei die Art und das Format der ausgetauschten Nachrichten als kristallisierte Ergebnisse der Interaktion zum Ausdruck. Wie nun die Bedeutung des angebotenen Operationen festgelegt und verhandelt wird, ist ausdrücklich nicht festgelegt. Es kann die verschiedensten Formate und Vorgehensweisen geben, zu denen ausdrücklich neben maschinenlesbaren auch mündliche, rechtliche oder explizite und implizite Formen gehören. Neben der Dienstbeschreibung, welche die angebotenen Operationen und ihre technische Funktionsweise betrifft, soll die Vereinbarung über die Semantik des Dienstes seine Absichten und Bedeutung im Hinblick auf die Interaktion mit der nachfragenden Partei festlegen.

Schließlich wird das Vorgehen, wie ein Webservice überhaupt zur Nutzung gelangen kann, als eigenständiger Baustein formuliert. Dies geschieht im Abschnitt „1.4.5 Overview of Engaging a Web Service” (http://www.w3.org/TR/ws-arch/#engaging).

Für die Verwendung von Webservices ist eine Reihe von Schritten notwendig, die sich folgendermaßen charakterisieren lassen.

  1. Zunächst müssen Anbieter und Nachfrager überhaupt Kenntnis voneinander erlangen und sich gegenseitig bekannt machen. Dies geschieht im einfachsten Fall außerhalb der Software, indem für den Entwickler eines nachfragenden Agenten bereits die Netzwerkadresse und möglicherweise auch die Funktionsweise und die Bedeutung des Dienstes geläufig ist. Alternativ kann dies allerdings auch im Rahmen einer automatisierten Suche in einem Verzeichnis unter Zuhilfenahme eines weiteren Dienstes gelingen.
  2. Beide Parteien müssen sich über die Formate der ausgetauschten Nachrichten einigen. Darüber hinaus ist auch eine Einigung bzgl. der Bedeutung des Dienstes zu erzielen. Dies kann sowohl maschinengesteuert als auch völlig unabhängig von der durch den Programmierer in der realen Welt erfolgen.
  3. Die Beschreibung von Dienst und seine Bedeutung werden von beiden Parteien umgesetzt.
  4. Für die Nutzung des Dienstes tauschen Nachfrager und Anbieter Nachrichten in einem vorab festgelegten bzw. akzeptierten Format aus. Dieser Nachrichtenaustausch ist das eigentliche Ziel der gesamten Interaktion und kristallisiert die Bedeutung und die angebotenen Funktionalität des Dienstes in Form von ausgeführten Operationen und Aufgaben.

Reihenfolge der ProzessschritteReihenfolge der Prozessschritte