Zurück Weiter

Der ORB

Allgemeines
Der Object Request Broker stellt im CORBA System die Kommunikationsplattform da. Nur durch den ORB kann ein Client mit einem Server sprechen. Der ORB nimmt dabei die Vermittlungsposition ein.

einfache Darstellung
Kommunikation zwischen Client und Server mittels des ORB

Diese Architektur ermöglicht es, aus der Sicht des Clients, den Aufruf einer Funktions sowohl lokal als auch im Netzwerk verteilt zu gestatten. Dabei ist dies für den Client vollkommen transparent. Für ihn sind alle Objekte auf dieselbe weise erreichbar. Er wendet sich dabei immer an den ORB. Dieser hat die Aufgabe das entsprechende Objekt zu finden. Dazu kann er den Naming Service heranziehen um die benötigte Objekt Referenz zu erhalten, oder er bekommt diese direkt als String durch einen Input mitgeteilt.

Aufgaben
Der ORB ist ein zentrale Bestandteil eines CORBA Systems. Durch ihn kann ein Client mit einem oder mehreren Servern kommunizieren. Es ist möglich auch mehrere gleiche Serverobjekte auf verschiedenen Rechnern vorzuhalten. Stichwort Sicherheit oder Lastverteilung. Ein Server muss zu Anfragezeit des Clients noch nicht einmal exitieren. Der ORB sorgt dafür, dass dieser gestartet bzw. erzeugt wird. Wenn der Sender eine andere lokale Darstellung der Daten hat, als der Empfänger, so wandelt der ORB diese Daten um - falls erwünscht. Der ORB trägt dafür sorge, dass der Request eines Clients auch das Serverobjekt findet. Stichwort Naming Service.

Kommunikation
Ein Client bzw. Server kann auf verschiendene Weise mit einem ORB kommunizieren. Die folgende Abbildung zeige alle Möglichkeiten auf:

komplexe Darstellung
ORB mit allen Schnittstellen zu den Objekten

Begriffserklärung:
DII Dynamic Invokation Interface - Diese Schnittstelle muss verwendet werden, wenn dem Programmierer noch nicht bekannt ist, welche Art von Interface er verwenden kann, um mit dem ORB zu kommunizieren. Es ist eine universelle Lösung und daher auch kompizierter zu implementieren. Diese Methode ist nur auf der Seite des Client zu verwenden.
IDL - Stub Clientseitig: Interface wird aus der IDL Datei gewonnen. Diese Schnittstelle ist direkt für diesen Client geschaffen worden. Es ist die einfachste Art der Kommunikation mit dem ORB.
ORB Interface Hierbei handelt es sich um eine Schnittstelle, die spezifisch für einen bestimmten ORB ist. Sie ist nicht standartisiert.
DSI Dynamic Skeleton Interface - Hierbei handelt es sich um das selbe wie bei dem DII, nur dass sich dieser Teil auf den Server bezieht.
IDL Skeleton Serverseitig:Interface wird aus der IDL Datei gewonnen. Diese Schnittstelle ist direkt für diesen Client geschaffen worden. Es ist die einfachste Art der Kommunikation mit dem ORB.
OA Object Adapter - Diese Schnittstelle hat eine recht grosse Bedeutung. Daher wird ihr hier auch ein eigenes Kaptiel gewidmet. Hier sei nur kurz erwähnt, dass der OA die Aufgabe hat einer Objektreferenz ein Objekt zuzuordnen.

Die zentralen Zugriffsmethoden sind hierbei das DII/DSI und der Zugriff via Stub/Skeleton. Dabei sind DII/DSI einzusetzen, wenn das Interface zur Zeit der Programmierung noch nicht bekannt ist. Stubs und Skeletons sind auf eine Interface maßgeschneiderte Implemntationen. Der Austausch zwischen Server und ORB durch den Objekt Adapter wird zu einem späteren Zeitpunkt beschrieben.

Implementation des ORB in einem realen Programm
Der ORB ist in dem hier gezeigten Beispielprogramm direkt sowohl zum Client als auch zum Server mit compiliert. Dazu möchte ich hier ein paar Reports des Prozess-Status angeben.

An diesem Daten ist zu erkennen, dass bei keinem Start der Programme ein Deamon für den ORB mitgestartet wurde. Es gibt einen Deamon bei Mico - der micod - dabei handelt es sich aber nicht um eine Implementation des ORB, sondern des Object Adapter (siehe nächstes Kapitel).