La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 2: Sistemas Distribuidos con CORBA

Presentaciones similares


Presentación del tema: "Tema 2: Sistemas Distribuidos con CORBA"— Transcripción de la presentación:

1 Tema 2: Sistemas Distribuidos con CORBA
Programación Concurrente y Distribuida Prácticas Tema 2: Sistemas Distribuidos con CORBA

2 Tema 2: Sistemas Distribuidos con CORBA
Índice: ¿Qué es CORBA? Arquitectura de un sistema CORBA Alternativas a CORBA El lenguaje IDL 2

3 Tema 2: Sistemas Distribuidos con CORBA
1. ¿Qué es CORBA? CORBA NO es: Ni un lenguaje de programación Ni un sistema operativo 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 CORBA es sólo una especificación Dicha especificación es implementada por las distintas plataformas que construyen los fabricantes 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 La especificación puede ser implementada o no en su totalidad por cada plataforma. Ahora bien, aquello que se implemente, debe hacerse de la manera que está especificado

4 Tema 2: Sistemas Distribuidos con CORBA
1. ¿Qué es CORBA? CORBA nos proporciona… 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!) 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 Independencia de localización física de los objetos La traducción IDL->lenguajes de programación se hace de manera automática por herramientas suministradas con las distintas plataformas CORBA. Estas herramientas generan parte de la infraestructura necesaria

5 Tema 2: Sistemas Distribuidos con CORBA
1. ¿Qué es CORBA? op1() op2() opA() metodo1() metodoA() metodo2() Hablando en prosa: Podemos considerar un sistema distribuido como un conjunto de objetos, implementado cada cual en su lenguaje y sobre su plataforma Mediante IDL, podemos definir una interfaz para cada objeto (click) que es lo que cada objeto ve de los demás La forma en que los objetos invocan a las operaciones (click) está normalizada por la especificación del estándar, y automatizada por la interfaz CORBA normaliza el Middleware (click) que hay que poner en medio de todo ello para que esto funcione. Se entiende como Middleware la capa de software que permite la interacción entre sistemas heterogéneos, en este caso de objetos. Haz notar que CORBA sigue el paradigma cliente/servidor: cuando A invoca un método de B, en esa ocasión concreta A es cliente y B es servidor Se puede ser cliente de un objeto CORBA sin ser un objeto Middleware opAtrib1() atributo1 atributo2

6 Tema 2: Sistemas Distribuidos con CORBA
Índice: ¿Qué es CORBA? Arquitectura de un sistema CORBA Alternativas a CORBA El lenguaje IDL 6

7 Tema 2: Sistemas Distribuidos con CORBA
2. Arquitectura de un sistema CORBA Objeto 1 Objeto 1 Un sistema CORBA se puede entener compuesto por objetos que interactúan entre ellos Estos objetos pueden interactuar también con Servicios y Utilidades CORBA: La interacción real se da a través del ORB (Object Request Broker) (click) Si en el sistema intervienen distintos ORBs, estos interactuan mediante protocolo IIOP (clicK) Servicios CORBA Facilidades CORBA AO AO ORB ORB ORB IIOP

8 Tema 2: Sistemas Distribuidos con CORBA
2. Arquitectura de un sistema CORBA Servicios CORBA Implementan funciones de bajo nivel de uso habitual Interfaz estandarizada Implementación de cada servicio es opcional Algunos servicios definidos en estándar: Servicio de nombres Servicio de localización Servicio de eventos Servicio de propiedades El estándar define la interfaz (que no la implementación) de una serie de servicios de utilidad para cualquier aplicación Estos servicios se comportan de forma similar a cualquier otro objeto del sistema La implementación o no de cada servicio es opcional por cada fabricante de plataformas CORBA Algunos servicios: Servicio de nombre: permite registrar y localizar objetos asociándole un nombre Servicio de localización: permite localizar objetos a través de su interfaz Servicio de eventos: permite enviar/recibir eventos entre objetos Servicio de propiedades: permite añadir propiedades (pares nombre/valor) a los objetos en tiempo de ejecución Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP

9 Tema 2: Sistemas Distribuidos con CORBA
2. Arquitectura de un sistema CORBA Facilidades CORBA Implementan funciones de alto nivel de uso habitual Tipos de facilidades: Horizontales: común a cualquier tipo de aplicación Verticales: específicas a un ámbito determinado Facilidades horizontales: Interfaz de usuario Administración de información Administración de sistemas Administración de tareas Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP

