Curso práctico de Corba en GNU/Linux

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.

Figura 1: La heterogeneidad amenazada (xbill)

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:

  1. Se dise�a el servicio y se crea la interfaz IDL
  2. Se elige la plataforma y el lenguaje de implementaci�n y se busca la herramienta CORBA para esa plataforma y ese lenguaje.
  3. 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.
  4. Implementamos la interfaz IDL en el lenguaje elegido.
  5. 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.
  6. 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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO