Common Object Request Broker Architecture (CORBA)
- CORBA wurde von der Object
Management Group (OMG) erarbeitet. Die
OMG wurde 1989 gegründet und hat heute ca. 600 Firmen als Mitglied. Fast
alle namhaften Softwarehäuser gehören der OMG an.
- Ziel der OMG: Standards für Objekttechnologie zu definieren, die zum
Zeitpunkt der Veröffentlichung dem Stand der Technik entsprechen.
Grundideen von CORBA
Allgemeiner objektorientierter Ansatz
- Im Vordergrund stehen nicht mehr Prozeduren, Funktionen, Dienste etc.
sondern Objekte, deren Zustand nur über klar definierte Schnittstellen
abgefragt und verändert werden kann.
- Objekte interagieren, indem sie sich Nachrichten ("Requests")
zuschicken.
CORBA-spezifische Zusätze
- Die Objektschnittstelle wird nicht in einer Programmiersprache beschrieben,
sondern in einer speziellen Definitionssprache für Schnittstellen, der
CORBA IDL.
- Ein Request wird von einer (verteilten) Instanz namens Object Request
Broker (ORB) vermittelt, der in der Lage ist, das Zielobjekt innerhalb
einer CORBA-Umgebung zu bestimmen bzw. instantiieren und mit der Beantwortung
des Requests zu beauftragen. Der ORB ist ebenfalls dafür zuständig, ggf.
die Antwort auf einen Request an den Client zurückzuleiten.
Struktur eines ORB Interfaces

IDL Stubs, IDL Skeleton
Normale Requests, die im Client fest programmiert sind, werden über
(zielobjektspezifische) Stubs an den ORB übergeben. Dieser leitet den Request
über ein (ebenfalls zielobjektspezifisches) IDL Skeleton (vergleichbar
dem Server-Stub des DCE RPC) an das Zielobjekt weiter.
ORB Interface
Das ORB Interface stellt eine (für alle ORB identische) Schnittstelle
dar, die von Clients und Objektimplementationen gleichermaßen benutzt werden.
Object Adapter
Das Object Adapter dient u.a. der Registrierung, Aktivierung und Deaktivierung
von Objektimplementationen.
Dynamic Invocation Interface (DII)
Das DII erlaubt den Aufruf von Requests, deren Schnittstelleninformationen
dem Client erst zur Laufzeit vorliegen.
Die CORBA Programmierschnittstelle
- Für einzelne Programmiersprachen (bisher: C, C++, Smalltalk) sind in
CORBA Language Mappings definiert, die festlegen, wie mit den Konstrukten
der Implementationssprache die Bestandteile der CORBA IDL (insbesondere:
Datentyp- und Operationsdefinitionen) darzustellen sind.
- CORBA schreibt nicht vor, wie der ORB zu implementieren ist. Diese
Aufgabe ist dem Entwickler einer ORB-Lösung überlassen. Nachteil der offenen
Spezifikation: Zwei unabhängig voneinander entwickelte ORB können nicht
ohne Anpassung kommunizieren.
- Deshalb enthält CORBA 2.0 das General Inter-ORB Protokoll (GIOP), das
ein Standardverbindungsprotokoll für ORB propagiert.Grundidee des GIOP:
andere ORB werden über das DII als Objektimplementationen angesprochen.
- Kommerzielle ORB-Lösungen: ORBIX (IONA), ObjectBroker (DIGITAL), DSOM
(IBM)