In this Module, we will look deeper into CORBA's core functionality and begin to uncover the details of how things work. In this module, you will learn:
How CORBA clients and CORBA servers function
More about the key functionality of the ORB
CORBA interfaces and how they tie things together from end to end
Where the vendors stand in regards to the CORBA specification
At the end of this module, we will have explored the fundamental structure of CORBA.
CORBA's Core Functionality
The Common Object Request Broker Architecture (CORBA) is a middleware standard developed by the Object Management Group (OMG) to enable interoperability between applications running on different platforms, programming languages, and hardware. CORBA achieves this by defining a standardized communication model for distributed objects.
At its core, CORBA provides:
Language and Platform Independence – Applications written in different languages can communicate using CORBA.
Location Transparency – CORBA objects can reside anywhere on a network.
Standardized Communication – Uses an Object Request Broker (ORB) to mediate client-server interactions.
How CORBA Clients and Servers Function
In a CORBA-based system, interaction happens through a client-server model where distributed objects communicate via stubs, skeletons, and an ORB. 1. Server-Side (Object Implementation)
A CORBA server implements an object that provides services. These steps outline how a CORBA server works:
Define the Object Interface – Using IDL (Interface Definition Language), a developer defines the methods that the CORBA object provides.
Generate Stubs and Skeletons – The IDL compiler generates:
Client Stub (for the client-side proxy).
Server Skeleton (to handle method calls on the server side).
Implement the Object – The server provides an implementation of the object methods.
Register the Object with the ORB – The object is registered with the ORB, making it available to clients.
2. Client-Side (Object Invocation)
A CORBA client interacts with a CORBA server by calling remote methods. The process includes:
Obtain the Object Reference – The client gets a reference to the CORBA object (e.g., through a Naming Service or a stringified object reference).
Call Methods on the Object Stub – The client makes method calls on the local stub, which acts as a proxy for the remote object.
ORB Handles the Communication – The ORB transparently sends the request to the server-side skeleton.
Server Processes the Request and Returns Data – The server executes the method and returns the result back to the client.
ORB (Object Request Broker) – The middleware that manages communication between distributed objects.
Stub and Skeleton – Auto-generated components that handle method calls transparently.
Naming and Trading Services – Allow clients to locate and bind to CORBA objects.
Example: CORBA in Action
The server registers an object with the ORB.
A client queries the ORB (or Naming Service) for the object reference.
The client calls a method on the local stub.
The ORB routes the request to the server-side skeleton.
The server executes the requested method and returns the response.
Final Thoughts
While CORBA has largely been replaced by modern alternatives like gRPC, RESTful APIs, and microservices architectures, it still exists in legacy enterprise applications due to its robustness in heterogeneous distributed systems.
Beyond the Basics: CORBAservices and CORBAfacilities
In addition to the CORBA basics of allowing objects to communicate with each other, recall that the OMA (of
which CORBA is a part) also provides additional capabilities in the form of CORBAservices and CORBAfacilities. As you'll find out, CORBAservices and CORBAfacilities provide both h horizontal (generally useful to all industries) and vertical (designed for specific industries) services and facilities.
Build on CORBA Concepts
The design of each Object Service uses and builds on CORBA concepts:
Separation of interface and implementation
Object references are typed by interfaces
Clients depend on interfaces, not implementations
Use of multiple inheritance of interfaces
Use of subtyping to extend, evolve and specialize functionality
Other related principles that the designs adhere to include:
Assume good ORB and Object Services implementations. Specifically, it is assumed that CORBA-compliant ORB implementations are being built that support efficient local and remote access to "fine-grain" objects and have performance characteristics that place no major barriers to the pervasive use of distributed objects for virtually all service and application elements.
Do not build non-type properties into interfaces A discussion and rationale for the design of object services was included in the HPSunSoft response to the OMG Object Services RFI
Interaction between Client and IDL, Client and ORB