Aspekte eines Service

Jeder Service verfügt über eine Serviceimplementierung, elementare Zugriffsdetails und einen Vertrag.

Serviceimplementierung

Eine Serviceimplementierung ist die zentrale Geschäftslogik, die Sie in einer beliebigen anderen Programmiersprache schreiben können. Die Begriffe 'Service' und 'Serviceimplementierung' werden häufig synonym verwendet. Der Begriff 'Serviceimplementierung' wird verwendet, wenn der Fokus auf den Details der Geschäftslogik liegt.

Elementare Zugriffsdetails

Zu den elementaren Zugriffsdetails gehören die Adresse der Serviceimplementierung und das Binding. Das Binding gibt das Protokoll an, das eine Nachricht zu Beginn einer Übertragung formatiert und die Formatierung am Ende der Übertragung wieder aufhebt. Bei Web-Services wird HTTP (Hypertext Transfer Protocol) verwendet. Die Formatierung erfolgt, wenn die Aufrufnachricht beim Anforderer ausgelöst wird. Die Aufhebung der Formatierung erfolgt, wenn die Nachricht bei der Serviceposition ankommt. Die Formatierung findet ebenfalls statt, wenn der Service eine Antwort ausgibt. In diesem Fall erfolgt die Aufhebung der Formatierung, wenn die Antwort beim Anforderer ankommt.

Die Position eines Service wird bei der Implementierung des Service festgelegt. Der Anforderer erkennt die Position wie folgt:
  • Die Details zur Serviceposition können in die Geschäftslogik des Anforderers eingebettet werden, diese Vorgehensweise ist jedoch unflexibel. Bei einer Änderung der Serviceposition muss der Anforderer neu kompiliert und erneut implementiert werden.
  • In den meisten Fällen werden die Details zur Serviceposition über die Konfigurationsdateien an dem Standort bereitgestellt, an dem der Anforderer implementiert ist. Diese Vorgehensweise ist flexibler, da die Konfigurationsdateien während der Verwendung des Anforderers geändert werden können, und der Anforderer auf den Service zugreifen kann, auch wenn der Service an einer neuen Position implementiert wird.
  • In manchen Fällen werden die Positionsdetails zur Laufzeit an den Anforderer übergeben oder die Nachricht wird von der SOA-Laufzeitsoftware umgeleitet. Diese Vorgehensweisen sind zwar flexibel, fügen aber Komplexität hinzu, die für die meisten Zwecke nicht erforderlich ist.

Verträge

Ein Vertrag beschreibt das gewünschte Verhalten eines Service und ist unabhängig von den Implementierungsdetails. Ein Vertrag besteht aus zwei Elementen: einer Serviceschnittstelle und einer Servicequalität.

Die Serviceschnittstelle enthält eine Beschreibung der Daten, die zwischen einem Anforderer und einem Service ausgetauscht werden können, sowie die Details zu jeder vom Service bereitgestellten Operation. Die Schnittstelle enthält Informationen zu den Nachrichten und beantwortet Fragen wie 'Welches Format hat eine Nachricht?' oder 'Welche Einschränkungen gelten bezüglich des Inhalts?' Ferner enthält die Schnittstelle Details zum Nachrichtenaustauschmuster, das die Art der Interaktion zwischen Anforderer und Service beschreibt. Die Schnittstelle gibt an, ob der Service stets auf den Anforderer antwortet.

Einige Aspekte der Serviceschnittstelle sind in der Serviceschnittstelle implizit. Ein Service könnte beispielsweise eine Börsennotierung enthalten, aber eine Fehlernachricht zurückgeben, wenn das übergebene Börsenkürzel ungültig ist.

Eine Schnittstelle ist nicht nur ein Aspekt eines Service, sondern auch des übergeordneten Servicedesigns. Die Schnittstelle geht normalerweise der für die Schnittstelle bestimmten Implementierung voraus.

Das zweite Element des Vertrags ist die Servicequalität (Quality of Service, QoS). Die Servicequalität besteht aus einer Reihe von Interaktionsregeln, die über die Regeln der elementaren Zugriffsdetails oder der Serviceschnittstelle hinausgehen. Im Rahmen der Servicequalität stellen sich die folgenden Fragen:
  • Zuverlässigkeit: Welchen Prozentsatz der Zeit soll ein Service verfügbar sein?
  • Sicherheit: Wie wird beispielsweise sichergestellt, dass ein bestimmter Anforderer auf einen bestimmten Service zugreifen darf?
  • Koordination: Kann der Service beispielsweise Datenbankänderungen überarbeiten, die vom Anforderer zwar vorgenommen, aber nicht festgeschrieben oder als permanent definiert wurden?
  • Laufzeitaktualisierung von Nachrichteninhalten oder -zielen: Kann eine Nachricht beispielsweise zur Laufzeit neu formatiert werden, um die Übertragung auf einen Computer zu ermöglichen, der ein anderes Protokoll verwendet?

Bemerkung

Ein Teil des oben aufgeführten Materials stammt aus Enterprise Web 2.0 with EGL (MC Press, 2009; http://www.mc-store.com/5107.html).


Feedback