Ein Webservice ist ein über ein Netzwerk erreichbarer Dienst, dessen Funktionen von anderen Programmen genutzt werden können. Er kapselt interne Abläufe hinter einer veröffentlichten Schnittstelle. Dadurch müssen aufrufende Anwendungen nicht kennen, wie der Dienst intern implementiert ist.
In der klassischen Webservice-Architektur beschreibt WSDL die verfügbaren Operationen, Nachrichten und Endpunkte. Für den Nachrichtenaustausch kommt häufig SOAP zum Einsatz. Beide Standards basieren traditionell auf XML, einer Sprache zur strukturierten Beschreibung und Übertragung komplexer Daten.
Aufbau und Kommunikation
Ein Client sendet eine strukturierte Anfrage an den Dienst. Der Webservice verarbeitet diese Nachricht, greift bei Bedarf auf die Geschäftslogik oder Datenhaltung zu und liefert eine Antwort. Bei klassischen SOAP-Diensten kann der Vorgang einem entfernten Prozeduraufruf, dem Remote Procedure Call (RPC), entsprechen.
Als Transport dient häufig HTTP beziehungsweise HTTPS. Die Architektur ist grundsätzlich nicht darauf beschränkt: Abhängig vom Verfahren können auch andere Protokolle eingesetzt werden. Die Kommunikation kann synchron erfolgen, wenn der Client unmittelbar auf die Antwort wartet, oder asynchron, wenn Verarbeitung und Antwort zeitlich entkoppelt sind.
Beschreibung und Auffindbarkeit
WSDL dokumentiert maschinenlesbar, welche Operationen ein Dienst anbietet, welche Daten erwartet werden und wie der Endpunkt erreichbar ist. Diese Trennung erleichtert die Nutzung durch unterschiedliche Plattformen. Für die Veröffentlichung und Suche nach Diensten wurde UDDI als übergeordneter Verzeichnisdienst definiert.
Webservices sind damit selbstbeschreibende Softwarekomponenten. Sie können von anderen Diensten aufgerufen und zu größeren Abläufen kombiniert werden. In einer Service Oriented Architecture (SOA) bilden solche lose gekoppelten Dienste eine wichtige Grundlage.
Charakteristische Eigenschaften
- Standardisierte Daten: Bei SOAP-Webservices werden Nachrichten als wohldefinierte XML-Strukturen übertragen.
- Lose Kopplung: Client und Dienst können weitgehend unabhängig voneinander weiterentwickelt werden, solange der vereinbarte Vertrag stabil bleibt.
- Abstraktion: Die Schnittstelle verbirgt Details der Implementierung und bildet eine Fassade vor der Geschäftslogik.
- Plattformunabhängigkeit: Unterschiedliche Betriebssysteme und Programmiersprachen können über gemeinsame Standards kommunizieren.
- Wiederverwendbarkeit: Ein Dienst kann mehreren Anwendungen dieselbe Funktion bereitstellen.
- Dokumentenaustausch: Neben einzelnen Operationsaufrufen lassen sich strukturierte Dokumente übertragen.
Umsetzungen sind unter anderem mit .NET, Java, PHP, C und C++ möglich. Der technische Vertrag bleibt dabei von der verwendeten Sprache getrennt.
Abgrenzung zur Webanwendung
Ein Webservice ist nicht mit einer Webanwendung gleichzusetzen. Eine Webanwendung besitzt üblicherweise eine Benutzeroberfläche für Menschen. Ein Webservice richtet seine Schnittstelle hingegen an andere Programme. Webanwendungen können Webservices im Hintergrund verwenden, um Daten abzurufen oder Funktionen auszuführen.
Ähnliche Ziele verfolgten bereits verteilte Technologien wie CORBA, DCOM und Jini. Webservices wurden jedoch gezielt für interoperable Kommunikation mit verbreiteten Webstandards konzipiert.
Sicherheit und Leistung
Die Sicherheit eines Webservices umfasst die verschlüsselte Übertragung, die eindeutige Authentifizierung von Clients, Berechtigungen und die Prüfung eingehender Nachrichten. HTTPS schützt den Transport. Je nach Architektur können ergänzende Standards wie SAML sowie XML-Signaturen eingesetzt werden.
XML-Nachrichten erzeugen durch ihre Größe und das notwendige Parsen zusätzlichen Aufwand. Für die Performance sind deshalb Nachrichtengröße, Validierung, Netzwerklatenz und Verarbeitungstiefe relevant. Kompakte Verträge, begrenzte Nutzdaten und bewusst gewählte Kommunikationsmuster können diesen Aufwand reduzieren.
Einsatz in Geschäftsprozessen
Webservices werden unter anderem für systemübergreifende Prozesse im B2B-Umfeld genutzt. Mehrere Dienste lassen sich zu einem Ablauf koordinieren. Für die formale Beschreibung solcher Prozesse entstand die XML-basierte Business Process Execution Language (BPEL).