CORBA

Common Object Request Broker Architecture  

A Brief Overview

CORBA is a set of standards for distributed object-oriented computing systems.  Distributed computing systems are networked computer systems in which the different components of a software application program run on different computers on a network, but all of the distributed components work cooperatively as if all were running on the same machine.  Object oriented systems are computer systems that run software programs developed with object-oriented programming languages, such as Visual C++.  These object-oriented languages and systems use components, called objects, to represent and model the real world environment.  Each object is an instance of a real-world person, place, or thing.  Objects can be further defined by attributes, which are the characteristics used in descriptions of the object.  Objects also have services, sometimes called methods, which represent actions and functions that the object can do within the context of the system.

The CORBA standard for object request brokers was published by the Object Management Group, which was formed in 1989 for the "establishment of industry guidelines and detailed object management specifications to provide a common framework for application development" particularly in network and distributed computing.  An object request broker provides a variety of services that enable reusable software components, or objects, to communicate with other components, regardless of their location within a system.  If these components and/or systems are constructed according to the CORBA standard, the integration of those components and/or systems can be accomplished without the need to modify any part of the components or system, even if the systems components are built by different producers using different programming languages and running on different platforms or operating systems.  To the end user, all of the differences in a system constructed in compliance with the CORBA standard, would be transparent.

An object request broker (ORB) is a middleware component that enables an object residing on a remote client computer to send a message to a method or service of an object residing on a different computer on the network, most commonly on a network server.  The ORB essentially intercepts the message and handles all of the communication and coordination activities required to find the requested object and service, invoke the service, transfer the appropriate data to the requested object/service, and then transfer the resulting data back to the original requesting object.  An interface repository is used to store pertinent object description and location information, which is needed when the requests are generated.  

The basic structure of a CORBA architecture is illustrated in this figure.

 

 

When a client application must invoke a service contained within an object elsewhere on the system, the ORB will:

  1. Obtain pertinent information about the desired service from the interface repository.
  2. Create a data structure with parameters to be passed to the requested object.
  3. Create a request for the object.
  4. Invoke the request.

The request is then sent to the ORB core, which is an implementation-specific part of the network operating system that manages requests.  The request is then sent to the server for processing.  An object adapter on the server stores class and object information in a server-resident interface repository, accepts and manages incoming requests from clients, and performs other object management functions.  Using interface description information from the client, the server will invoke the requested object's service using similar interface description resident on the server.  The server-resident object and method processes the request and retrieves any needed data.  The resulting data from the request is then passed back to the requesting client application.

Using CORBA architecture, software developers can create an environment in which objects can be reused throughout a large network.

For further information on CORBA and its impact on software engineering for client/server systems see these resources:

 

 

CORBA Overview CORBA Internet Sites CORBA Books CORBA Articles
Frankie Gulledge