Está en la página 1de 7

Artculo

Inicio Artculo Plataformas Linux

1
votar!

Curso prctico de Corba en GNU/Linux


Qu es CORBA? Definicin Ejemplo de uso Para qu CORBA? Cmo se desarrolla con CORBA? De la interfaz IDL a la implementacin

o o o o o

Qu es CORBA?
Esta es la primera pregunta que debemos contestar al lector. Y lo hacemos por un lado dando la definicin de la arquitectura y por otro, mediante un ejemplo que busca aclarar los conceptos introducidos.

CORBA define la infraestructura para la arquitectura OMA (Object Management Arquitecture) de OMG, especificando los estndares necesarios para la invocacin de mtodos sobre objetos en entornos heterogneos. Los entornos heterogneos son aquellos en los que las arquitecturas que constituyen el entorno pueden ser sistemas Microsoft Windows, mquinas Unix de diferentes fabricantes (Linux entre otros) e inclusos sistemas como MacOS o OS/2. Y es ms, dentro de la heterogeneidad tambin se incluyen los sistemas de comunicaciones (protocolos de comunicacin como TCP/IP, IPX ...) o los lenguajes de programacin utilizados en las diferentes arquitecturas. Es el mundo informtico en su complejidad ms alta y por tanto slo una arquitectura muy flexible y potente puede cubrir todos estos aspectos. CORBA define su propio modelo de objetos, basado en la definicin de las interfaces de los objetos mediante el lenguaje IDL. De esta forma se logra una abstraccin a la heterogeneidad que permite que el uso de CORBA no sea nada complejo. Como veremos, la forma de desarrollar con CORBA sigue una metodologa concreta y fcil de seguir. CORBA ha buscando un entorno heterogneo, el cual constituye una visin abierta del mundo de la informtica y en la cual hay cabida para diferentes sistemas y distintas filosofas, un mundo ms rico que el que se puede lograr con un solo sistema alrededor del cual funcionan todas las aplicaciones.

Definicin

CORBA ha logrado parte de su xito a la clara separacin entre la interfaz de los objetos y la implementacin de los mismos. Las interfaces se definen utilizando el lenguaje IDL, cuya principal caracterstica es su alto nivel de abstraccin, lo que le separa de cualquier entorno de desarrollo especfico. Para la implementacin de los objetos se puede utilizar cualquier lenguaje de programacin que proporcione enlaces con el lenguaje IDL. Para que un lenguaje de programacin se pueda utilizar desde CORBA, debe tener definida la forma de enlazarse con IDL. De esta forma, y a partir de una especificacin de las interfaces en IDL, se generan unos cabos ( proxies) en el lenguaje elegido que permiten el acceso a la implementacin de los objetos desde la arquitectura CORBA. La implementacin 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 metodologa genrica aprendida. CORBA es un estndar creado con la idea de una distribucin de los sistemas basada en objetos. Con CORBA se pretende definir una arquitectura que especifique cmo se crean los objetos y como se accede a sus funcionalidades. El mundo de los objetos se recrea en su mxima expresin y mostrando toda la potencia de esta metodologa de desarrollo, hasta hace pocos aos 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 metodologa a seguir. Para esta primera parte de explicacin 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 implementacin 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 omitirn detalles que las entregas 3 y 4 del curso sern detallados en profundidad. La interfaz IDL de nuestro ejemplo sera:

