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.
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 dieser Beschreibung 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" (http://www.w3.org/TR/wsa-reqs/#id2604831) im Abschnitt “1.1 What is a Web service?” 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.
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 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 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 erste Schritt gerade nicht vom Nachfrager ausgeht, sondern vom Anbieter, aber dies soll die beiden Konzepte nicht in ihrer Benennung und Beschreibung verändern oder beeinflussen.
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 enthalten, 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 (Anbieter und Kunde) 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.

comelio.com