10 Tema 2: Sistemas Distribuidos con CORBA
2. Arquitectura de un sistema CORBA ORB (Object Request Broker) Actúa como un bus de interconexión de objetos Gestiona: comunicación entre objetos Transferencia de datos (Marshalling/Unmarshalling) IIOP (Internet Inter-ORB Protocol) Permite interoperación entre ORB’s Basado en TCP/IP No es el único protocolo Inter-ORB Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP

11 Tema 2: Sistemas Distribuidos con CORBA
2. Arquitectura de un sistema CORBA Adaptador de Objetos Actúa como interfaz entre ORB y objetos CORBA estandariza interfaz de adaptador CORBA 1.0: BOA (Basic Object Adapter) CORBA 2.0, 3.0: POA (Portable Object Adapter) Funciones: Activación de objetos Mapeo entre interfaces y sus implementaciones Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP

12 Tema 2: Sistemas Distribuidos con CORBA
Índice: ¿Qué es CORBA? Arquitectura de un sistema CORBA Alternativas a CORBA El lenguaje IDL 12

13 Tema 2: Sistemas Distribuidos con CORBA
3. Alternativas a CORBA Programación mediante interfaz de sockets ¡Muy bajo nivel! RPC (Remote Procedure Call) Protocolo de llamada a procedimientos remotos Más bajo nivel DCE (Distributed Computing Environment) Conjunto de servicios estandarizados de OSF Idea similar a CORBA Murió  DCOM (Distributed Component Object Model) Tecnología propietaria de Microsoft Sólo para plataformas Windows Relativamente robusto Abandonada a favor de .NET

14 Tema 2: Sistemas Distribuidos con CORBA
3. Alternativas a CORBA PVM (Parallel Virtual Machine) Librerías C/C++ para programación distribuida Muy usado en ingeniería y matemáticas Versión 3: ¡1993! SR (Synchronizing Resources) Lenguaje de programación de la universidad de Arizona Exclusivamente empleado en ámbito universitario MPD (Multithreaded, Parallel and Distributed) Sucesor de SR

15 Tema 2: Sistemas Distribuidos con CORBA
3. Alternativas a CORBA Java RMI Arquitectura muy similar a CORBA (compatible desde JDK 1.2) Ventaja: paso de objetos por valor Inconveniente: implementación ligada a interfaz .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) 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

16 Tema 2: Sistemas Distribuidos con CORBA
3. Alternativas a CORBA Inconvenientes de CORBA Complejo y extenso Diferencias importantes entre fabricantes de plataformas Tecnología en evolución ¿Poco futuro?

17 Tema 2: Sistemas Distribuidos con CORBA
Índice: ¿Qué es CORBA? Arquitectura de un sistema CORBA Alternativas a CORBA El lenguaje IDL 17

18 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL 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. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

20 Tema 2: Sistemas Distribuidos con CORBA
4.1 Notas generales Interface Definition Language: no hay sentencias “ejecutables” Permite definir: Interfaces, compuestas por Atributos Operaciones Tipos y constantes Excepciones Agrupaciones de todo lo anterior (módulos) Los atributos pueden ser de tipos simples o definidos por usuario (existen constructores de tipos) Las operaciones pueden: tomar parámetros devolver un valor Lanzar excepciones

21 Tema 2: Sistemas Distribuidos con CORBA
4.1 Notas generales Aspectos léxicos Mayúsculas y minúsculas: Son distintas, PERO… …en un mismo ámbito, dos identificadores no se pueden diferenciar sólo en su uso Toda declaración termina en “;” Comentarios: Estilo C++: // comentario hasta final de línea Estilo C: /* Comentario hasta cierre de comentario */ Existe preprocesador léxico: #define, #include, #ifdef…#endif, #ifndef...#endif, etc. Normalmente: archivos con terminación “.idl”

22 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

23 Tema 2: Sistemas Distribuidos con CORBA
4.2 Concepto de mapping Definición: Elementos o construcciones del lenguaje destino al que se traduce cada elemento IDL Mapping está normalizado para los distintos lenguajes: Java C++ Ada

24 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

