The interface to a CORBA object is specified using the CORBA Interface Definition Language (IDL). An IDL compiler translates the IDL definition into an application programming language, such as C++ and Java, generating IDL stubs and skeletons that respectively provide the framework for client-side and server-side proxy code. Compilation of applications incorporating IDL stubs provides a strongly-typed Static Invocation Interface (SII). Conversely, a more flexible communication mechanism can be established through the use of the Dynamic Invocation Interface (DII) and the Dynamic Skeleton Interface (DSI) allowing objects to be created without prior knowledge of the IDL interface.
Requests and responses between objects are delivered in a standard format defined by the Internet Inter-ORB Protocol (IIOP), a communications protocol which adheres to the CORBA General Inter-ORB Protocol (GIOP) specification and, as such, acts as the base for CORBA interoperability on the internet.
Requests are marshalled in a platform independent format, by the client stub (or in the DII), and unmarshalled on the server-side into a platform specific format by the IDL skeleton (or in the DSI) and the object adaptor. In its mandatory version, the Portable Object Adaptor (POA) provides CORBA objects with a common set of methods for accessing ORB functions, ranging from user authentication to object activation and object persistence.
The ORB core is implemented as a runtime library linked into client-server applications. Fig. 1 shows the components of the CORBA architectural model.