Programación en el entorno GNOME |
---|
A la hora de desarrollar aplicaciones CORBA, uno de los primeros pasos que tenemos que hacer es escribir los interfaces IDL de nuestra aplicación. IDL es un lenguaje que permite definir una serie de interfaces para la comunicación entre dos o más aplicaciones. El IDL se escribe en un fichero, normalmente con la extensión IDL, en el cual se definen los interfaces y los métodos (funciones) de esos interfaces.
Un fichero IDL podría ser el equivalente a un fichero de cabecera en C++, en el que se definen las clases (el equivalente a los interfaces CORBA) y las propiedades (variables de la clase) y métodos de esas clases. De hecho, IDL NO ES un lenguaje para implementar interfaces CORBA, sino que es un lenguaje PARA DEFINIR interfaces CORBA, por ello la equivalencia con un fichero de cabecera de C++, donde, normalmente, no se incluye ninguna implementación, sino simplemente definiciones.
Antes de seguir adelante con las explicaciones, veamos un ejemplo de un fichero IDL, en este caso, String.idl. En este caso, definimos un solo interfaz, String, que incluye dos métodos, toUpper y toLower.
module MyModule { interface String { string toUpper (in string str); string toLower (in string str); }; };
Cualquier persona que conozca algun lenguaje de programación orientado a objetos, podrá fácilmente deducir que lo que estamos haciendo aquí es definir un interfaz (o sea, una clase), con dos métodos. Efectivamente, no hay más misterio en la escritura de los interfaces IDL, excepto, por supuesto, que las palabras clave no siempre son iguales que en C/C++, aunque podemos comprobar la similitud que existe entre estos dos lenguajes y el IDL. La diferencia es, simplemente, que, con CORBA, estamos definiendo objetos dentro de un sistema de objetos distribuido, que podrá ser usado desde cualquier aplicación que soporte CORBA, independientemente del lenguaje, plataforma o sistema operativo para el que se implemente. Esto parece una clara ventaja frente al uso de objetos en entornos limitados (un solo programa, una librería que sólo puede ser usada en determinado lenguaje/sistema operativo, etc).
Este fichero IDL es el que establece el contrato entre nuestros objetos y las aplicaciones que hagan uso de ellos. Así, este fichero es lo único que necesita una aplicación cliente para acceder a nuestros objetos (aparte, por supuesto, de una implementación de CORBA), pues a partir de él puede generar los cabos y esqueletos (ver siguiente sección) para el lenguaje que vaya a ser usado para la implementación de los clientes. Es decir, el cliente no necesita de unas librerías específicas desarrolladas por nosotros para acceder a nuestros objetos, sino que simplemente necesita la definición de los interfaces implementados por nuestros objetos. CORBA se encarga del resto, como veremos a continuación.
Los tipos de datos básicos que podemos usar en IDL son: long, string, float, double, boolean. En cuanto a los tipos de datos compuestos, tenemos: struct, enum, sequence.
Aparte de métodos, tambien podemos definir propiedades para nuestros objetos. Para ello, se usa la palabra clave attribute, como se muestra a continuación:
interface MiInterfaz { attribute string atributo_cadena; readonly attribute atributo_solo_lectura; };
Como vemos en el ejemplo, tambien podemos definir atributos de sólo lectura. Por cada atributo que definamos en el interfaz, el compilador IDL (que veremos a continuación) genera dos funciones/métodos en el lenguaje que vayamos a usar. Un método es para establecer (set) el valor del atributo, mientras que el otro es para obtener (get) dicho valor. Para los atributos de sólo lectura, sólo se genera una función/método: para obtener el valor, pero no la función para modificarlo.
<< La Historia de CORBA en el proyecto GNOME | ORBit, la implementación de CORBA de GNOME >> |