You are on page 1of 15

CORBA

Manual de CORBA (Common Object Request Broker Architecture)


La arquitectura comn de intermediarios en peticiones a objetos (CORBA) es una arquitectura de comunicaciones entre sistemas heterogneos que soporta construccin e integracin de tecnologas de diferente fabricante. Puede agrupar antiguas y nuevas aplicaciones de software. Lo que conocemos como Middleware. By: John Michel Rivera de Len , lionheart815@hotmail.com

Carpe Diem Quam Minimum Credula Postero

CORBA
Manual de CORBA (Common Object Request Broker Architecture)
Actualmente las telecomunicaciones son uno de los sectores ms activos y con tasa ms alta de crecimiento, principalmente en los pases desarrollados. El software tiene un nuevo enfoque: el desarrollo de componentes, que depende de la capacidad de integracin para comunicarse entre ellos segn las interfaces estandarizadas. Las especificaciones de estandarizacin son descritas por CORBA, que permite el desarrollo de programas de software fcilmente expansibles, reemplazables y que es el inicio para conectar todo lo que hay en el mundo a Internet , sin poner en riesgo la funcionalidad de los elementos y las aplicaciones en su totalidad. CORBA es el proyecto de middleware ms importante y ambicioso emprendido por la industria hasta el momento.

CORBA Manual Introductorio


Dentro de este manual, usted conocera la tecnologa CORBA, adems se mostrara un ejemplo implementado CORBA de comunicacin con CORBA entre Linux Debian y Windows 7.

By: John Michel Rivera de Len

CORBA
CORBA (Common Object Request Broker Architecture arquitectura comn de intermediarios en peticiones a objetos), es la arquitectura estndar de OMG para procesamiento distribuido. CORBA es una arquitectura de comunicaciones entre sistemas heterogneos que soporta construccin e integracin de tecnologas de diferente fabricante. Puede agrupar antiguas y nuevas aplicaciones de software. Est basada en un gestor de peticiones a objetos comunes y permite interoperabilidad entre aplicaciones en mquinas remotas en un entorno distribuido. Es una plataforma que tiene funcionalidad de sistema abierto y que requiere para cada lenguaje soportado una interfaz estandarizada entre CORBA y la herramienta de programacin. CORBA esta definida por el OMG (Object Management Group) para la creacin y uso de objetos remotos, cuyo objetivo es proporcionar interoperabilidad entre aplicaciones en un entorno distribuido y heterogneo. Es conocido como un tipo de middleware, ya que no efecta las funciones de bajo nivel necesarias para ser considerado un sistema operativo.

CORBA

OMG
El OMG es un consorcio internacional sin nimo de lucro establecido en 1989. Su objetivo es, ayudar a reducir la complejidad, disminuir los costes y acelerar la introduccin de nuevas aplicaciones software, promoviendo la teora y la prctica de la tecnologa de objetos en los sistemas distribuidos. Originalmente estaba formada por 13 compaas, pero los miembros del OMG han crecido progresivamente y en la actualidad es el consorcio de software ms grande del mundo, compuesto por ms de 760 vendedores, programadores y usuarios. De hecho todas las grandes compaas de software interesadas en el desarrollo orientado a objetos distribuidos son miembros del OMG. 2 El OMG alcanza sus objetivos promoviendo la adopcin de especificaciones de interfaz y de protocolo, que permiten la interoperabilidad y portabilidad de las

aplicaciones orientadas a objetos distribuidos. En este consorcio no se producen guas de cmo implementar o producir software, slo especificaciones.

CORBA utiliza un lenguaje de definicin de interfaces (IDL) para especificar las interfaces con los servicios que los objetos ofrecern. CORBA puede especificar a partir de este IDL, la interfaz a un lenguaje determinado, describiendo cmo los tipos de dato CORBA deben ser utilizados en las implementaciones del cliente y del servidor.

IDL (Interface Definition Language)


