Kap. 3 Verteilte Objektverwaltung 3.1 Einführung in die verteilte Objektverwaltung (Distributed Object Management, DOM) • • Anforderungen Kurzübersicht – Java RMI – Microsoft COM+ – CORBA 3.2 Der CORBA-Standard 3.3 Iona’s Orbix als Beispiel einer kommerziellen CORBA-Implementierung Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 1 Verteilte Objekte Moderne verteilte Informationssysteme sind gekennzeichnet durch die modulare Kapselung von Anwendungslogik (zusammen mit den zugehörigen Daten) in Form von Objekten • • Die Entwicklung von Informationssystemen entspricht dann dem konsistenten Zusammensetzen dieser verteilten Objekte (bzw. Komponenten) – Wiederverwendbare Software-Einheiten “Just as databases were at the center of the design of the applications of the ‘70s and ‘80s, components are at the center of the applications of the ‘90s and the next century” (David Vaskevitch, Microsoft) Voraussetzung: Geeignete Infrastruktur-Unterstützung zur Entwicklung und zum Zusammenführen verteilter Objekte: « Verteilte Objektverwaltung Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 2 Begriffswelt Objekt • • Anwendungsobjekt als abstrakter Datentyp, verfügt über – Schnittstelle (Methoden und Attribute) – Objektreferenz (eindeutig, intern) Designvarianten: Zustand – Explizit: Zustand der persistenten Daten aus der Datenbank explizit in Form von Attributen im Objekt materialisiert – Implizit: Zustand ist nicht im Objekt materialisiert, sondern wird über Methoden, die auf die DB zugreifen, sichtbar gemacht Client Objekt-Bus Account Finance ESQL/C Client • Software-Einheit, die Methoden eines Objekts aufruft Server • Software-Einheit, die Objektimplementationen anbietet Objekte können also sowohl die Rolle von Clients als auch die Rolle von Servern übernehmen Objektverwaltung höherer Ordnung (OHO) – SS 2002 SQL DBMS Account Kapitel 3: Vorlesung Verteilte Objekte – 3 Unterschied zwischen RPC und Objekt-Bus Code Client akjdkfjdksjfkdjkfjdksfkjasd kdjfkdjfkjdkjfkdkfjd kfjdkfjkd kfjdkjfkdjkfjkdjfkd kfjkdjkfjdkfkdkfkd ddddddddddddddddddddd dddddddddddddddddddd ddddddddd ddddddddddddddd d d dddddddd ddddddddddd dddddddd dd Call foo RPC Server Data Execute foo RPC Mechanismus Client Objekt-Bus (ORB) Invoke foo on Object X Invoke foo on Object Y Object X Object Y foo Server foo Objekt-Bus Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 4 Anforderungen an die verteilte Objektverwaltung Orts- bzw. Verteilungstransparenz • Aufruf von Server-Methoden unabhängig von der physischen Platzierung des Server-Objektes « Möglichkeit des Methodenaufrufs über Prozess- und Rechnergrenzen hinweg Plattformunabhängigkeit • Hardware- und Betriebssystemunabhängigkeit für Client- und Server-Objekte, d.h. Koexistenz mehrerer Plattformen « Interoperabilität ist gefordert Sprachunabhängigkeit • • Einbettung in bestehende Programmiersprachen, aber: Unabhängigkeit der Client- bzw. Server-Implementierungen von einer speziellen Programmiersprachenumgebung – Trennung von Interface und Implementierung Statische und dynamische Methodenaufrufe Transaktionen Selbstbeschreibung Polymorphismus Sicherheit Unterstützung sogenannter “Legacy”-Systeme Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 5 Java RMI — Übersicht RMI: Remote Method Invocation • • • • Aufruf von Objektmethoden in entfernten Java VMs Server-Objekt besitzt Proxy (Client Stub) als Stellvertreter in der Client VM – Client Stub wird zur Laufzeit in die Client-VM geladen und – Übernimmt das Marshaling von Aufträgen Aufträge gehen an Server-Skeleton in der Remote VM – Unmarshaling – Methoden-Aufruf des Server-Objektes Registry als Verzeichnis-Dienst für Remote-Aufrufe Client Object use Client Stub download register RMI Registry (Naming Service) marshaling Virtual Machine Objektverwaltung höherer Ordnung (OHO) – SS 2002 Client Stub Server Skeleton unmarshaling call Server Object (“remote object”) Virtual Machine Kapitel 3: Vorlesung Verteilte Objekte – 6 Java RMI — Verwendung Client-Entwicklung Server-Entwicklung Remote-Interface von „MyServer“ definieren (java.rmi.Remote Interface erweitern) Remote-Interface von „MyServer“ implementieren Client Code „MyClient“ implementieren (Java-Server-Klasse von java.rmi.UnicastRemoteObject ableiten) (Verwendung von java.rmi.Naming zur Lokalisation von Remote-Objekten; Aufruf von Remote-Objekt-Methoden über Client Stub) javac myServer.class download Verwendung Client Client Stub javac RMI Registry myClient.class Client Stub rmic (Stub-Compiler) (.class) Server Class Server Skeleton (.class) RMI Registry starten Server-Objekte instanziieren Remote Server Object Server-Objekt-Instanz registrieren (java.rmi.Naming) Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 7 Java RMI — Zusammenfassung Verteilungstransparenz • • Methodenaufrufe in entfernten VMs möglich RMI Registry als Naming Service Plattformunabhängigkeit • Sprachunabhängigkeit • Ist gegeben, da jeweils lediglich eine Java VM für Client bzw. Server vorausgesetzt wird Beschränkung auf Java, keine andere Sprachanbindung möglich Keine dynamischen Methodenaufrufe Keine Transaktionen Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 8 Microsoft COM+ — Übersicht Kein separater Standard, sondern Teil von MS Windows 2000 Basierend auf • • • COM (Component Object Model) – COM-Server: Binärcode (.dll oder .exe), stellt via Interface veröffentlichte Funktionalität (Methoden) bereit DCOM (Distributed COM), bereits in MS Windows 98 / NT integriert – Aufruf der im Interface veröffentlichten Methoden eines COM-Servers (mit Hilfe lokaler Proxy-Objekte über Rechnergrenzen hinweg) Zusätzlich: weitere Services zur Unterstützung von Transaktionssemantik Mehr zu COM+ in Kapitel 4 „Objekt-Transaktions-Monitore“ COM+ MS Message Queue (MSMQ) DCOM COM Objektverwaltung höherer Ordnung (OHO) – SS 2002 MS Transaction Server (MTS) Kapitel 3: Vorlesung Verteilte Objekte – 9 Microsoft COM+ — Zusammenfassung Verteilungstransparenz Plattformunabhängigkeit • Ist nicht gegeben durch Beschränkung auf die Microsoft-Welt Sprachunabhängigkeit • • Beschreibung der Schnittstellen der Objektklassen durch IDL (Interface Definition Language) – IDL-Beschreibung (Interface) unabhängig von der jeweiligen Implementierung Anbindung an mehrere Programmiersprachen existiert (z.B. in den diversen Entwicklungsumgebungen von Microsoft) Unterstützt sowohl statische als auch dynamische Aufrufe Transaktionssemantik wird durch MTS bereitgestellt Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 10 CORBA — Übersicht Standard der OMG (= Object Management Group) • CORBA = Common Object Request Broker Architecture • • Eines der weltgrössten Software-Konsortien, bestehend aus ca. 800 SoftwareHerstellern (u.a. Sun, IBM, HP, Oracle, Microsoft) Offener Interoperabilitäts-Standard für heterogene, verteilte, objektorientierte Systeme Erste Version bereits 1991 veröffentlicht (Standard wurde also definiert, bevor Produkte, d.h. CORBA-Implementierungen, auf dem Markt waren) Kernkomponente ist der ORB (Object Request Broker), der Objekt-Bus von CORBA • • Gemeinsame Kommunikationsplattform für verteilte Objekte Interaktion zwischen verteilten Objekten wieder über lokale Stellvertreter entfernter Objekte (Client IDL Stubs), die über server-seitige Skeletons die eigentliche Methodenimplementierung aufrufen – Jeder entfernte Aufruf erscheint dem Client wie ein lokaler Methodenaufruf – Client IDL Stubs verbergen die Sprache der Server-Implementierung Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 11 CORBA — Zusammenfassung Verteilungstransparenz Plattformunabhängigkeit • • Basis-Funktionalität des ORBs; zusätzlich: Durch IIOP (Internet Inter-Orb Protokoll) ist Kommunikation zwischen verschiedenen ORBs möglich Sprachunabhängigkeit • • • Strikte Trennung von Interface und Implementierung Sprachunabhängige Beschreibung der Schnittstellen von Objekten durch IDL (ist allerdings NICHT identisch mit der IDL von COM+) Anbindungen zu diversen Programmiersprachen existieren (C, C++, Smalltalk, Ada, Java, PL/1, …) Unterstützt sowohl statische als auch dynamische Methodenaufrufe OTS: Methodenaufrufe in Transaktionskontext möglich Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 12 Schöne neue DOM-Welt? Verteilungstransparenz klingt gut, aber man sollte hinterfragen, inwieweit sie wirklich erreichbar ist… Oft übersehene Probleme: • Latency Zugriff auf entfernte Objekte um Grössenordnungen langsamer • Memory Access Zeiger auf lokale Daten sind ungültig; grosse Fehlerquelle! • Partial Failure Statt dem ganzen Programm können nur einzelne Teile ausfallen… • Concurrency Verteilte Objekte müssen nebenläufige Aufrufe verkraften können Die wahre Herausforderung ist das gute Design eines verteilten Informationssystems! Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 3: Vorlesung Verteilte Objekte – 13