Pasamos a profundizar un poco m�s en CORBA y su arquitectura. Lo que sigue es quiz�s la secci�n m�s te�rica del curso, pero su conocimiento es indispensable para que en los ejemplos pr�cticos no nos perdamos entre los detalles.
�CORBA : Common Object Request Broker Arquitecture
Como ya dijimos en la definici�n, CORBA es una herramienta que nos va a facilitar el desarrollo de aplicaciones distribuidas en entornos heterog�neos. Y como all� dijimos, son estos entornos precisamente los m�s complejos a los que se tiene que enfrentar cualquier desarrollador.
Vamos a analizar como CORBA va proporcionando mecanismos y herramientas que nos permiten salvar las grandes barreras que hasta ahora exist�an en este tipo de entornos.
Ya citamos que el lenguaje IDL es uno de los pilares de esta soluci�n, y a este lenguaje dedicaremos gran parte de la segunda entrega de este curso.
No podemos olvidar que en todos los entornos de funcionamiento ya existen aplicaciones que resuelven gran variedad de problemas, aplicaciones que tienen un gran valor para el proceso de producci�n de nuestra empresa. Y OMG tuvo esto muy en cuenta, al estar formado por empresas comerciales. De esta forma y gracias de nuevo a IDL, las aplicaciones heredadas son muy f�ciles de integrar dentro de CORBA. Tan s�lo hay que desarrollar para ellas un peque�o recubrimiento IDL que exporte la funcionalidad que ofrece este sistema. Y claro, necesitamos que la aplicaci�n est� desarrollada en un lenguaje aceptado en CORBA, pero como veremos la mayor�a de lenguajes importantes se pueden utilizar en CORBA. Gracias a los cabos que se generan a partir de las interfaces IDL, podemos enchufar estos sistemas heredados a nuestra arquitectura CORBA.
La primera especificaci�n de CORBA se realiz� en 1990, por lo que ya existe un largo desarrollo y una amplia experiencia adquirida.
Con el impulso que ha significado Internet para los sistemas distribuidos, CORBA ha pasado ha ocupar un papel muy relevante dentro de la industria software y hay grandes intereses en su implantaci�n en Internet.
Como ya detallaremos en este curso, CORBA ha llegado a ser incluido dentro de los clientes de Netscape y se pretende que llegue a sustituir al protocolo HTTP (con IIOP) en el futuro.
Un primer esquema modular de CORBA se puede observar en la siguiente figura:

Ha llegado el momento de explicar esta figura, es decir, de comenzar a detallar la arquitectura CORBA y explicar los diferentes m�dulos que nos encontramos en la figura.
�El ORB de CORBA
En el siguiente gr�fico, perteneciente al est�ndar de CORBA, podemos observar los diferentes elementos de CORBA, entre ellos el ORB.

El ORB es posiblemente la parte m�s importante de CORBA. Es lo que se conoce como el bus de los objetos. El ORB se encarga de poner en contacto a los clientes y a los objetos de forma transparente con respecto a la distribuci�n.
Sus responsabilidades principales son:
- Mecanismos para que el cliente encuentre la Implementaci�n de la Interfaz
- Preparaci�n de la Implementaci�n de la Interfaz para que pueda recibir invocaciones remotas
- Comunicaci�n de los datos que hacen posible la petici�n (argumentos de la funci�n y par�metros de retorno)
Cuando el cliente quiere hacer una petici�n a la Implementaci�n de la Interfaz puede utilizar dos caminos diferentes: utilizar un cabo OMG IDL tal o utilizar la interfaz de invocaci�n din�mica (DII). Los detalles sobre estos m�dulos se desarrollar�n a continuaci�n.
�Invocaciones remotas desde el cliente
Para que el cliente pueda realizar una invocaci�n sobre un objeto, debe tener una Referencia del Objeto (IOR) y conocer el tipo de objeto y la operaci�n que desea invocar.
El cliente puede iniciar la petici�n a trav�s de un cabo IDL o bien construyendo la invocaci�n de forma din�mica utilizando el DII.
El ORB se encarga de encontrar el c�digo de la implementaci�n apropiada, transmitir los par�metros y transferir el control a la Implementaci�n de la Interfaz a trav�s del esqueleto IDL, o a trav�s del esqueleto din�mico (DII).

Las invocaciones pueden producir excepciones de diversa �ndole. Por ejemplo la referencia IOR al objeto puede ya no ser v�lida, o la interfaz IDL del objeto ha podido cambiar.
El ORB se encargar� de informarnos de todas estas posibles excepciones y nuestro c�digo deber� de estar preparado para gestionar estas excepciones.
�La interfaz de invocaci�n din�mica
El DII (Dynamic Invocation Interface) es una interfaz que nos permite la construcci�n din�mica de invocaciones para un determinado objeto.
Esto nos permite, en vez de utilizar una llamada a una funci�n determinada de un objeto concreto, que el cliente puede especificar el objeto, la invocaci�n y los par�metros a pasar a la invocaci�n a trav�s de una llamada o conjunto de llamadas.
De cara al servidor la invocaci�n es id�ntica a una que llega a trav�s de la interfaz est�tica, pero dentro del cliente se logra una flexibilidad fundamental en arquitecturas complejas y din�micas.
Una invocaci�n din�mica se compone de una referencia al objeto, una operaci�n y una lista de par�metros. Todos estos datos se obtiene del Repositorio de Interfaces (IR) , un nuevo elemento de la arquitectura que pasamos a detallar. El Repositorio de Interfaces (IR)
El Repositorio de Interfaces (IR) es un servicio que ofrece objetos persistentes que representan la informaci�n IDL de los interfaces disponibles en CORBA, de una forma accesible en tiempo de ejecuci�n (run-time).
Esta informaci�n puede ser utilizada por el ORB para realizar peticiones. Y adem�s, el programador de aplicaciones puede utilizar esta informaci�n para acceder a objetos cuya interfaz no se conoc�a en tiempo de compilaci�n, o para determinar que operaciones son v�lidas en un objeto.
�La Implementaci�n de los Objetos
Las implementaciones de los objetos reciben las invocaciones como llamadas hacia arriba (up-call), desde el ORB hacia la Implementaci�n de la Interfaz.