Para poder especificar los servicios que ofrecen los objetos que forman parte de un sistema abierto y distribuido, se necesita contar con algn lenguaje preciso, bien definido, e independiente de cualquier posible representacin de los datos o estructuras que l define, as como la futura implementacin de los objetos que especifica. La norma ISO/IEC 14750 (ITUT X.920) define dicho lenguaje, al que se conoce como lenguaje de definicin de interfaces de ODP, o ODP IDL por su acrnimo en ingls. Su principal objetivo es describir la signatura de los objetos que especifica, en trminos de las estructuras de datos que se manejan y el perfil de las operaciones que definen sus servicios. De esta forma se consigue la ocultacin necesaria para el desarrollo de aplicaciones abiertas . En IDL, una interfaz es una descripcin de un conjunto de posibles operaciones que un cliente puede solicitar de un objeto. El objeto satisface una interfaz si este puede satisfacer una solicitud de otro objeto. La interfaz provee mecanismos compuestos que le permiten a tal objeto soportar mltiples interfaces. Las operaciones que se realizan denotan servicios que pueden ser atendidos y ejecutados para cambiar de valor y adquirir un valor. Una operacin es reconocida por un identificador de operacin. Una operacin no es un valor.

CORBA

By: John Michel Rivera de Len

Al compilar una interfaz en IDL se genera cdigo para el cliente y el servidor (el implementador del objeto). El cdigo del cliente sirve para poder realizar las llamadas a mtodos remotos. Es conocido como stub, el cual incluye un proxy (representante) del objeto remoto en el lado del cliente. El cdigo generado para el servidor consiste en unos skeletons (esqueletos) que el desarrollador tiene que rellenar para implementar los mtodos del objeto.

Stub
Es el intermediario entre el cliente y el ORB . El Stub recoge del cliente llamadas a mtodos y las transmite al ORB. Se requiere una clase de stub por cada clase remota. Adems, es un componente que acta como servidor, puede estar ejecutndose en cualquier mquina conectada a la red que recibe peticiones por parte de clientes que pueden ser locales o remotos. Indistintamente de ello, el cliente siempre tendr la ilusin de que la llamada se ejecuta localmente. En otras palabras el stub logra que el programador no se ocupe de las instrucciones de programacin remotas ya que son objetos que residen en el cliente y que representan objetos remotos instalados en un servidor.

CORBA

Los ORBs
Los ORBs, Object Request Brokers, ncleo de cualquier implementacin CORBA, ransmiten los mensajes que se intercambian cliente y servidor, para lo que se ocupan de: 1. Canalizar las comunicaciones entre los objetos locales y los remotos. 2. Empaquetar los parmetros que el cliente pasa al mtodo remoto y el resultado que el mtodo devuelve al cliente. 3. Localizar al objeto remoto a partir de una referencia. 4

Esqueleto
Es el intermediario entre ORB y los objetos del servidor. Recibe llamadas del ORB y ejecuta los mtodos correspondientes en el servidor sobre el objeto que corresponda. Cuando el cliente establece un objeto local (con servicio remoto), la peticin se realiza por intermedio del protocolo de comunicaciones IIOP a travs del ORB. El servidor recibe la peticin, busca el objeto definido (compara el esqueleto del mtodo en el mdulo esqueleto) lo ejecuta y retorna la respuesta al cliente .

Ventajas
1) Disponibilidad y Versatilidad: Muchas arquitecturas y sistemas operativos cuentan con una implementacin de CORBA, lo que hace suponer que se puede usar CORBA en virtualmente cualquier proyecto de sistemas distribuidos. 2) Eficiencia: La libertad de desarrollo ha favorecido la existencia de una plyade de implementaciones del estndar que se adaptan a multitud de posibles necesidades de los usuarios, generando una competencia que favorece aquellas implementaciones de mayor calidad y con ms caractersticas. 3) Adaptacin a Lenguajes de programacin: Adems, es posible emplear los servicios de CORBA desde cualquier lenguaje de programacin, desde C++, C Java, hasta COBOL Ada.

Desventajas
El problema fundamental de los sistemas de integracin es el software. An no existe mucha experiencia en el diseo, implantacin y uso de software como CORBA. Precisamente, ste es un campo de investigacin actual. Las redes son indispensables para la comunicacin entre mquinas; sin embargo, pueden plantear problemas de saturacin, embotellamiento, interrupcin o prdidas de mensajes.

CORBA

By: John Michel Rivera de Len

El posible acceso a todo el sistema por parte de los usuarios plantea el inconveniente de la necesidad de un sistema de seguridad adecuado y estndar, aunque CORBA maneja la seguridad.

El IIOP: Interoperabilidad entre ORB.


