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