tags:

views:

233

answers:

4

I'd like to add a method to my existing server's CORBA interface. Will that require recompiling all clients?

I'm using TAO.

+1  A: 

Operations (methods) are looked-up by name, so you only need to recompile the clients that use the new operation.

Adam Mitz
+2  A: 

Recompilation of clients is not required (and should not be, regardless of the ORB that you use). As Adam indicated, lookups are done by operation name (a straight text comparison).

I've done what you're describing with our ACE/TAO-based system, and encountered no issues (servers were in ACE/TAO C++, clients were ACE/TAO C++, C# using Borland's Janeva, and OmniORBPy).

Jason Etheridge
We do this all the time - add methods and even new values to the end of enums. It works like a charm!
Fortyrunner
+1  A: 

Assuming that the clients and servers are communicating via IIOP, no recompilation is required. An IIOP message contains the name of the interface, the name of the method, and the parameters. If none of those things have changed, then everything should remain compatible. Adding another method to the interface won't change any of those existing things.

On the other hand, if your objects are using a different protocol, or if the clients are in-process with the server and thus bypassing IIOP, you may need to make sure everything gets recompiled.

Kristopher Johnson
+1  A: 

Clients using colocation (i.e. running within the same process with colocation enabled in ORB) must be recompiled. Remote clients may remain the same - as said previously, methods are matched by symbolic name.

Dmitry Khalatov