Esta es la primera pregunta que debemos contestar al lector. Y lo hacemos por un lado dando la definici�n de la arquitectura y por otro, mediante un ejemplo que busca aclarar los conceptos introducidos.
�Definici�n
CORBA define la infraestructura para la arquitectura OMA (Object Management Arquitecture) de OMG, especificando los est�ndares necesarios para la invocaci�n de m�todos sobre objetos en entornos heterog�neos.
Los entornos heterog�neos son aquellos en los que las arquitecturas que constituyen el entorno pueden ser sistemas Microsoft Windows, m�quinas Unix de diferentes fabricantes (Linux entre otros) e inclusos sistemas como MacOS o OS/2. Y es m�s, dentro de la heterogeneidad tambi�n se incluyen los sistemas de comunicaciones (protocolos de comunicaci�n como TCP/IP, IPX ...) o los lenguajes de programaci�n utilizados en las diferentes arquitecturas. Es el mundo inform�tico en su complejidad m�s alta y por tanto s�lo una arquitectura muy flexible y potente puede cubrir todos estos aspectos.
CORBA define su propio modelo de objetos, basado en la definici�n de las interfaces de los objetos mediante el lenguaje IDL.
De esta forma se logra una abstracci�n a la heterogeneidad que permite que el uso de CORBA no sea nada complejo. Como veremos, la forma de desarrollar con CORBA sigue una metodolog�a concreta y f�cil de seguir.
CORBA ha buscando un entorno heterog�neo, el cual constituye una visi�n abierta del mundo de la inform�tica y en la cual hay cabida para diferentes sistemas y distintas filosof�as, un mundo m�s rico que el que se puede lograr con un solo sistema alrededor del cual funcionan todas las aplicaciones.

