|
In this section, we will discuss a few issues about actually
implementing CORBA in a GNOME environment.
ORBit: a CORBA Implementation
ORBit is the main CORBA implementation used in GNOME. It was
written to be small and lightweight, and a lot of care has been
taken to keep it so. ORBit is written in straight C, and currently
only has C bindings (although C++ and Python bindings are coming
along rapidly). As a result of this, it is mostly used by programs
and libraries that are written in C/C++. Other languages will have
other CORBA implementations better suited for their language
bindings. However, they will still be able to communicate with
ORBit based applications.
The Name Server and libGNORBA
ORBit provides, as part of its services, a generic name server
implementation and all of the mechanism necessary to use CORBA in a
GNOME environment. However, a lot of the complexity that goes with
it is unnecessary for the average application developer, and there
is a steep learning curve involved with using CORBA. The GNORBA
library was thus created to provide a clean, simple wrapper around
common CORBA services in GNOME.
The GNORBA Library is composed of two parts: the name server and
the initialization code. The initialization code handles
initializing the ORB for the application developer. It also sets
up a security mechanism to prevent unwanted connections to the
ORB. The authorization scheme is based upon a cookie-passing
mechanism, similar to the one that the X windows system uses.
The main naming server in GNOME is the gnome-name-server process.
It provides naming services for applications running on the desktop
and it is centered around the X-display. Various instances of the
name server can be created and activated in different contexts
allowing developers to create naming services for their specific
applications. CORBA based GNOME applications will start the name
server automatically when needed, and applications can register
their activation mechanism with it.
Currently, there is no way to stretch this name server accross
separate X displays. In addition, the name server is unsuited for
applications that do not have connections to the X-server.
|