CORBA defines numerous things, including Object Request Brokers (ORBs) and the Interface Definition Language (IDL). The next two sections describe these concepts.
An Object Request Broker (ORB) is middleware that establishes the client-server relationships between objects. It provides a mechanism for transparently communicating client requests to servers.
Using an ORB, a client can transparently invoke a method on a server object, which can be on the same machine or across a network. The ORB intercepts the call and is responsible for finding an object that can implement the request, passing it the parameters, invoking its method, and returning the results. The client does not have to be aware of where the object is located, the programming language in which it is written, the operating system it is running on, or any other implementation details that are not part of the object's interface. Thus the ORB provides interoperability between applications on different machines in heterogeneous distributed environments and seamlessly interconnects multiple object systems.
An ORB simplifies distributed programming by decoupling the client from the details of the method invocations. This makes client requests appear to be local procedure calls.
ORBs also provide flexibility. They let programmers choose the most appropriate operating system, execution environment, and even programming language to use for each component of a system under construction. More important, they allow the integration of existing components. In an ORB-based solution, developers simply model the legacy component using the same IDL (see next section) they use for creating new objects, then write "wrapper" code that translates between the CORBA standard and the legacy interfaces.
The Interface Definition Language (IDL) is a language that lets you describe an object's interface without regard for the language in which the object is implemented. Each object that is invoked through CORBA has a corresponding IDL file.
Compiling an interface description stored in an IDL file produces glue code that gets executed when an application invokes the object through CORBA.
On the client side, the generated glue code packages the request and its parameters into a CORBA::Request object, then passes the request object to an ORB. The ORB locates an appropriate server and passes it the request object. Then on the server side, the generated glue code unpackages the request's parameters and invokes the appropriate server object method.
NOTE: The client application, and its glue code, can be in a language and platform different from that used for the server-side application and glue code. For example, a Java client can be served by a C++ server. In this way, IDL provides language independence.
©Copyright 2000, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.