Programacin Concurrente y Distribuida Prcticas Tema 2 Sistemas
Programación Concurrente y Distribuida Prácticas Tema 2: Sistemas Distribuidos con CORBA 1
Tema 2: Sistemas Distribuidos con CORBA Índice: 1. ¿Qué es CORBA? 2. Arquitectura de un sistema CORBA 3. Alternativas a CORBA 4. El lenguaje IDL 2
Tema 2: Sistemas Distribuidos con CORBA 1. ¿Qué es CORBA? v CORBA NO es: Ø Ni un lenguaje de programación Ø Ni un sistema operativo v CORBA es un estándar de la OMG que: Ø Establece una forma de construcción de software ínter operativo empleando tecnología orientada a objetos v CORBA es sólo una especificación Ø Dicha especificación es implementada por las distintas plataformas que construyen los fabricantes v Dicha especificación recoge: Ø La forma en que se define la interfaz de los objetos Ø Cómo dichos objetos interactúan con ellos Ø Servicios y facilidades disponibles a los objetos 3
Tema 2: Sistemas Distribuidos con CORBA 1. ¿Qué es CORBA? v CORBA nos proporciona… v Independencia de lenguaje de programación Ø IDL (Interface Definition Language): Lenguaje neutral que permite definir las interfaces de los objetos Ø Los objetos se implementan en nuestro lenguaje habitual de programación Ø La traducción de IDL a los distintos lenguajes de programación está estandarizada (¡y automatizada!) v Independencia de sistema operativo y hardware Ø La especificación recoge… • Los protocolos por los que interactúan los objetos • La forma en la que se representan y transmiten los datos v Independencia de localización física de los objetos 4
op 1() metodo 2() op. A() metodo. A() … metodo 1() … atributo 1 op. Atrib 1() atributo 2 … Tema 2: Sistemas Distribuidos con CORBA 1. ¿Qué es CORBA? 5
Tema 2: Sistemas Distribuidos con CORBA Índice: 1. ¿Qué es CORBA? 2. Arquitectura de un sistema CORBA 3. Alternativas a CORBA 4. El lenguaje IDL 6
Tema 2: Sistemas Distribuidos con CORBA 2. Arquitectura de un sistema CORBA Objeto 1 AO ORB Objeto 1 Facilidades CORBA Servicios CORBA ORB IIOP AO ORB 7
Tema 2: Sistemas Distribuidos con CORBA 2. Arquitectura de un sistema CORBA Servicios CORBA v Implementan funciones de bajo nivel de uso habitual v Interfaz estandarizada v Implementación de cada servicio es opcional v Algunos servicios definidos en estándar: Ø Servicio de nombres Ø Servicio de localización Ø Servicio de eventos Ø Servicio de propiedades Objeto 1 AO Objeto 1 Servicios CORBA Facilidades CORBA ORB AO ORB IIOP 8
Tema 2: Sistemas Distribuidos con CORBA 2. Arquitectura de un sistema CORBA Facilidades CORBA v Implementan funciones de alto nivel de uso habitual v Tipos de facilidades: Ø Horizontales: común a cualquier tipo de aplicación Ø Verticales: específicas a un ámbito determinado v Facilidades horizontales: Ø Interfaz de usuario Ø Administración de información Ø Administración de sistemas Ø Administración de tareas Objeto 1 AO Objeto 1 Servicios CORBA Facilidades CORBA ORB AO ORB IIOP 9
Tema 2: Sistemas Distribuidos con CORBA 2. Arquitectura de un sistema CORBA ORB (Object Request Broker) v Actúa como un bus de interconexión de objetos v Gestiona: Ø comunicación entre objetos Ø Transferencia de datos (Marshalling/Unmarshalling) IIOP (Internet Inter-ORB Protocol) v Permite interoperación entre ORB’s v Basado en TCP/IP v No es el único protocolo Inter. ORB Objeto 1 AO Objeto 1 Servicios CORBA Facilidades CORBA ORB AO ORB IIOP 10
Tema 2: Sistemas Distribuidos con CORBA 2. Arquitectura de un sistema CORBA Adaptador de Objetos v Actúa como interfaz entre ORB y objetos v CORBA estandariza interfaz de adaptador Ø CORBA 1. 0: BOA (Basic Object Adapter) Ø CORBA 2. 0, 3. 0: POA (Portable Object Adapter) v Funciones: Ø Activación de objetos Ø Mapeo entre interfaces y sus implementaciones Ø… Objeto 1 AO Objeto 1 Servicios CORBA Facilidades CORBA ORB AO ORB IIOP 11
Tema 2: Sistemas Distribuidos con CORBA Índice: 1. ¿Qué es CORBA? 2. Arquitectura de un sistema CORBA 3. Alternativas a CORBA 4. El lenguaje IDL 12
Tema 2: Sistemas Distribuidos con CORBA 3. Alternativas a CORBA v Programación mediante interfaz de sockets Ø ¡Muy bajo nivel! v RPC (Remote Procedure Call) Ø Protocolo de llamada a procedimientos remotos Ø Más bajo nivel v DCE (Distributed Computing Environment) Ø Conjunto de servicios estandarizados de OSF Ø Idea similar a CORBA Ø Murió v DCOM (Distributed Component Object Model) Ø Tecnología propietaria de Microsoft Ø Sólo para plataformas Windows Ø Relativamente robusto Ø Abandonada a favor de. NET 13
Tema 2: Sistemas Distribuidos con CORBA 3. Alternativas a CORBA v PVM (Parallel Virtual Machine) Ø Librerías C/C++ para programación distribuida Ø Muy usado en ingeniería y matemáticas Ø Versión 3: ¡ 1993! Ø http: //www. csm. ornl. gov/pvm/ v SR (Synchronizing Resources) Ø Lenguaje de programación de la universidad de Arizona Ø Exclusivamente empleado en ámbito universitario Ø http: //www. cs. arizona. edu/sr/ v MPD (Multithreaded, Parallel and Distributed) Ø Sucesor de SR Ø http: //www. cs. arizona. edu/mpd/ 14
Tema 2: Sistemas Distribuidos con CORBA 3. Alternativas a CORBA v Java RMI Ø Arquitectura muy similar a CORBA (compatible desde JDK 1. 2) Ø Ventaja: paso de objetos por valor Ø Inconveniente: implementación ligada a interfaz v. NET Remoting Ø Interfaz de invocación remota de plataforma. NET Ø Similar a CORBA y a Java RMI Ø Sólo plataforma. NET (. NET 3. 0 forma parte de Windows Vista) v Servicios Web Ø Colección de protocolos y estándares que sirve para intercambiar datos entre aplicaciones Ø Especificación de interfaces: WSDL Ø Transporte: HTTP Ø Invocación remota: SOAP Ø Representación de datos: XML 15
Tema 2: Sistemas Distribuidos con CORBA 3. Alternativas a CORBA Inconvenientes de CORBA v Complejo y extenso v Diferencias importantes entre fabricantes de plataformas v Tecnología en evolución v ¿Poco futuro? 16
Tema 2: Sistemas Distribuidos con CORBA Índice: 1. ¿Qué es CORBA? 2. Arquitectura de un sistema CORBA 3. Alternativas a CORBA 4. El lenguaje IDL 17
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 18
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 19
Tema 2: Sistemas Distribuidos con CORBA 4. 1 Notas generales v Interface Definition Language: no hay sentencias “ejecutables” v Permite definir: Ø Interfaces, compuestas por • Atributos • Operaciones Ø Tipos y constantes Ø Excepciones Ø Agrupaciones de todo lo anterior (módulos) 20
Tema 2: Sistemas Distribuidos con CORBA 4. 1 Notas generales Aspectos léxicos v Mayúsculas y minúsculas: Ø Son distintas, PERO… Ø …en un mismo ámbito, dos identificadores no se pueden diferenciar sólo en su uso v Toda declaración termina en “; ” v Comentarios: Ø Estilo C++: // comentario hasta final de línea Ø Estilo C: /* Comentario hasta cierre de comentario */ v Existe preprocesador léxico: Ø #define, #include, #ifdef…#endif, #ifndef. . . #endif, etc. v Normalmente: archivos con terminación “. idl” 21
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 22
Tema 2: Sistemas Distribuidos con CORBA 4. 2 Concepto de mapping v Definición: Elementos o construcciones del lenguaje destino al que se traduce cada elemento IDL v Mapping está normalizado para los distintos lenguajes: Ø Java Ø C++ Ø Ada Ø… 23
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 24
Tema 2: Sistemas Distribuidos con CORBA 4. 3 El tipo interface v Es un tipo compuesto en IDL v Define una interfaz de objetos v Mapping: se traduce a una interfaz Java Ø El traductor genera cierta infraestructura para cada interfaz v Sintaxis de la declaración básica: interface nombre { // declaración de atributos [readonly] attribute tipo nombre_atributo; readonly attribute long contador; attribute string nombre; // declaración de operaciones }; [oneway] tipo nombre_operacion (modo tipo nombre_param 1, …); long calculo (in long a, in long b); void generar (inout long clave, out string resultado); oneway void registrar (in string nombre); 25
Tema 2: Sistemas Distribuidos con CORBA 4. 3 El tipo interface v No hay sobrecarga en IDL Ø ¿La soportaría cualquier lenguaje al que se traduzca? v No pueden coincidir los nombres de una operación y un atributo v No existen Ø Constructores Ø Destructores Ø Modificadores de acceso (private, public, protected) v Mapping atributos: Ø Una operación de lectura y otra de escritura (si no readonly) interface nombre { attribute contador; readonly long attribute long contador; … interface nombre { int contador(); // Accessor void contador(int value); // Mutator … 26
Tema 2: Sistemas Distribuidos con CORBA 4. 3 El tipo interface v Mapping operaciones: métodos Java Ø Parámetros en modo out o inout: clases envoltura Ø Usa clases envoltura específicas de CORBA en lugar de Java: Ejemplo: org. omg. CORBA. int. Holder v En CORBA: tipo interfaz siempre es un tipo por referencia Ø Nunca se pasan objetos CORBA por valor 27
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 28
Tema 2: Sistemas Distribuidos con CORBA 4. 4 Tipos predefinidos Tipo IDL Descripción Mapping Java void Tipo nulo void boolean Tipo lógico boolean char Carácter básico char wchar Carácter ampliado (dep. implementación) char float Número real float double Número real de doble precisión double long double Número real largo de doble precisión double long Número entero (32 bits) int long Número entero largo (64 bits) long unsigned long Número entero (32 bits) sin signo int unsigned long Número entero largo (64 bits) sin signo long 29
Tema 2: Sistemas Distribuidos con CORBA 4. 4 Tipos predefinidos Tipo IDL short Descripción Entero corto (16 bits) Mapping Java short unsigned short Entero corto (16 bits) sin signo short octect Byte (8 bits) byte string Cadena de caracteres String 30
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 31
Tema 2: Sistemas Distribuidos con CORBA 4. 5 Constantes v Sintaxis: const tipo nombre= valor; v Se puden declarar… Ø Dentro de una interfaz Ø Fuera de cualquier interfaz v Mapping: const tipo nombre=valor; interface nombre. Interface { const tipo nombre=valor; … } interface nombre { public static final tipo value=valor; } interface nombre. Interface { public static final tipo nombre=valor; … } 32
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 33
Tema 2: Sistemas Distribuidos con CORBA 4. 6 Tipos compuestos Enumerados v Sintaxis: enum nombre_enumerado {literal 1, literal 2, … literaln}; v Mapping: public class nombre_enumerado implements org. omg. CORBA. portable. IDLEntity { private int __value; … public static final int _literal 1 = 0; public static final nombre_enum literal 1 = new nombre_enum(_literal 1); … protected nombre_enum (int value) { __value = value; … } … 34
Tema 2: Sistemas Distribuidos con CORBA 4. 6 Tipos compuestos Enumerados (cont. ) v No se puede suponer relación de orden entre los literales v Uso: nombre_enumerado literal 1 nombre_enumerado var 1= nombre_enumerado. literal 1; nombre_enumerado var 2= var 1; … if (var 1 == var 2) … literal 2 … literaln Cierto si var 1 y var 2 apuntan al mismo objeto 35
Tema 2: Sistemas Distribuidos con CORBA 4. 6 Tipos compuestos Estructuras v Sintaxis: struct nombre_structura { tipo 1 campo 1; … tipon campon; }; v Mapping: public final class nombre_struct implements org. omg. CORBA. portable. IDLEntity { public tipo 1 campo 1 = …; … public nombre_struct (tipo 1 _campo 1, …) { campo 1 = _campo 1; … }… 36
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 37
Tema 2: Sistemas Distribuidos con CORBA 4. 7 Creación de tipos v Sintaxis: typedef tipo nombre_tipo; v Mapping: No ha lugar Ø El nombre de tipo creado se sustituye por el tipo equivalente v Uso principal: tipos contenedores Ø Sólo se pueden crear mediante typedef 38
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 39
Tema 2: Sistemas Distribuidos con CORBA 4. 8 Tipos contenedores Arrays v Los atributos de tipo array deben declararse mediante typedef v Sintaxis: typedef tipo_base tipo_array [tamaño]; … interface I { tipo_array atributo 1; … } v Mapping: array Java del tipo resultante de aplicar mapping al tipo base v Tamaño de array siempre es fijo Ø Rango del índice: depende de lenguaje de programación 40
Tema 2: Sistemas Distribuidos con CORBA 4. 8 Tipos contenedores Secuencias v Secuencia: sucesión de elementos del mismo tipo (lista) v Los atributos de tipo secuencia deben declararse mediante typedef v Dos tipos de secuencias: Ø Limitadas (bounded) Ø Ilimitadas (unbounded) v Sintaxis: typedef sequence<tipo_base> tipo_secuencia; // Ilimitada typedef sequence<tipo_base, tamaño> tipo_secuencia; // limitada … interface I { tipo_secuencia atributo 1; … 41
Tema 2: Sistemas Distribuidos con CORBA 4. 8 Tipos contenedores Secuencias (cont. ) v Mapping: array Java del tipo resultante de aplicar mapping al tipo base v En Java, tanto arrays como secuencias: Ø ¡Una referencia nula a un array java no es una secuencia ni un array válido! 42
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 43
Tema 2: Sistemas Distribuidos con CORBA 4. 9 Herencia v IDL soporta herencia múltiple v Sintaxis: A B C 1 interface A { … }; interface B { … }; interface C: A, B { … }; v Mapping: las interfaces Java generadas reflejan la relación de herencia entre las interfaces IDL Ø (En Java sí es posible herencia múltiple entre interfaces) 44
Tema 2: Sistemas Distribuidos con CORBA 4. 9 Herencia v Los métodos no se pueden… Ø Sobrecargar Ø Redefinir Ø Ocultar v Si se emplea herencia múltiple: no se puede heredar de clases con nombres coincidentes de atributos y/o operaciones Ø ¿Lo soportaría el lenguaje destino? 45
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 46
Tema 2: Sistemas Distribuidos con CORBA 4. 10 Excepciones v Las operaciones de los objetos CORBA pueden lanzar excepciones Ø Excepciones se lanzan en servidor y se capturan en cliente v IDL permite por tanto: Ø Declarar tipos de excepciones Ø Declarar qué excepciones puede lanzar cada operación v Sintaxis de declaración de tipo excepción: exception nombre { tipo_campo 1; tipo_campo 2; … }; exception otraexcepcion { }; v Se pueden declarar excepciones dentro o fuera de una interfaz v No se pueden crear jerarquías de excepciones mediante herencia 47
Tema 2: Sistemas Distribuidos con CORBA 4. 10 Excepciones v Sintaxis de declaración de excepciones lanzadas por una operación interface nombre_interface { tipo nombre_oper (modo tipo nombre_param 1, …) raises (excep 1, excep 2…); … }; public final class nombre extends org. omg. CORBA. User. Exception { v Mapping: tipo_campo 1; tipo_campo 2; exception nombre … { public nombre() {…} tipo_campo 1; public nombre(tipo_campo 1, …) {…} tipo_campo 2; public nombre (String $reason, tipo_campo 1 … campo 1, …) {…} }; } 48
Tema 2: Sistemas Distribuidos con CORBA 4. 10 Excepciones v Mapping (cont. ) interface nombre_interface { tipo nombre_oper (modo tipo nombre_param 1, …) raises (excep 1, excep 2…); … }; … tipo nombre_oper (tipo nombre_param 1, …) throws excep 1, excep 2, … { … } … v En Java, todas las excepciones declaradas en IDL heredan de org. omg. CORBA. User. Exception v Si implementación de una operación lanza excepción no 49 declarada en IDL: UNKNOWN_EXCEPTION
Tema 2: Sistemas Distribuidos con CORBA 4. El lenguaje IDL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos 50
Tema 2: Sistemas Distribuidos con CORBA 4. 11 Módulos v Módulo=agrupación lógica de declaraciones en IDL Ø Puede contener declaraciones de todo lo expuesto hasta el momento (incluso módulos) v Sintaxis: module nombre { // declaraciones IDL … }; v Mapping: paquetes Java Ø Por cada módulo, se genera un paquete de mismo nombre Ø Todo lo declarado en dicho módulo se incluye dentro de dicho paquete 51
52
- Slides: 52