Zurück Weiter

Namensdienste - Naming Service

Aufgabe
Wie kann ein Client ein CORBA Objekt finden ? Dieses muss sich ja keineswegs auf dem selben Rechner befinden.
Objekt Referenzen sind weltweit eindeutig. Sie werden durch den im ORB implementierten BOA erzeugt. Dieser besitzt eine Methode XBOAimpl {...}. Diese wird immer dann aufgerufen, wenn ein neues Objekt erzeugt wird. Dabei generiert der BOA eine Objekt Referenz.

Finden, aber wie ?
Im Prinzip ist es im CORBA Standard nicht definiert, auf welche konkrete Weise ein Objekt lokalisiert wird. Die einfachste Methode ist es den Server seine Objekt - Referenz auf einen Ausgabeport zu schreiben und diese beim Client wieder einzutragen. Dazu stellt CORBA die Funktionen object_to_string und string_to_object zur Verfügung. In diesem Fall ist der Benutzer auch der Namensdienst. Dies kann aber nicht im Sinne des Erfinders sein, daher gibt es auch einen implementieren Namensdiest, durch den dieser Prozess automatisiert werden kann.

Naming Service in CORBA
CORBA bietet von sich aus einen Namensdienst an. Dieser Service ist nicht an den ORB gebunden, sondern stellt einen eigenen Teil des Systems da. Der Vorteil hierbei ist, dass viele Realisierungen eines derartigen Systems verwendet werden können. Z.B. wird man einen anderen Namensdienst verwenden, wenn man auf viele Objekte - wie in einer Datenbank - zugreifen möchte, als wenn eine sehr triviale Lösung ausreichen würde. Es ist hier wieder möglich das CORBA System auf seine eigenen Bedürfnisse anzupassen.
Wie aber kann der Client den Namensdienst erreichen, wenn er keine Möglichkeit hat auch nur ein Objekt zu finden ? Dazu bietet CORBA eine Methode an CORBA::Object_ptr resolve_initial_reference(char* id); Hierdurch wird dem Client eine Anzahl Basis Objekt Referenzen mitgeteilt, wozu auch der Namensdienst gehört. Dadurch ist es dem Client nun möglich alle, beim Namensdienst registrierten Objekte zu finden. Dies ist natürlich Voraussetzung , dass der Server die von ihm bereitgestellten Objekte auch beim Namensdienst anmeldet.

Kommunikation
Hier einmal der Ablauf einer derartigen Anfrage aus Sicht des Client