2008-08-31 3 views

Antwort

4

Die Neukompilierung von Clients ist nicht erforderlich (und sollte nicht erfolgen, unabhängig vom verwendeten ORB). Wie Adam angedeutet hat, werden Nachschlagevorgänge anhand des Vorgangsnamens durchgeführt (ein direkter Textvergleich).

Ich habe getan, was Sie mit unserem ACE/TAO-basierten System beschreiben, und keine Probleme festgestellt (Server waren in ACE/TAO C++, ACE/TAO C++, C# mit Borland Janeva und OmniORBPy) .

+0

Wir tun dies die ganze Zeit - fügen Methoden und sogar neue Werte an das Ende von enums. Es wirkt wie ein Zauber! – Fortyrunner

1

Operationen (Methoden) werden nach Namen gesucht, sodass Sie nur die Clients neu kompilieren müssen, die die neue Operation verwenden.

3

Unter der Annahme, dass die Clients und Server über IIOP kommunizieren, ist keine Neukompilierung erforderlich. Eine IIOP-Nachricht enthält den Namen der Schnittstelle, den Namen der Methode und die Parameter. Wenn sich nichts davon geändert hat, sollte alles kompatibel bleiben. Das Hinzufügen einer anderen Methode zur Schnittstelle ändert nichts von diesen existierenden Dingen.

Wenn Ihre Objekte andererseits ein anderes Protokoll verwenden oder wenn die Clients mit dem Server arbeiten und somit IIOP umgehen, müssen Sie möglicherweise sicherstellen, dass alles neu kompiliert wird.

1

Clients, die Colocation verwenden (d. H. Innerhalb desselben Prozesses mit im ORB aktivierter Colocation ausgeführt werden) müssen neu kompiliert werden. Remote-Clients können gleich bleiben - wie zuvor erwähnt, werden Methoden mit einem symbolischen Namen verglichen.

0

Es hängt von der Verwendung der neuen Idl-Methode ab. Wenn der Aufruf von Corba statisch ist (SII), was bedeutet, dass Ihr Client mit dem Stub verbunden ist, müssen Sie einen Stub neu kompilieren, wenn Sie die neue hinzugefügte Methodenschnittstelle verwenden möchten.

Wenn Corba-Aufruf dynamisch ist (DII), ist kein Stub für den Client erforderlich. Keine Neukompilierung ist erforderlich. In diesem Fall sollten Sie Ihre Kundennummer wie:

 remoteObjRef->invoke("methodname", args); // send("methodname", args) 

ich vor vier Jahren Aufruf CORBA DII hat und es funktioniert mit TAO Client & TAO/JacORB/IONA corba Service.

Verwandte Themen