Historically, `open systems’ have meant that the specification and design of a software or hardware architecture is not controlled by a single vendor. In that respect, since Microsoft is solely responsible for developing Windows NT, COM/OLE is not open. CORBA, (the Common Object Request Broker Architecture), on the other hand, is. This standard is being developed by the Object Management Group (OMG), a consortium of software vendors and end users. Many OMG member companies are developing commercial products that support these standards and/or are developing software that uses it.
CORBA provides the mechanisms by which objects transparently make requests and receive responses, as defined by OMG’s Object Request Broker (ORB). The CORBA ORB is an application framework that provides interoperability between objects, built in (possibly) different languages, running on (possibly) different machines in heterogeneous distributed environments.
CORBA is the OMG’s answer to the need for interoperability among the rapidly proliferating number of hardware and software products currently available today. Simply stated, CORBA allows applications to communicate with one another no matter where they are located or who has designed them.
CORBA 1.1 was introduced in 1991 and defined the Interface Definition Language (IDL) and the Application Programming Interfaces (API) that enable client/server object interaction within a specific implementation of an ORB. CORBA 2.0, adopted in December of 1994, defines true interoperability by specifying how ORBs from different vendors can interoperate.
ORB is the middleware that establishes the client-server relationships between objects. 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, pass it the parameters, invoke its method, and return the results. The client does not have to be aware of where the object is located, its programming language, its operating system, or any other system aspects that are not part of an object’s interface.
In so doing, the ORB provides interoperability between applications on different machines in heterogeneous distributed environments and seamlessly interconnects multiple object systems.
Fielding typical client/server applications, developers use their own design or a recognised standard to define the protocol to be used between the devices. Protocol definition depends on the implementation language, network transport and a dozen other factors. ORBs simplify this process. With an ORB, the protocol is defined through the application interfaces via a single implementation language-independent specification, the IDL. ORBs also 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 importantly, they allow the integration of existing components. In an ORB-based solution, developers simply model the legacy component using the same IDL they use for creating new objects, then write `wrapper’ code that translates between the standardised bus and the legacy interfaces.
With CORBA, users gain access to information transparently, without having to know what software or hardware platform it resides on or where it is located on a network.