CORBA ha logrado parte de su �xito a la clara separaci�n entre la interfaz de los objetos y la implementaci�n de los mismos. Las interfaces se definen utilizando el lenguaje IDL, cuya principal caracter�stica es su alto nivel de abstracci�n, lo que le separa de cualquier entorno de desarrollo espec�fico. Para la implementaci�n de los objetos se puede utilizar cualquier lenguaje de programaci�n que proporcione enlaces con el lenguaje IDL. Para que un lenguaje de programaci�n se pueda utilizar desde CORBA, debe tener definida la forma de enlazarse con IDL.
De esta forma, y a partir de una especificaci�n de las interfaces en IDL, se generan unos cabos (proxies) en el lenguaje elegido que permiten el acceso a la implementaci�n de los objetos desde la arquitectura CORBA.
La implementaci�n de CORBA es que la que esconde al usuario de la arquitectura toda la complejidad que pueda existir en un entorno concreto (como por ejemplo su sistema AIX de IBM), y permite al programador desarrollar siguiendo la metodolog�a gen�rica aprendida.
CORBA es un est�ndar creado con la idea de una distribuci�n de los sistemas basada en objetos. Con CORBA se pretende definir una arquitectura que especifique c�mo se crean los objetos y como se accede a sus funcionalidades. El mundo de los objetos se recrea en su m�xima expresi�n y mostrando toda la potencia de esta metodolog�a de desarrollo, hasta hace pocos a�os demasiado costosa para los equipos disponibles.
�Ejemplo de uso
Para comenzar a explicar esta arquitectura vamos a utilizar un ejemplo, ya que as� podremos obtener una idea del funcionamiento global del sistema y de la metodolog�a a seguir.
Para esta primera parte de explicaci�n de CORBA, vamos a desarrollar un ejemplo de una sencilla interfaz IDL que describe la funcionalidad que proporciona un determinado objeto.
El ejemplo que utilizaremos ser� una implementaci�n del protocolo de eco entre un cliente y un servidor, es decir, el servidor deber� responder al cliente todo lo que este le mande.
En este ejemplo se omitir�n detalles que las entregas 3 y 4 del curso ser�n detallados en profundidad. La interfaz IDL de nuestro ejemplo ser�a:
module CursoCORBA { interface echo { // El cliente env�a un mensaje al servidor y este se lo devuelve string repite (in string mensaje); }; };
La sintaxis del lenguaje IDL es similar a la de C++, as� que el lector que conozca dicho lenguaje podr� entender sin problemas este c�digo.
A partir de esta interfaz de generan de forma autom�tica y para un lenguaje concreto el c�digo que "enchufa" a este objeto con CORBA. Una vez enchufado el objeto a CORBA, el uso dentro del c�digo de los clientes es tan sencillo como invocar una operaci�n sobre un objeto.
Nuestra labor como desarrollador consiste en implementar del lado del servidor esta interfaz, mientras que del lado del cliente lo �nico que hay que hacer es utilizar los cabos (enchufes) generados para acceder a CORBA.
De momentos no vamos a bajar a m�s detalles ya que aqu� solo buscamos descubrir CORBA.
��Para qu� CORBA?
El uso de una nueva tecnolog�a siempre implica unos esfuerzos de formaci�n de los desarrolladores, nuevas herramientas, nuevos problemas y nuevas soluciones...
La adopci�n de una nueva tecnolog�a debe ser llevada a cabo tras un an�lisis de los costes y la ventajas que se obtienen ya que en el fondo, es una inversi�n que debe amortizarse en el futuro.
Vamos a intentar dar al lector los motivos por los que creemos que debe utilizarse CORBA.
Con el triunfo de las redes de ordenadores y su implantaci�n, las aplicaciones distribuidas son las �nicas que pueden explotar toda la potencia de este nuevo modelo inform�tico.
Las aplicaciones distribuidas, aquellas que se caracterizan por su ejecuci�n coordinada en diferentes m�quinas comunicadas, se caracterizan por una alta complejidad en todas las etapas de su desarrollo, debido a la gran cantidad de factores que influyen en su ejecuci�n, siendo uno de los principales la gesti�n de las comunicaciones.
Por ejemplo, hay que tener en cuenta que los enlaces entre las m�quinas se pueden caer, y prever qu� hacer en esos casos, y como se detectan dichas ca�das. Otro ejemplo ser�a que contra una m�quina A se pueden conectar varias, y debe ser capaz esta m�quina A de manejar todas las conexiones. Y las m�quinas se tienen que poder encontrar y tienen que poder localizar servicios remotos. Podemos citar tambi�n que los entornos en red suelen ser heterog�neos, hay que comunicar diferentes m�quinas con distintas configuraciones software y hardware.
CORBA abstrae muchos de estos detalles y hace la distribuci�n de la aplicaci�n un proceso mucho menos complejo y costoso.
Se encarga de organizar los servicios que se pueden encontrar en la red a trav�s de los interfaces IDL. Es independiente de la plataforma y del lenguaje de desarrollo lo que facilita el desarrollo en entornos heterog�neos. Gestiona las comunicaciones, informando a clientes y servidores de ca�das de los canales de comunicaci�n.
Facilita la integraci�n de software heredado. Tan s�lo hay que definir las interfaces IDL de este software para ponerlo disponible en CORBA.
Proporciona servicios adicionales para, por ejemplo, encontrar objetos y servicios dentro de entornos distribuidos, llegando incluso a definir entornos de trabajo CORBA para diferentes disciplinas: telecomunicaci�n, medicina,...
Dentro del libro publicado por OMG, "CORBA Fundamentals and Programming", de Jon Siegel se citan otra serie de ventajas:
- Los desarrolladores pueden utilizar para sus aplicaciones todo el hardware y software que ya existieran, gracias a la universalidad de CORBA y a su facilidad para integrar desarrollos heredados. La metodolog�a orientada a objetos es una de las m�s adecuadas para lograr un proceso de producci�n software en plazos, robusto y que cumpla con lo que se espera. Y adem�s, este tipo de desarrollo facilita la reutilizaci�n de los componentes ya desarrollados, mejorando la productividad.
- Para los usuarios finales y las compa��as. CORBA es una excelente inversi�n, ya que gracias a su estandarizaci�n, se pueden obtener componentes CORBA de diferentes vendedores y lograr que todos trabajen entre s�.
En definitiva, CORBA presenta unas ventajas enormes en el desarrollo de software distribuido y es una herramienta sin la cual ser�a muy complicado llevar a cabo un proyecto en unos plazos adecuados y con unos resultados robustos.
��C�mo se desarrolla con CORBA?
El desarrollo con CORBA tiene una serie de pasos adicionales a los desarrollos software cl�sicos, y una serie de factores a tener en cuenta a la hora de desarrollar la aplicaci�n. En la fase de an�lisis poco cambia respecto a la metodolog�a que se utiliza en los proyectos software cl�sicos.
En la fase de dise�o s� que se pueden optar por unas soluciones basadas en CORBA, ya que CORBA ofrece unas tecnolog�as que pueden hacer factibles soluciones que de otra forma ser�an muy complejas de desarrollar.
En la fase de dise�o deber�n generarse las interfaces IDL de los diferentes m�dulos del sistema, algo que facilita mucho la transmisi�n de los resultados del dise�o a los desarrolladores.
Ya en la fase de desarrollo, cada equipo de desarrollo de un m�dulo recibir� la interfaz IDL para que la implemente en el lenguaje que considere m�s adecuado, recibiendo tambi�n las interfaces IDL de los servicios que vaya a utilizar su m�dulo. De nuevo, el uso de estos servicios se puede hacer en el lenguaje que seleccionen los desarrolladores, siendo para ellos transparente en qu� tipo de hardware y en qu� lenguaje se desarroll� la implementaci�n de dichos servicios.
Queda claro que la modularidad que proporciona CORBA facilita mucho los desarrollos paralelos y modulares, algo que en la fase de pruebas tambi�n se agradecer� mucho, ya que ser� m�s sencillo detectar los fallos y dar respuesta a ellos.
Quiz�s cabe aqu� resaltar la escalabilidad de esta forma de desarrollo. El insertar un nuevo servicio dentro del sistema es un proceso poco traum�tico. Habr�a que definir su IDL y ponerla disponible para aquellos servicios que ya existen que la quisieran utilizar.
Los proyectos heredados tambi�n se pueden integrar en los nuevos sistemas definiendo los interfaces IDL que ofrecen, y afectando de forma m�nima a la nueva arquitectura CORBA que se desarrolla. Todo el software que ya existe por lo tanto es perfectamente utilizable, y su posible sustituci�n se puede realizar de forma progresiva y bajo demanda.
�De la interfaz IDL a la implementaci�n
El proceso a seguir para implementar una interfaz IDL y poner disponible est� funcionalidad en CORBA es el siguiente:
- Se dise�a el servicio y se crea la interfaz IDL
- Se elige la plataforma y el lenguaje de implementaci�n y se busca la herramienta CORBA para esa plataforma y ese lenguaje.
- La herramienta CORBA debe tener un compilador IDL que, a partir de la interfaz IDL, generar� los cabos que permiten enganchar la implementaci�n de la interfaz con la arquitectura CORBA.
- Implementamos la interfaz IDL en el lenguaje elegido.
- Creamos un servidor CORBA que se encargue de registrar la nueva funcionalidad en CORBA, utilizando la implementaci�n realizada por nosotros y los cabos generados a partir de la interfaz IDL.
- Los nuevos servicios ya est�n disponibles en CORBA a la espera de la llegada de clientes que los quieran utilizar.
Esta es la metodolog�a a aplicar siempre, independientemente del entorno en el que nos movamos. Tanto si es Linux, como Microsoft Windows o Solaris de Sun, los desarrolladores deben de seguir este proceso.