Re: CORBA question



Elliot Lee writes:
 > On Tue, 8 Dec 1998 16:25:53 +0000 (GMT), Felix Bellaby <felix@pooh.u-net.com>
 > wrote:
 > 
 > >There are alternative approaches based on goad server_ids but 
 > >AFAIK there is a one to one mapping from repo_ids to server_ids.
 > 
 > Not once someone installs a second help browser on your system ;-)
 > 
 > The repository ID identifies the interface that the server supports. The GOAD
 > server ID uniquely identifies the implementation. You can have more than one
 > program that implements an interface.
 > 
 > A good example is all the panel applets, which implement the same
 > IDL:GNOME/Applet:1.0 interface, but have different GOAD ID's.

I thought that was the case really (: but I still do not understand
why we are taking this approach.

You do not have more than one set of code that implements a widget 
in gtk or a class in C++. What you have instead is object inheritance. 

Is there a good reason why we can not use IDL object inheritance 
within the interface repository to handle the cases where we have 
multiple servers implementing the same interface ?

e.g.:

module GNOME 
{
  interface applet
  {
   ...

  };

  interface fish_applet : applet {};
  interface bussign_applet : applet {};
}

This enables you to get access to a given server like this:

CORBA_OBject applet = 
    goad_server_activate_with_repo_id (NULL, "IDL:GNOME/fish_applet:1.0", 0);

Rather than using this:

GoadServer sinfo = { 0, "IDL:GNOME/applet:1.0", "fish_applet", NULL };
CORBA_OBject applet = 
    goad_server_activate (sinfo, 0);

I think the object inheritance approach is better becuase it uses a
CORBA core feature (the interface repository) to access the servers
rather than using an API which is completely outside CORBA (the
server_id). It is every bit as flexible and more distributed.

What disadvantages is it supposed to have ?

Felix



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]