CORBA

Tabla de contenidos

Introducción a CORBA
La Historia de CORBA en el proyecto GNOME
El lenguaje IDL
ORBit, la implementación de CORBA de GNOME

Los escritorios modernos están compuestos por multitud de pequeños programas que deben comunicarse los unos con los otros para que el usuario tenga la sensación de estar trabajando en un entorno coherente, un entorno en el que todo encaja y trabaja de forma coordinada.

Tómese como ejemplo el Panel, el Panel, este es un contenedor en el cual se pueden colocar diferentes "applets", estos "applets" son programas autónomos que deben comunicarse con el Panel para que el usuario tenga la sensación de que el Panel y los "applets" están perfectamente integrados.

Otros ejemplos mucho más complejos son también posibles, por ejemplo, el caso en cual un programa toma datos de un sensor y los introduce de forma automática en Gnumeric (la hoja de cálculo de GNOME Office) sin necesidad de que el usuario intervenga.

Para poder conseguir esta integración y la posibilidad de controlar las aplicaciones de esta forma es necesario un sistema que permita a los diferentes programas comunicarse entre ellos.

En este capítulo se presentará la solución que la comunidad GNOME a adoptado para este importante problema, sus características, sus ventajas y sus limitaciones.

Introducción a CORBA

CORBA es una tecnología que oculta la programación a bajo nivel de aplicaciones distribuidas, de tal forma que el programador no se tiene que ocupar de tratar con sockets, flujos de datos, paquetes, sesiones etc. CORBA oculta todos estos detalles de bajo nivel. No obstante CORBA también brinda al programador una tecnología orientada objetos, las funciones y los datos se agrupan en objetos, estos objetos pueden estar en diferentes máquinas, pero el programador accederá a ellos a través de funciones normales dentro de su programa.

Veamos un ejemplo:

      ...
      GNOME_Evolution_Calendar_Cal__setMode (object, MODE_LOCAL, &ev);
      ...
      

Esta función ejecutaría el método setMode sobre el objeto object, para el programador esta llamada es como una operación local, no hay más complejidad.

Los métodos y datos CORBA se agrupan formando lo que se demoninan interfaces, los interfaces pueden ser interpretados como objetos que grupan datos y métodos para acceder a estos. Todos estos interfaces se definen usado un lenguaje IDL (Interface Definition Language), que es precisamente esto, un lenguaje para la definición de interfaces. Este lenguaje es estandar y lo soportan todas las implementaciones CORBA.

es algo más que una abstracción que oculta la complejidad de red, -> TODAS LAS LLAMAS PARA EL PROGRAMADOR SON IGUALES -> SE DEFINEN OBJETOS Y METODOS -> LOS OBJETOS SON REMOTOS -> NO PORQUE CORBA OCULTE COSAS DEBEMOS DEJAR DE PENSAR EN LA EFICIENCIA DE RED Hay una multitud de sistemas con un propósito muy similar a CORBA circulando por el mundo, los más usados son: el RPC (Remote Procedure Call) de Sun Microsystems y DCOM (Distributed que los desarrolladores de GNOME han adoptado es individuales CORBA -> muy importante especificación, OMG