nn 1 | Page 3

496 DISTRIBUTED OBJECT-BASED SYSTEMS CHAP . 9
Client machine Client application
Server machine Object implementation
Static IDL proxy
Dynamic Invocation Interface
ORB interface
Object adapter
Skeleton
Dynamic Skeleton Interface
ORB interface
Client ORB Local OS
Server ORB Local OS
Network
Figure 9-2 . The general organization of a CORBA system .
Underlying any process in CORBA , be it a client or server , is the ORB . The ORB can best be seen as the runtime system that is responsible for handling the basic communication between a client and an object . This basic communication consists of ensuring that an invocation is sent to the object ’ s server and that the reply is passed back to the client .
From the perspective of a process , the ORB offers only a few services itself . One of these services is manipulating object references . Such references are generally dependent on a particular ORB . An ORB will therefore offer operations to marshal and unmarshal object references so that they can be exchanged between processes , as well as operations for comparing references . Object references are discussed in detail below .
Other operations offered by an ORB deal with initially finding the services that are available to a process . In general , it provides a means to obtain an initial reference to an object implementing a specific CORBA service . For example , in order to make use of a naming service , it is necessary that a process knows how to refer to that service . These initialization aspects apply equally well to other services .
Besides the ORB interface , clients and servers see hardly anything of the ORB . Instead , they generally see only stubs for handling method invocations for specific objects . A client application usually has a proxy available that implements the same interface as each object it is using . As we explained in Chap . 2 , a proxy is a client-side stub that merely marshals an invocation request and sends that request to the server . A response from that server is unmarshaled and passed back to the client .
Note that the interface between a proxy and the ORB does not have to be standardized . Because CORBA assumes that all interfaces are given in IDL , CORBA implementations offer an IDL compiler to developers that generates the necessary code to handle communication between the client and server ORB .
However , there are occasions in which statically defined interfaces are simply