Rechenleistung dort zur Verfügung zu stellen, wo sie benötigt wird, oder dort zu nutzen, wo sie verfügbar ist: dies ist die Motivation für verteilte Anwendungen. Diese werden in vielen Fällen als Client-Server-Architekturen aufgebaut.
Um ein solches System aufzubauen, sind verschiedene Fragen zu beantworten:
- Wo erfolgt die Aufteilung ?
- Welche Kommunikationsprotokolle werden verwendet? Standards oder proprietär ?
- Welche Laufzeitumgebungen unterstützen dies ?
- Welche Entwicklungswerkzeuge und Programmiersprachen können genutzt werden ?
- Ist Interaktion mit anderen Systemen ebenfalls möglich ?
Gerne möchte ich Sie bei der Beantwortung dieser Fragen unterstützen.
Service-orientierte Architekturen (SOA)
Das Thema „Service-orientierte Architekturen“ oder kurz SOA ist gegenwärtig in aller Munde. Aber ebenso vielfältig sind auch die Meinungen und das, was man darunter versteht, zum Beispiel:
- ein neues Wort für verteilte Anwendungen
- verteilte Anwendungen (Services), die wiederverwendbar sind, also von unterschiedlichen Clients angesprochen werden können.
- Client-Server-Kommunikation unter Verwendung standardisierter Protokolle
- Verwendung ganz bestimmter Standardprotokolle, z.B. XML
- speziell Verwendung der Webservice-Protokolle (SOAP, WS-* Standards)
Für erfolgreiche Projekte entscheidend ist, SOA als Paradigma zu verstehen:
- Wiederverwendbarkeit durch Aufteilung der Software
- Mehrfachnutzbarkeit durch Netzwerkschnittstellen
- Interoperabilität durch Verwendung von Standardprotokollen
- Kosteneffiziente Realisierung durch Einsatz von Standardprodukten
Eigentlich sind diese Kernpunkte für sich genommen nicht neu. Die konsequente Integration aller dieser Punkte gemeinsam zu in einer stimmigen Architektur ist jedoch ein entscheidender Schritt zum Projekterfolg.
Im Rahmen eines aktuellen Kundenprojektes konnte ich erfolgreich eine SOA aufbauen mit folgenden Eigenschaften:
- Anwendung der WS-* Standardprotokolle: XML-basierte Nachrichten, SOAP, WS-Addressing
- dadurch Verwendbarkeit von Standardlösungen (Apache Axis2)
- asynchrone Nachrichtenübermittlung mittels JMS und WebSphere MQ
- Einführung eines durchgängigen Entwicklungsprozesses von der Definition der Business Objekte über Serviceschnittstellen bis hin zum komplett generierten Anwendungsprogramm
- Enwicklung einer Toolsuite zur Automatisierung des Entwicklungsprozesses