Professional Documents
Culture Documents
Mi Manual Corba
Mi Manual Corba
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
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.
CORBA
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
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.
7
Esto genera un carpeta con diversos archivos, con el esqueleto de la app, stub, helper, etc.
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
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
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
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