Algo llamado CORBA

CORBA es una arquitectura que facilita la interoperabilidad entre componentes distribuidos, desarrollados en diferentes lenguajes y que se ejecutan sobre distintas plataformas y sistemas operativos.
CORBA viene de Common Object Request Broker Architecture, que viene a significar algo así como « arquitectura común para gestores de solicitudes de objetos ».
CORBA en sí no es una librería, un componente o una aplicación, sino un conjunto de especificaciones, es decir, de muchos documentos. Básicamente hay tres elementos principales: un lenguaje de definición de interfaces llamado IDL (Interface Definition Language), un elemento que se encarga de facilitar la comunicación entre componente llamado ORB (Object Request Broker) y un protocolo estándar existente en todos los ORB indistintamente del fabricante, llamado IIOP (Internet Inter-ORB Protocol).
El desarrollo de una aplicación CORBA, o la adaptación de una aplicación ya existente, comienza por la definición de las interfaces y módulos. Para ello se usa un lenguaje, llamado IDL, que es posteriormente convertido al lenguaje de implementación, que puede ser prácticamente cualquiera, desde COBOL y Visual Basic a C++, Delphi o Java.

En esta conversión, realizada con el compilador de IDL, se generan módulos de código que actúan como intérpretes en el cliente y en el servidor. Estos intérpretes, conocidos habitualmente como stub en el cliente y skeleton en el servidor, son los que se encargan de las tareas más complejas. El stub hace que el cliente CORBA crea estar usando un objeto local, facilitando la obtención de la referencia, preparación de parámetros para su transferencias y descodificación de valores de retorno. El skeleton se encarga del proceso completario en la parte servidor.

Si IDL es el elemento de CORBA que facilita la independencia a la hora de trabajar con tipos de datos o definir interfaces, los ORB representan el otro pilar de CORBA. Los ORB forman parte de cliente y servidor, siendo los encargados de permitir la comunicación entre ambos componentes. Para ello usan el protocolo IIOP o algún otro derivado de GIOP, protocolos claramente documentados que permiten que ORBs de distintos fabricantes se comuniquen entre sí.

Existen ORBs para la mayoría de los lenguajes y plataformas, aunque los más habituales se usan con C++, Java y COBOL. Son muchos los fabricantes que ofertan ORBs, aunque seguramente los productos más importantes y conocidos son Visibroker, de Inprise, y Orbix, de IONA.
Inprise Visibroker es un ORB integrado en las versiones superiores de Delphi, C++ Builder y JBuilder, lo cual supone una ventaja puesto que hay, en estas herramientas, asistentes que generan automáticamente el código para crear servidores y clientes CORBA.

Además de los ORBs y el protocolo de comunicación, una aplicación CORBA, concretamente un cliente, necesita algún mecanismo para localizar los objetos que necesita. Este mecanismo es un servicio de directorio distribuido, conocido habitualmente como smart agent, en el cual se registran todos aquellos servidores que están en funcionamiento. Estos servidores también pueden activarse bajo demanda, usando un OAD y un repositorio de interfaces que permita identificar el servidor que dispone de la interfaz solicitada.

Aunque habitualmente las llamadas a métodos de interfaces se efectúan de forma estática, generando el anteriormente mencionado stub a partir del código IDL, también cabe la posibilidad de realizar llamadas dinámicas. También en este caso el repositorio de interfaces es un punto fundamental, ya que sin él no sería posible que el sistema de DII obtuviese la información precisa acerca de las interfaces disponibles.