25 Tema 2: Sistemas Distribuidos con CORBA
4.3 El tipo interface Es un tipo compuesto en IDL Define una interfaz de objetos Mapping: se traduce a una interfaz Java El traductor genera cierta infraestructura para cada interfaz Sintaxis de la declaración básica: Por conveniencia, también se pueden declarar excepciones dentro de una interfaz. Lo veremos más adelante Cuidado con ese punto y coma que se olvida siempre (click) Declaración de atributos (click): Readonly: indica atributo de sólo lectura El tipo puede ser cualquier tipo básico o definido por usuario, incluso una interfaz Si es una interfaz, se considera que el atributo es una referencia a un objeto con dicha interfaz Click para ejemplos Declaración de operaciones (click): Parámetros: Si operación no admite parámetros, simplemente se ponen los paréntesis: () Tipos: pueden ser de cualquier tipo: si son de tipo interfaz, se consideran referencia a un objeto con dicha interfaz Modo: puede ser in, out, inout No se pueden agrupar los parámetros (cada parámetro lleva su modo y su tipo, no se puede poner por ejemplo (in long a,b)) Tipo de la operación: Cualquier tipo predefinido o construido por usuario si la operación no devuelve nada, tipo void Si devuelve un tipo interfaz, se considera que devuelve una referencia a un objeto con dicha interfaz oneway: indica que la operación es no bloqueante. Para ello: Debe devolver void Si tiene parámetros, todos en modo in No debe lanzar excepciones interface nombre { // declaración de atributos // declaración de operaciones }; [readonly] attribute tipo nombre_atributo; readonly attribute long contador; attribute string nombre; [oneway] tipo nombre_operacion (modo tipo nombre_param1, …); long calculo (in long a, in long b); void generar (inout long clave, out string resultado); oneway void registrar (in string nombre);

26 Tema 2: Sistemas Distribuidos con CORBA
4.3 El tipo interface No hay sobrecarga en IDL ¿La soportaría cualquier lenguaje al que se traduzca? No pueden coincidir los nombres de una operación y un atributo No existen Constructores Destructores Modificadores de acceso (private, public, protected) Mapping atributos: Una operación de lectura y otra de escritura (si no readonly) interface nombre { interface nombre { attribute long contador; readonly attribute long contador; int contador(); // Accessor void contador(int value); // Mutator

27 Tema 2: Sistemas Distribuidos con CORBA
4.3 El tipo interface 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.intHolder En CORBA: tipo interfaz siempre es un tipo por referencia Nunca se pasan objetos CORBA por valor

28 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

29 Tema 2: Sistemas Distribuidos con CORBA
4.4 Tipos predefinidos Tipo IDL Descripción Mapping Java void Tipo nulo boolean Tipo lógico char Carácter básico wchar Carácter ampliado (dep. implementación) float Número real double Número real de doble precisión long double Número real largo de doble precisión long Número entero (32 bits) int long long Número entero largo (64 bits) unsigned long Número entero (32 bits) sin signo unsigned long long Número entero largo (64 bits) sin signo

30 Tema 2: Sistemas Distribuidos con CORBA
4.4 Tipos predefinidos Tipo IDL Descripción Mapping Java short Entero corto (16 bits) unsigned short Entero corto (16 bits) sin signo octect Byte (8 bits) byte string Cadena de caracteres String

31 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

32 Tema 2: Sistemas Distribuidos con CORBA
4.5 Constantes Sintaxis: const tipo nombre= valor; Se puden declarar… Dentro de una interfaz Fuera de cualquier interfaz Mapping: const tipo nombre=valor; interface nombreInterface { const tipo nombre=valor; … } interface nombre { public static final tipo value=valor; } interface nombreInterface { public static final tipo nombre=valor; … }

33 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

34 Tema 2: Sistemas Distribuidos con CORBA
4.6 Tipos compuestos Enumerados Sintaxis: enum nombre_enumerado {literal1, literal2, … literaln}; Mapping: public class nombre_enumerado implements org.omg.CORBA.portable.IDLEntity { private int __value; … public static final int _literal1 = 0; public static final nombre_enum literal1 = new nombre_enum(_literal1); protected nombre_enum (int value) { __value = value; }

35 Tema 2: Sistemas Distribuidos con CORBA
4.6 Tipos compuestos Enumerados (cont.) No se puede suponer relación de orden entre los literales Uso: literal1 nombre_enumerado literal2 nombre_enumerado var1= nombre_enumerado.literal1; nombre_enumerado var2= var1; if (var1 == var2) literaln Cierto si var1 y var2 apuntan al mismo objeto

36 Tema 2: Sistemas Distribuidos con CORBA
4.6 Tipos compuestos Estructuras Sintaxis: struct nombre_structura { tipo1 campo1; tipon campon; }; Los tipos de los campos en la clase Java son los resultantes de aplicar el mapping a Java a los tipos de los campos en IDL Mapping: public final class nombre_struct implements org.omg.CORBA.portable.IDLEntity { public tipo1 campo1 = …; public nombre_struct (tipo1 _campo1, …) campo1 = _campo1; } …

37 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

38 Tema 2: Sistemas Distribuidos con CORBA
4.7 Creación de tipos Sintaxis: typedef tipo nombre_tipo; Mapping: No ha lugar El nombre de tipo creado se sustituye por el tipo equivalente Uso principal: tipos contenedores Sólo se pueden crear mediante typedef

39 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

40 Tema 2: Sistemas Distribuidos con CORBA
4.8 Tipos contenedores Arrays Los atributos de tipo array deben declararse mediante typedef Sintaxis: typedef tipo_base tipo_array [tamaño]; … interface I { tipo_array atributo1; … } Al traducir a Java, el rango del índice es entre 0 y tamaño-1 Mapping: array Java del tipo resultante de aplicar mapping al tipo base Tamaño de array siempre es fijo Rango del índice: depende de lenguaje de programación

41 Tema 2: Sistemas Distribuidos con CORBA
4.8 Tipos contenedores Secuencias Secuencia: sucesión de elementos del mismo tipo (lista) Los atributos de tipo secuencia deben declararse mediante typedef Dos tipos de secuencias: Limitadas (bounded) Ilimitadas (unbounded) Sintaxis: typedef sequence<tipo_base> tipo_secuencia; // Ilimitada typedef sequence<tipo_base,tamaño> tipo_secuencia; // limitada … interface I { tipo_secuencia atributo1; …

42 Tema 2: Sistemas Distribuidos con CORBA
4.8 Tipos contenedores Secuencias (cont.) Mapping: array Java del tipo resultante de aplicar mapping al tipo base En Java, tanto arrays como secuencias: ¡Una referencia nula a un array java no es una secuencia ni un array válido!

43 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

44 Tema 2: Sistemas Distribuidos con CORBA
4.9 Herencia IDL soporta herencia múltiple Sintaxis: 1 interface A interface B { { … … }; }; interface C:A,B { … }; A B Ni que decir tiene que IDL lo que soporta es herencia entre Interfaces, claro! C 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)

45 Tema 2: Sistemas Distribuidos con CORBA
4.9 Herencia Los métodos no se pueden… Sobrecargar Redefinir Ocultar 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?

46 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

47 Tema 2: Sistemas Distribuidos con CORBA
4.10 Excepciones Las operaciones de los objetos CORBA pueden lanzar excepciones Excepciones se lanzan en servidor y se capturan en cliente IDL permite por tanto: Declarar tipos de excepciones Declarar qué excepciones puede lanzar cada operación Sintaxis de declaración de tipo excepción: exception nombre { tipo_campo1 campo1; tipo_campo2 campo2; … }; exception otraexcepcion { }; Se pueden declarar excepciones dentro o fuera de una interfaz No se pueden crear jerarquías de excepciones mediante herencia

48 Tema 2: Sistemas Distribuidos con CORBA
4.10 Excepciones Sintaxis de declaración de excepciones lanzadas por una operación interface nombre_interface { tipo nombre_oper (modo tipo nombre_param1, …) raises (excep1, excep2…); }; Además de los campos de la excepción, al traducir se generan tres constructores: Uno, no-arg Otro que admite la lista de los campos de la excepción Otro que además de los campos de la excepción, admite un primer argumento $reason public final class nombre extends org.omg.CORBA.UserException { tipo_campo1 campo1; tipo_campo2 campo2; … public nombre() {…} public nombre(tipo_campo1 campo1,…) {…} public nombre (String $reason, tipo_campo1 campo1, …) {…} } Mapping: exception nombre { tipo_campo1 campo1; tipo_campo2 campo2; … };

49 Tema 2: Sistemas Distribuidos con CORBA
4.10 Excepciones Mapping (cont.) interface nombre_interface { tipo nombre_oper (modo tipo nombre_param1, …) raises (excep1, excep2…); }; … tipo nombre_oper (tipo nombre_param1, …) throws excep1, excep2, … { … } En Java, todas las excepciones declaradas en IDL heredan de org.omg.CORBA.UserException Si implementación de una operación lanza excepción no declarada en IDL: UNKNOWN_EXCEPTION

50 Tema 2: Sistemas Distribuidos con CORBA
4. El lenguaje IDL Notas generales Concepto de mapping El tipo interface Tipos predefinidos Constantes Tipos compuestos Creación de tipos Tipos contenedores Herencia Excepciones Módulos

51 Tema 2: Sistemas Distribuidos con CORBA
4.11 Módulos Módulo=agrupación lógica de declaraciones en IDL Puede contener declaraciones de todo lo expuesto hasta el momento (incluso módulos) Sintaxis: module nombre { // declaraciones IDL … }; 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

52 Fontana di Trevi, Roma, Italia. Abril de 2007.


Descargar ppt "Tema 2: Sistemas Distribuidos con CORBA"

Presentaciones similares


Anuncios Google