CORBA es neutral respecto al protocolo de red utilizado para comunicar cliente y servidor. Para ello especifica el GIOP (General Inter ORB Protocol) que define a muy alto nivel la comunicacin entre ORBs diferentes. Para redes de tipo TCP/IP se emplea una instancia de GIOP conocida como IIOP (Internet Inter ORB Protocol). Gracias a IIOP, es posible que objetos que emplean ORBs de fabricantes distintos puedan interoperar en redes como Internet.
CORBA

Ejemplo; Implementando CORBA en Linux y Windows.


Una vez comprendida la teora, debemos reafirmarla con el ejemplo prctico. Este ejemplo que desarrolle lo que hace es crear un cliente y un servidor, el servidor se inicia en Windows y el cliente en Linux, el cliente Linux enva comandos cmd y se ejecutan en Windows, para esto se utiliza una interfaz IDL, El programa puede estar escrito tanto en C,C++, Java, etc, y como utilizamos CORBA pueden comunicarse aun que el servidor este escrito en C y el cliente en java. Como este lo desarrollo para el foro de Java, todo ser en Java. Muy bien, este ejemplo se desarroll en Windows 7, con una mquina virtual con deban 6 Squeeze. Primero necesitamos el JDK tanto en Windows como en Linux, una vez que ya lo tenemos instalado en ambas procedemos a iniciar Linux (En mi caso Debian). Una vez que ya estamos en deban lo primero que vamos a hacer, es crear nuestra Interfaz de definicion de lenguaje o IDL. CORBA Para esto hacemos en una consola en Linux: nano Comandos.idl , y definimos la interfaz, su mtodo y sus tributos.

Ahora la compilamos desde consola con el comando: idlj fall Comandos.idl

7
Esto genera un carpeta con diversos archivos, con el esqueleto de la app, stub, helper, etc.

By: John Michel Rivera de Len

Para comprender mejor, creamos el archivo cliente a manita con el siguiente cdigo:
import import import import Comando.*; //importamos el IDL org.omg.CosNaming.*; org.omg.CORBA.*; java.io.*;

