White Paper: Components in the GNOME Project


< Prev Contents  

Implementation Notes

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.


< Prev Contents