Frage zu CORBA Objektreferenzen
-
Hallo,
Kann man direkt über die Objektreferenz die "entfernten Methoden" aufrufen?
Oder muss zunächst ein lokales Objekt (Proxy) der "entfernten Schnittstelle" angelegt werden?Ich hoffe ich habe die Frage halbwegs verständlich formuliert...
Fakt ist (so verstehe ich es jedenfalls), dass wenn man ein lokales Objekt anlegt, dennoch über die Objektreferenz die jeweilige Operation des Servants aufgerufen wird. Muss ich wirklich diesen Umweg gehen, oder kann ich direkt die Referenz benutzen.
In meinem CORBA Buch steht, dass sich die Objektreferenz aus folgenden Teilen zusammensetzt:
Repository ID --> ID String, um auf das Repository zuzugreifen
Endpoint Info --> z.B. IP, Port, usw.
Object Key --> (Propriäterer Anteil) Adressbereich des "Servers", in dem das Objekt liegt.Kann mich jemand aufklären?
Vielen Dank im Voraus,
Gruß Paddy
-
Hallo,
eine "reine" Objektreferenz bekommst du gar nicht in die Hände. In dem Moment wo du eine Objektreferenz anforderst (über den Namensdienst, über string_to_object usw) bekommst du immer eine Referenz auf ein Proxy-Objekt, welches letztlich für die Erzeugung/Übertragung der eigentlichen Nachrichten zuständig ist. Der genaue Ablauf wird durch das Language-Mapping definiert.Fakt ist (so verstehe ich es jedenfalls), dass wenn man ein lokales Objekt anlegt, dennoch über die Objektreferenz die jeweilige Operation des Servants aufgerufen wird.
Ich weiß nicht ob ich dich richtig verstehe, aber wenn du wirklich eine lokale Version eines Corba-Objekts haben möchtest, dann musst du ja nicht das Corba-Objekt (indirekt über eine Objekt-Referenz) erzeugen. Du kannst schlicht ein Objekt der Servant-Klasse anlegen und mit diesem dann direkt kommunizieren.
Btw: Aktuelle Corba-Implementationen optimieren "in-process"-Kommunikation (sowie "inter-process"-Kommunikation auf der selben Maschine). D.h. wenn Client-/und Server auf dem gleichen Rechner (oder gar im selben Prozess) laufen und du einen "entfernten" Methodenaufruf durchführst, so wird dieser nicht erst kompliziert gemarshalled und über das Netz geschickt. Das Proxy-Objekt ist in diesem Fall also ein viel "dünnerer" Wrapper.