Client/Server-Versorgungsstrukturen, aufgesetzt auf verteilte Rechnersysteme, gestatten eine flexible und effiziente Anordnung der Bausteine von verteilten Anwendungen. Problem ist dabei die Heterogenität solcher Computersysteme, die Aufrufe über maschinenspezifische Rechnergrenzen hinweg nötig macht. Gängige Verfahren dafür sind unter dem Schlagwort RPC (Remote Procedure Call) bekannt und wurden in mehreren Standards (ONC-RPC, DCE-RPC, ROSE) spezifiziert. Auch wenn dadurch die Entwicklung von verteilten Software-Systemen einfacher ist, zeigt sich, daß mit der Forderung nach Interoperabilität zwischen solchen Anwendungen die RPC-Mechanismen allein nicht mehr ausreichen. Es fehlt eine komplette Architektur für die Zusammenarbeit verschiedener Applikationen. Dies und die monolithische Struktur und schlechte Kombinierbarkeit heutiger SW-Systeme waren 1989 Anlaß zur Gründung der Object Management Group (OMG), einem herstellerübergreifenden Konsortium mit inzwischen mehr als 600 Mitgliedern. Ziel war die Interoperabilität, Wiederverwendbarkeit und Portabilität von Software.
Im November 1992 veröffentlichte
die OMG mit dem Object Management Architecture
Guide ([OMG92]) ein Rahmenwerk für die Kooperation von heterogenen
verteilten Systemen. Zentrales Element dieser Architektur ist ein
Object Request Broker (ORB), standardisiert in der
Common Object Request Broker Architecture (CORBA 2.0, [OMG95a]).
Er stellt Mechanismen bereit,
die die Kooperation von Anwendungen in einer verteilten Umgebung
ermöglichen. Die Kooperation und Kommunikation beruht dabei
auf dem Aufruf von Operationen auf Objekten: Der ORB nimmt
den Aufruf (Request) eines Aufrufers (Client) entgegen, sucht eine geeignete
Instanz (Server) des gewünschten Typs, ruft die entsprechende Operation
auf und reicht eventuelle Ergebnisse an den Aufrufer zurück. Der
ORB bietet dazu eine Reihe von Aufrufschnittstellen
und Diensten an (Abb. 2.2):
Die Basisfunktionalität des ORBs wird durch Dienste spezieller Objekte erweitert. Diese Dienste können von allen Objekten benützt werden (z.B. bei der Erzeugung von Objekten). Der entsprechende Standard, die Common Object Services Specification ([OMG96]), spezifiziert einen LifeCycle Service, Persistence Object Service, Naming Service, Event Service, Concurrency Controll Service, Transaction Service, Relationship Service, Query Service und einen Externalization Service.