TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA j y II Objetos distribuidos y CORBA II. Objetos distribuidos y CORBA 1. Objetos Distribuidos 2. CORBA 1. Características 2. Modelo de trabajo M d l d t b j 3. ORB 4. Arquitectura 5. Localización de objetos 6. Servicios de CORBA 7. IDL Objetos distribuidos y Objeto: “entidad que encapsula información de estado privada o Objeto: entidad que encapsula información de estado privada o datos y un conjunto de operaciones asociadas para manipular los datos” y Cada instancia de un objeto en memoria es una entidad diferenciada y Al ser una instancia tienen un ciclo de vida: se crean, usan y destruyen. y Permiten descomponer las tareas en componentes más pequeños y reutilizables con un comportamiento bien definido. y La aplicación de la POO en entornos distribuidos da lugar a la aparición de sistemas basados en objetos distribuidos. y Muy similar a las LPR, sólo que se invocan operaciones sobre objetos y normalmente se transfieren no sólo parámetros, sino objetos y normalmente se transfieren no sólo parámetros sino objetos completos. y Los objetos siguen teniendo un estado y un ciclo de vida y DCOM, OLE, CORBA y Jini DCOM OLE CORBA y Jini son algunos ejemplos. son algunos ejemplos Arquitecturas Distribuidas 09/10 3 CORBA y Common Object Request Broker Architecture yC Creado por el Object p j Management Group g p (O (OMG) en 1989 G) 9 9 y Aboga por promover el uso de sistemas abiertos con interfaces estándar orientadas a objetos, sobre plataformas heterogéneas. heterogéneas y Es una especificación de una sofisticada arquitectura de objetos distribuidos. Es independiente del lenguaje de programación. ió y A partir de la especificación se desarrollan una serie de librerías de programación que proporcionan funcionalidad p g q p p común (infraestructura). y Existen implementaciones para distintos lenguajes de programación. programación Arquitecturas Distribuidas 09/10 4 Características de CORBA y Posee lenguaje específico para la definición de interfaces: IDL (Interface Definition ( f f Language) g g ) y Tipos: primitivos y estructurados y El IDL es independiente del lenguaje de programación y Un lenguaje de programación utiliza un compilador de U l j d ió ili il d d interfaces específico para obtener los delegados del cliente y el servidor y Forma de paso de parámetros: y Primitivos y estructurados: por valor (in) o copia/restauración (out e inout) y Objetos CORBA: se identifican por referencia ROR (Referencia a Objeto Remoto) Arquitecturas Distribuidas 09/10 5 Características de CORBA y Excepciones remotas (definidas en las interfaces) yS Semánticas: á i y al‐menos‐una‐vez (por defecto) y quizás (opcionalmente) Æ i ( l ) Æ oneway en IDL Arquitecturas Distribuidas 09/10 6 Características de CORBA y Proporciona transparencia (para el programador): y De la plataforma D l l t f y Del nivel de transporte y Del sistema operativo D l i i y Del lenguaje y De la implementación D l i l ió y De localización Arquitecturas Distribuidas 09/10 7 Modelo de trabajo habitual j y El programador define las interfaces remotas, a través del lenguaje IDL (independiente del lenguaje de programación) y El compilador de interfaces (CI) genera delegados para el cliente y el servidor (en un lenguaje de programación en particular) y Pueden usarse diferentes lenguajes en cliente y servidor y Ni el cliente ni el servidor tienen porque estar basados en un lenguaje OO Arquitecturas Distribuidas 09/10 8 Ejemplo Arquitecturas Distribuidas 09/10 9 Modelo de trabajo habitual j 1. 2. 3. 4. 5. 6. 7. El programador define las interfaces remotas, a través del lenguaje IDL g j Servidor: se genera el delegado mediante el CI Servidor: Se implementa el código del objeto servidor p g j Servidor: Se compila junto con el delegado creado, da lugar a un ejecutable Cl Cliente: se genera el delegado mediante el CI. l d l d d l C Cliente: Se implementa el código del objeto cliente Cli t Cliente: se compila junto con el delegado creado, da il j t l d l d d d lugar a un ejecutable Arquitecturas Distribuidas 09/10 10 ORB y La arquitectura de CORBA se basa en el uso de un componente que hace de puente entre diferentes plataformas llamado ORB y Object Request Broker (mediador en peticiones a objetos). y Encargado de la comunicación transparente entre clientes y los métodos de un objeto. y Localizar el objeto, activarlo y pasarle la solicitud. j yp y Es un servicio (programa) que se ejecuta tanto en el cliente como en el servidor. Arquitecturas Distribuidas 09/10 11 Arquitectura q Objeto de Implementación Cliente PETICIÓN ORB Arquitecturas Distribuidas 09/10 12 Arquitectura q y Versión inicial de CORBA aprobada en 1991 yE En 1996: CORBA 2.0 6 CORBA y GIOP (General Inter‐ORB Protocol) y y y Normas que permiten que puedan cooperar N i d implementaciones de diferentes fabricantes Implementado sobre cualquier nivel de transporte En Internet, sobre TCP/IP: IIOP (Internet IOP) Arquitecturas Distribuidas 09/10 13 Interconexión de ORBs Arquitecturas Distribuidas 09/10 14 Arquitectura q Objeto de Implementación p e e ac ó Cliente Invocación Dinámica Stubs Interfaz ORB Interfaz ORB ORB Skeletons Skeletons dinámicos Adaptador de Objetos p j ORB GIOP/IIOP Arquitecturas Distribuidas 09/10 15 Localización de objetos z ¿Cómo puede contactar un cliente con un objeto? j z z z z Necesita una referencia ROR a dicho objeto Cada objeto posee ROR única ROR es generada en el Adaptador de Objetos Por medio de la ROR el ORB es capaz de localizar el ordenador remoto y el adaptador de objetos donde d d t l d t d d bj t d d se encuentra. Este último es capaz de identificar el objeto concreto dentro del adaptador. j p Arquitecturas Distribuidas 09/10 16 Localización de objetos j z En CORBA 2.0 se definen las ROR como: z Referencias a objetos interoperables (IOR): NOMBRE DEL TIPO DE LA INTERFAZ IDL IDENTIFICADOR DE DEPOSITO DE INTERFAZ z z PROTOCOLO DE TRANSPORTE Y DETALLES DE LA DIRECCIÓN IIOP NOMBRE DEL NÚMERO DEL ORDENADOR PUERTO CLAVE DEL OBJETO NOMBRE DEL OA NOMBRE DEL OBJETO EN EL OA IOR intercambiado a través del ORB tiene formato binario. Es posible conseguir un IOR “modo cadena” a partir d l f del formato binario y vicecersa: t bi i i string_to_object, object_to_string Arquitecturas Distribuidas 09/10 17 Localización de objetos j z ¿Cómo obtener ROR de un objeto? z A través de servicios especiales de CORBA z A partir de una IOR modo cadena: ‐ Desde un archivo: por NFS • A través de un protocolo de descarga de objetos: HTTP, FTP, OBEX, etc. Arquitecturas Distribuidas 09/10 18 Servicio de Nombres y Permite: y Enlazar nombres a ROR (páginas blancas) E l b ROR ( á i bl ) y Creación de contextos de nombramiento (CN) y Posee estructura jerárquica (como DNS) P j á i ( DNS) BIND (NOMBRE, OBJETO) Objeto Servidor Nombres Arquitecturas Distribuidas 09/10 RESOLVE (NOMBRE) Cliente RESPUESTA CONTIENE IOR DE OBJETO 19 Servicios CORBA y Conjunto de utilidades genéricas para cualquier aplicación distribuida aplicación distribuida. y Los más importantes son: y Nombres y Eventos y Notificación y Seguridad y Comercio y Transacciones y Control de la Concurrencia y Objetos persistentes Arquitecturas Distribuidas 09/10 20 Interface Definition Language Interface Definition Language y Permite definir y Módulos, interfaces, tipos, atributos y métodos. Módulos interfaces tipos atributos y métodos y Subconjunto de C++ con construcciones adicionales y Módulo y Permite agrupar interfaces y definiciones de tipos en unidades lógicas g y Define un espacio de nombres Arquitecturas Distribuidas 09/10 21 Interface Definition Language Interface Definition Language y 15 tipos primitivos: y octet, t t short, h t l long, unsigned i d short, h t unsigned i d long, float, double, char, boolean y Constantes de estos tipos: declaradas con const. y 6 tipos estructurados y Pasados siempre por valor y Arrays y secuencias: siempre definidos con typedef y any puede representar cualquier tipo primitivo o d t l i ti i iti estructurado Arquitecturas Distribuidas 09/10 22 Tipos estructurados en IDL Arquitecturas Distribuidas 09/10 23 Ejemplos IDL Ejemplos IDL // // h holamundo.idl l d idl // module hola { interface holamundo { void saludo(); }; }; Arquitecturas Distribuidas 09/10 24 Ejemplos IDL Ejemplos IDL // // h holamundo.idl l d idl // Se traduce a un package JJava module hola { interface holamundo { void saludo(); }; }; Arquitecturas Distribuidas 09/10 25 Ejemplos IDL Ejemplos IDL // // h holamundo.idl l d idl // module hola { interface holamundo { void saludo(); }; }; Se traduce a un interface Java Arquitecturas Distribuidas 09/10 26 Declaración de métodos en IDL Declaración de métodos en IDL interface nombre { tipo metodo1(in/out/inout tipo par1, in/out/inout tipo par2, ...); tipo metodo2(in/out/inout / / tipo par1, in/out/inout tipo par2, ...); ); ... tipo p metodoM(in/out/inout ( / / tipo p p par1, , in/out/inout tipo par2, ...); }; Arquitecturas Distribuidas 09/10 27 Referencias y bibliografía y g y Libros: y y “Client‐server programming with Java and CORBA”, Robert Orfali, Dan Harkey, 2nd ed, John Wiley & Sons, 1998. “ “ORBacus: User Guide v. 4.2.1”, IONA Technologies PLC. d ” h l Disponible en: y http //labit 01 upct es/ad/manuales/CORBA/ob 421 pdf http://labit501.upct.es/ad/manuales/CORBA/ob_421.pdf Arquitecturas Distribuidas 09/10 28 Referencias y bibliografía y g y IDL: y “AGETOR IDL guide”, AGETOR. Disponible en: y http://ait.upct.es/ad/manuales/IDL/IDL_guide.htm Arquitecturas Distribuidas 09/10 29