Esta llamada puede venir de un cliente que ha utilizado los cabos IDL, o bien la DII.
Los esqueletos de la interfaz IDL son espec�ficos de cada interfaz y del adaptador de objetos que exista en la implementaci�n de CORBA. Cuando la invocaci�n ha sido completada, el control y los valores de retorno son devueltos al cliente.
La Implementaci�n de la Interfaz puede utilizar los servicios que proporciona el adaptador de objetos e incluso los que proporciona el ORB, mientras procesa la petici�n que ha recibido del cliente.
La Implementaci�n de la Interfaz puede elegir un Adaptador de Objetos entre un conjunto de ellos, una decisi�n que estar� basada en la clase de servicios que pueda requerir la Implementaci�n de la Interfaz. Inicialmente OMG propuso como adaptador de objetos el BOA, pero debido a sus limitaciones los fabricantes introduc�an muchas extensiones propietarias. Para solucionarlo en CORBA 2.2 se introdujo POA, el adaptador de objetos est�ndar dentro de CORBA 2.2. POA es un m�dulo fundamental y se intentar� cubrir en profundidad en futuras entregas del curso.
�El Repositorio de Implementaciones (IR)
El Repositorio de Implementaciones contiene informaci�n que permite al ORB localizar y activar la implementaci�n de los objetos.
Normalmente, la instalaci�n de implementaciones y el control de las pol�ticas para la activaci�n y ejecuci�n de las implementaciones de los objetos, se realiza a trav�s de operaciones en el IR. Por ejemplo, los permisos por usuario para acceder e invocar los objetos son especificados aqu�.
La introducci�n de POA en CORBA 2.2 ha supuesto que la informaci�n que se almacena en el IR sea menor, ya que por ejemplo, las pol�ticas de activaci�n y ejecuci�n se localizan ahora dentro de POA, en el propio c�digo del servidor.
�El Adaptador de Objetos
El Adaptador de Objetos (OA) es el m�dulo que permite a las implementaciones de los objetos acceder a servicios ofrecidos por el ORB como la generaci�n de referencias para los objetos.
El adaptador de objetos exporta una interfaz p�blica para su uso por la implementaci�n del objeto, y una interfaz privada para su uso por el esqueleto del objeto, que depende de la implementaci�n del adaptador de objetos.
Las funciones que debe realizar el adaptador de objetos son:
- Generaci�n e interpretaci�n de las referencias a objetos
- Invocaci�n de m�todos
- Seguridad en las interacciones
- Activaci�n y desactivaci�n de objetos e implementaciones
- Traducci�n de referencias a objetos a sus correspondientes implementaciones
- Registro de las implementaciones
Si bien la invocaci�n de los m�todos se realiza a trav�s del esqueleto de la interfaz, impl�citamente tambi�n se utiliza al adaptador de objetos en funciones tales como la activaci�n de la implementaci�n o la autenticaci�n de la invocaci�n.
El Adaptador de Objetos define la mayor�a de los servicios que la implementaci�n de los objetos pueden obtener del ORB. Seg�n la implementaci�n, el ORB podr� ofrecer unos servicios u otros. Seg�n la clase de adaptador que se implemente, se deber�n ofrecer los servicios asociados a dicha clase. Debido a que las implementaciones de los objetos dependen del Adaptador de Objetos, se deben definir los menos adaptadores de objetos diferentes posibles, teniendo en cuenta que, el Adaptador de Objetos Portable (POA) que est� incluido dentro del est�ndar de CORBA, est� dise�ados para cubrir la funcionalidad necesaria en un amplio rango de implementaciones de objetos.
�Conclusiones
CORBA es una plataforma lo suficientemente madura como para poder ser usada en el �mbito comercial. Es una plataforma basada en un entorno s�lido de objetos distribuidos. Para acceder a los objetos utilizan referencias a los mismos, las cuales permiten al cliente acceder al conjunto de servicios que proporciona el objeto, a diferencia de esquemas como RPC, donde el acceso es por funci�n.
CORBA est� recibiendo el apoyo de la industria, al ser un est�ndar abierto, y m�s a�n desde la entrada en juego de Java, y la integraci�n en JDK 1.2 de una implementaci�n de CORBA, formando un equipo que deber� enfrentarse a la plataforma propietaria ActiveX/DCOM de Microsoft.