module CursoCORBA { interface echo {

// El cliente enva 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 cdigo. A partir de esta interfaz de generan de forma automtica y para un lenguaje concreto el cdigo que "enchufa" a este objeto con CORBA. Una vez enchufado el objeto a CORBA, el uso dentro del cdigo de los clientes es tan sencillo como invocar una operacin 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 ms detalles ya que aqu solo buscamos descubrir CORBA.

El uso de una nueva tecnologa siempre implica unos esfuerzos de formacin de los desarrolladores, nuevas herramientas, nuevos problemas y nuevas soluciones... La adopcin de una nueva tecnologa debe ser llevada a cabo tras un anlisis de los costes y la ventajas que se obtienen ya que en el fondo, es una inversin 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 implantacin, las aplicaciones distribuidas son las nicas que pueden explotar toda la potencia de este nuevo modelo informtico. Las aplicaciones distribuidas, aquellas que se caracterizan por su ejecucin coordinada en diferentes mquinas 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 ejecucin, siendo uno de los principales la gestin de las comunicaciones. Por ejemplo, hay que tener en cuenta que los enlaces entre las mquinas se pueden caer, y prever qu hacer en esos casos, y como se detectan dichas cadas. Otro ejemplo sera que contra una mquina A se pueden conectar varias, y debe ser capaz esta mquina A de manejar todas las conexiones. Y las mquinas se tienen que poder encontrar y tienen que poder localizar servicios remotos. Podemos citar tambin que los entornos en red suelen ser heterogneos, hay que comunicar diferentes mquinas con distintas configuraciones software y hardware. CORBA abstrae muchos de estos detalles y hace la distribucin de la aplicacin un proceso mucho menos complejo y costoso. Se encarga de organizar los servicios que se pueden encontrar en la red a travs de los interfaces IDL. Es independiente de la plataforma y del lenguaje de desarrollo lo que facilita el desarrollo en entornos heterogneos. Gestiona las comunicaciones, informando a clientes y servidores de cadas de los canales de comunicacin. Facilita la integracin de software heredado. Tan slo 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: telecomunicacin, 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 metodologa orientada a objetos es una de las ms adecuadas para lograr un proceso de produccin software en plazos, robusto y que cumpla con lo que se espera. Y adems, este tipo de desarrollo facilita la reutilizacin de los componentes ya desarrollados, mejorando la productividad. Para los usuarios finales y las compaas. CORBA es una excelente inversin, ya que gracias a su estandarizacin, 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 sera muy complicado llevar a cabo un proyecto en unos plazos adecuados y con unos resultados robustos.

Para qu CORBA?

Cmo se desarrolla con CORBA?

El desarrollo con CORBA tiene una serie de pasos adicionales a los desarrollos software clsicos, y una serie de factores a tener en cuenta a la hora de desarrollar la aplicacin. En la fase de anlisis poco cambia respecto a la metodologa que se utiliza en los proyectos software clsicos. En la fase de diseo s que se pueden optar por unas soluciones basadas en CORBA, ya que CORBA ofrece unas tecnologas que pueden hacer factibles soluciones que de otra forma seran muy complejas de desarrollar. En la fase de diseo debern generarse las interfaces IDL de los diferentes mdulos del sistema, algo que facilita mucho la transmisin de los resultados del diseo a los desarrolladores. Ya en la fase de desarrollo, cada equipo de desarrollo de un mdulo recibir la interfaz IDL para que la implemente en el lenguaje que considere ms adecuado, recibiendo tambin las interfaces IDL de los servicios que vaya a utilizar su mdulo. 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 implementacin 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 tambin se agradecer mucho, ya que ser ms sencillo detectar los fallos y dar respuesta a ellos. Quizs cabe aqu resaltar la escalabilidad de esta forma de desarrollo. El insertar un nuevo servicio dentro del sistema es un proceso poco traumtico. Habra que definir su IDL y ponerla disponible para aquellos servicios que ya existen que la quisieran utilizar. Los proyectos heredados tambin se pueden integrar en los nuevos sistemas definiendo los interfaces IDL que ofrecen, y afectando de forma mnima a la nueva arquitectura CORBA que se desarrolla. Todo el software que ya existe por lo tanto es perfectamente utilizable, y su posible sustitucin se puede realizar de forma progresiva y bajo demanda.

El proceso a seguir para implementar una interfaz IDL y poner disponible est funcionalidad en CORBA es el siguiente: 1. Se disea el servicio y se crea la interfaz IDL 2. Se elige la plataforma y el lenguaje de implementacin 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 implementacin 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 implementacin realizada por nosotros y los cabos generados a partir de la interfaz IDL. 6. Los nuevos servicios ya estn disponibles en CORBA a la espera de la llegada de clientes que los quieran utilizar. Esta es la metodologa 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.

De la interfaz IDL a la implementacin

CORBA/IDL

CORBA ("Common Object Request Broker") fue uno de los primeros mecanismos utilizados para lograr interoperabilidad entre Sistemas Empresariales, a travs de CORBA es posible insular un sistema del lenguaje en el que esta diseado, en otras palabras la comunicacin se lleva acabo a travs de objetos CORBA, obviamente lo anterior implica que un sistema debe ser diseado con CORBA, lamentablemente para efectos de este curso no se entraran en los detalles de como se realiza el diseo, sin embargo, es probable que

una empresa posea algn sistema que opere en CORBA y por ende es conveniente saber que un "Application Server/EJB Container" es capaz de comunicarse con ste. Una parte medular de CORBA es denominada IDL ("Interface Definition Language") a travs de este lenguaje neutro se definen interfases las cuales son utilizadas para generar objetos va CORBA, el funcionamiento de IDL es actuar como un puente entre determinado lenguaje y el mundo CORBA, esto es, a partir de un mismo IDL es posible generar interfases para otros lenguajes como C++, Smalltalk y Java; en Java existen dos distinciones de esta terminologa IDL. IDL-a-Java implica que es posible generar interfases Java a partir de cierto IDL, suponga que le proporcionan las definiciones IDL de "x" sistema CORBA a partir de estas definiciones IDL se generan las respectivas interfases Java las cuales pueden ser utilizadas en EJB's, esto permite que sus EJB's interacten con el sistema CORBA. El trmino Java-a-IDL significa que partiendo de definiciones Java (EJB's) es posible generar un IDL, una vez obtenido este IDL es posible utilizarlo para implementar objetos CORBA en otros lenguajes C++, Ada, Smalltalk ,etc; lo anterior permite que una aplicacin escrita en estos lenguajes sea capaz de invocar mtodos (en efecto actuando como cliente) en un "Enterprise Java Bean".

IDL (interface definition language /lenguaje de definicin de interfaz) Conclusiones


CORBA es una plataforma lo suficientemente madura como para poder ser usada en el mbito comercial. Es una plataforma basada en un entorno slido 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 funcin. CORBA est recibiendo el apoyo de la industria, al ser un estndar abierto, y ms an desde la entrada en juego de Java, y la integracin en JDK 1.2 de una implementacin de CORBA, formando un equipo que deber enfrentarse a la plataforma propietaria ActiveX/DCOM de Microsoft.

Qu es Java IDL?
Java IDL es una tecnologa para objetos distribuidos -- es decir, objetos interactuando sobre diferentes plataformas a travs de una red. Java IDL es similar a RMI (Remote Method
TM

Invocation), que soporta objetos distribuidos escritos enteramente en Java. Sin embargo, Java IDL permite intractuar a los objetos sin importar si estn escritos en Java o en cualquier otro lenguaje como C, C++, COBOL, etc. Esto es posible porque Java IDL est basado en "Common Object Request Brokerage Architecture" (CORBA), un modelo industrial estandard para objetos distribuidos. La caracterstica principal de CORBA es IDL, (Interface Definition Language). Caa lenguaje que soporte CORBA tiene su propio mapeo IDL -- y como su nombre implica, Java IDL soporta el mapeo para Java. CORBA y los mapeos IDL son el trabajo de un consorcio industrial conocido como OMG (Object Management Group). Sun es un miembro fundacional del OMG, y el equipo Jva IDL ha jugao un papel activo en la definicin del mapeo IDL-a-Java. Para soportar la interaccin entre objetos de programas separados, Java IDL proporciona un Object Request Broker, o ORB. El ORB es una librera de clases que permite una comunicacin de bajo nivel entre aplicaciones Java IDL y aplicaciones compatibles con CORBA. Esto est empezando a parecer una sopa de letras, no te preocipes, los detalles sobre CORBA, IDL y ORB vienen en la prxima pgina. Esta seccin camina a travs del diseo y desarrollo de una sencilla pareja de aplicaciones Java IDL que interactuan. Empiza mostrando la arquitectura general de CORBA, luego contina con una introduccin a los pasos para construir aplicaciones CORBA en Java IDL. Finalmente, realiza cada paso para producir un cliente y un servidor que interactuan usando CORBA.

Arquitectura bsica
La Figura 10.0 muestra la arquitectura bsica de CORBA [omg.org/gettingstarted, 2]. Como arquitectura de objetos distribuidos, guarda una gran semejanza con la arquitectura RMI. Desde el punto de vista lgico, un cliente de objeto realiza una llamada a un mtodo de un objeto distribuido. El cliente interacta con un proxy un stub mientras que la implementacin del objeto interacta con un proxy de servidor un skeleton. A diferencia del caso de Java RMI, una capa adicional de software, conocida como ORB (Object Request Broker) es necesaria. En el lado del cliente, la capa del ORB acta con intermediaria entre el stub y la red y sistema operativo local del cliente. En el lado del servidor, la capa del ORB sirve de intermediaria entre el skeleton y la red y sistema operativo del servidor. Utilizando un protocolo comn, las capas ORB de ambos extremos son capaces de resolver las diferencias existentes en lo referente a lenguajes de programacin, as como las relativas a las plataformas (red y sistema operativo), para de esta forma ayudar a la comunicacin entre los dos extremos. El cliente utiliza un servicio de nombrado para localizar el objeto.

También podría gustarte