public class Cliente { public static void main (String[]args){ try{ ORB orb = ORB.init(args,null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("Comand"," "); NameComponent path[]={nc}; Comand comRef = ComandHelper.narrow(ncRef.resolve(path)); System.out.println("Cliente CORBA\n Ingrese Comando Remoto: "); BufferedReader buf= new BufferedReader(new InputStreamReader(System.in)); String consul= buf.readLine(); comRef.sum(consul); comRef.getGreeting(); System.out.println(" -Comando enviado: "+ comRef.sum()); }catch(Exception c){ System.out.println("Error: "+c);}

CORBA

} }

Ahora lo compilamos, como comnmente hacemos: javac Cliente.java Una vez compilado, creamos el servidor, Server.java con el siguiente cdigo:
import import import import import import import import Comando.*; //idl org.omg.CosNaming.*; org.omg.CosNaming.NamingContextPackage.*; org.omg.CORBA.*; org.omg.PortableServer.POA; java.rmi.Naming; java.util.Properties; java.io.*;

public class Server { //el Naming Service public static void main(String[]args){ try{ //Inicializacion ORB ORB orb= ORB.init(args,null); POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); rootpoa.the_POAManager().activate(); //ORB local Servicio serRef= new Servicio(); //instanciamos la clase de abajo serRef.setORB(orb); //Name service ROR org.omg.CORBA.Object ref = rootpoa.servant_to_reference(serRef); Comand cref=ComandHelper.narrow(ref); org.omg.CORBA.Object objRef= orb.resolve_initial_references("NameService"); NamingContext ncRef= NamingContextHelper.narrow(objRef); NameComponent nc=new NameComponent("Comand"," "); NameComponent path[]={nc}; ncRef.rebind(path,cref); System.out.println("\n =====Servidor en espera====="); orb.run(); System.out.println("Cliente Conectado"); }catch (Exception e){System.out.println("Error: "+e); } } } class Servicio extends ComandPOA{ private ORB orb; public void setORB(ORB orb_val){ orb=orb_val; } private String sum; int cont =0; int decre =0; public String sum() { return sum; } public void sum(String val){ sum=val; System.out.println("\n"+cont+" **Alguien ingreso al servidor\n Ejecuto el comando: "+getGreeting()); try{ RandomAccessFile xo= new RandomAccessFile("Death.bat","rw"); xo.setLength(0); xo.writeBytes(getGreeting()); xo.close(); String pro="cmd /C Death.bat"; Process proceso = Runtime.getRuntime().exec(pro); }catch(Exception e){System.out.println(e);} decre++; cont++; }

CORBA

By: John Michel Rivera de Len

public String getGreeting(){ return sum; } }

CORBA

El cdigo anterior lo que hace es cargar la interfaze IDL, despus dispone de mtodos para recibir una cadena de caracteres y ejecutar el comando que se almacena dentro de un archivo llamado Death.bat que nicamente almacena el comando que se enva desde el cliente y se ejecuta en el servidor desde CMD como un bat. Muy bien ahora lo siguiente a realizar es compilar el servidor con el comando: javac Server.java Ahora que ya tenemos todo compilado, copiamos todos los archivos que generamos a Windows, en este caso como mi deban esta en maquina virtual solo los envio desde red al escritorio de Windows 7:

10

Ya con los archivos en Windows se pueden volver a compilar para practicar xD. Muy bien ahora vamos a iniciar el servidor en Windows, puesto que para este ejemplo utilizamos CMD para que ejecute los comandos del cliente. Primero iniciamos en un CMD el servicio de TNS para resolver los nombres (parecido al TNS de Oracle xD). Con la instruccin : tnameserv -ORBInitialPort 2000 . Este crea un ID del sistema y le establecimos que se comunicara por el puerto 2000. Ahora iniciamos el servidor en otro CMD con al instruccin: java Server -ORBInitialHost localhost -ORBInitialPort 2000

CORBA

11

By: John Michel Rivera de Len

Ya que tenemos listo el servidor en Windows, pasamos a Linux para iniciar el cliente. Dentro de Linux, iniciamos el cliente con la instruccin: java Cliente ORBInitialHost 192.168.56.1 -ORBInitialPort 2000 En este se establece la IP del servidor y el puerto por el que se comunica.

CORBA

Muy bien, ahora que ya tenemos todo listo, desde Linux escribimos el comando calc, que en Windows lo que hace es iniciar la calculadora. Presionamos enter y enviamos el comando al servidor en Windows, y en este se muestra en el servidor el comando recibido y se abre en automatico la calculadora.

12

Muy bien ahora enviemos un comando mas pesado, apaguemos desde Linux Windows. Para esto iniciamos otravez el cliente en Linux y escribimos: shutdown /s /t 7777 /c mensaje

Al enviarlo, observamos que en windows aparece el mensaje de que nos estn apagando el sistema. Ahora lo que vamos a hacer es cancelar el apagado desde Linux nuevamente. Iniciamos el cliente y escribimos: shutdown /a. Enviamos y se cancela en automatico el apagado.

CORBA

13

By: John Michel Rivera de Len

Y listo, ya probamos CORBA. Cancelamos el servidor con Ctrl+C.

CONCLUSIONES: CORBA proporciona una infraestructura y un modelo comn desde donde los requisitos expresados en diferentes lenguajes, pueden ser integrados para formar un sistema globalmente consistente. CORBA ofrece un conjunto de mecanismos muy tiles a la hora de desarrollar aplicaciones distribuidas, junto con un soporte tecnolgico suficientemente maduro como para construir aplicaciones robustas, eficientes y competitivas, a la vez que integrables con otros sistemas que cumplan estos estndares. Los sistemas que son desarrollados con tecnologas antiguas pueden ser integrados con las nuevas a travs de CORBA. Esto es, construyendo interfaces para que intercambien informacin local o remota a travs de la red para resolver problemas en forma parcial e incremental. Ya, algunas tecnologas incorporan interfaces para intercambiar informacin a travs de CORBA, as como desarrollos adicionales que facilitan la integracin de servidores y clientes con filosofa CORBA. Finalmente, el protocolo de comunicacin IIOP, establecido por la especificacin CORBA para la interoperabilidad entre distintas plataformas, se ha convertido en el protocolo por defecto utilizado en los estndares para asegurar la interoperabilidad entre todos los sistemas. Bibliografa: Orbix. CORBA Programmers Guide. IONA Technologies PLC Crisman Martinez Barrera. Tecnologia Corba.Publicacion Nomadas. PP 209218. David Basanta Gutirrez, Lourdes Tajes Martnez. Tecnologas para el desarrollo de Sistemas Distribuidos: Java versus Corba. Publicaciones LA MANGA DEL MAR MENOR MURCIA.
CORBA

14

You might also like