[omniORB] IDL version problem.
Nathaniel Smith
njs@njs.dhis.net
Mon, 10 Apr 2000 13:36:58 -0700
On Mon, Apr 10, 2000 at 08:07:24AM -0700, Carlson, Andy wrote:
> Armin,
>
> The approach we use is to enclose all IDL definitions in a module
> and apply a version suffix (e.g. _V1_0) to the module name.
>
> In your case, you would leave the old IDL inchanged and suffix your
> new IDL.
>
> This approach means that to CORBA apps, the two interface versions
> (and any associated typedefs, structs etc) are completely separate.
> The good thing about that is that you can build translation proxies or
> build servers which support both versions of the interface. It also means
> that there are no restrictions on what changes you can make to your
> IDL between versions. The bad thing about it is that the CORBA system
> is unaware of any relationship between the two versions, so there is no
> backwards compatability 'for free'. You also need to figure out how
> clients are going to find servers with the correct interface version - one
> possibility is to use the Naming service and add versioning suffixes to
> the Naming Service names too.
>
> The other oft-quoted approach is to make the new version of the interface
> a subclass of the old one. This gives you backwards compatability but
> prevents you making any changes to existing method signatures,
> structs etc.
I'm not an expert on CORBA, but I thought that it already have provision
for this sort of thing in the type id. For example, if I do
catior `nameclt bind_new_context test`
then I get
Type ID: "IDL:omg.org/CosNaming/NamingContext:1.0"
Profiles:
1. IIOP 1.0 WyrmWeyr 8088 "8.*.U..y...."
And what is that 1.0 for if not versioning?
Probably someone else on the list knows why this doesn't work out as
nicely as one would hope.
-- Nathaniel