Middleware umfasst anwendungsunabhängige Technologien, die Dienstleistungen zur Vermittlung zwischen Anwendungen anbieten, so dass die Komplexität der zugrundeliegenden Applikationen und die Infrastruktur verborgen wird. Man kann Middleware auch als eine Verteilungsplattform, auffassen. In Three-tier Architecutre ist Middleware in der mittleren Schicht angesiedelt.
Abstraktion von der Netzwerkprogramierung ist eine Aufgabe die grundsätzlich jede Middleware zu erfühlen hat.
Middleware organisiert den Transport komplexer Datenstrukturen
1), vermittelt Funktionsaufrufe zwischen den Komponenten (sog.
Remote Procedure Calls), stellt die Transaktionssicherheit über ansonsten unabhängige Teilsysteme her (Funktion als Transaktions-Monitor) etc.
Technisch stellt sie Software-Schnittstellen und/oder Dienste bereit. Für die Kommunikation werden in der Regel gebräuchliche Netzwerk-Standardprotokolle (fast immer
IP, darauf aufbauend z.B.
HTTP, darauf aufbauend u.a.
SOAP,
Web Services verwendet).
-
Middleware ist also eine (Software) Schicht auf einem Verteiltem System welche volgende Abstkationenseigenschaften (sog. Transparenzarten) für die Verteilten Anwendungs Systemen bitten kann.
Das Verbergen bzw. Abstrahieren wird in diesem Fall als Transparenz bezeichnet:
Die zentrallen2) sind:
Zugriffstransparenz: Der Zugriff auf einen entfernten Dienst oder Ressource unterscheidet sich nicht von einem Zugriff auf den Lokalen.
Ortstransparenz: Der Ort, an dem sich ein Dienst oder eine Ressource befindet ist dem Benutzer nicht bekannt. Der Zugriff kann z.B. über ein Namensdienst erfolgen.
Nebenläufigkeitstransparenz: Es ist mehreren Benutzer möglich, gleichzeitig auf die Dienste und Ressourcen zuzugreifen. Das System sorgt dafür, dass exklusive Zugriffe möglich sind, und Daten eventuell synchronisiert bzw. repliziert werden.
Fehler- und Ausfalltransparenz: Beim Ausfall eines Systems oder einer Netzwerkverbindung sollte der Anwender weiterarbeiten können, wenn auch mit verminderter Leistung.
Replikationstransparenz: Aus Performancegründen kann es mehrere Kopien derselben Ressource geben. Das System sorgt für die transparente Replikation der darin vorgenommenen Änderungen.
Ausserdem unterscheidet man noch:
Skalierungstransparenz: Das System soll flexibel bei der Erweiterung oder dem Austausch von Komponenten sein. Eine Systempflege oder Erweiterung soll ohne Ausfall möglich sein und ist sehr wichtig für die Verfügbarkeit von Verteilten Systemen.
Prozesstransparenz: Programme können beliebig zwischen den Knoten des Verteilten Systems verschoben werden. Idealerweise sorgt das System selbst für die Verschiebung von Prozessen auf weniger ausgelastete Knoten. Der Name und Ausführungsstatus eines Programmes darf sich dabei nicht ändern.
Leistungstransparenz: Den Benutzern steht die volle Leistung des Gesamtsystems zur Verfügung. Das System sorgt selbst dafür, dass die Aufgaben auf die verschiedenen Knoten optimal verteilt werden.
Migrationstransparenz: Das Verschieben von Objekten im Verteilten System soll für den Benutzer und die Anwendungen unbemerkt geschehen.
Sprachtransparenz: Die Kommunikation zwischen den Komponenten ist unabhängig von der jeweils verwendeten Programmiersprache.
Konzentriert sich auf die Abstraktion von der Netzwerkprogrammierung.
Im Mittelpunkt steht neben der Kommunikation vor allem die Unterstützung verteilter Anwendungen. Beispiele sind sowohl allgemeine Architekturen, wie
als auch komplette Betriebssysteme, wie z.B.:
MIDP (Mobile Information Device Profile), Java-basiertes System für Mobiltelefone,
MHP (Multimedia Home Platform), Java-basiertes System für das interaktive Fernsehen.
ObjectWeb widmet sich als erstes internationales Konsortium der Erstellung von Open Source Middleware.
-