La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "1 Tema 2: Sistemas Distribuidos con CORBA Programación Concurrente y Distribuida Prácticas."— Transcripción de la presentación:

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

2 22 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

3 3 1. ¿Qué es CORBA?  CORBA NO es:  Ni un lenguaje de programación  Ni un sistema operativo Tema 2: Sistemas Distribuidos con CORBA  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

4 4 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 Tema 2: Sistemas Distribuidos con CORBA

5 5 1. ¿Qué es CORBA? Tema 2: Sistemas Distribuidos con CORBA metodo1() metodo2() … metodoA() … atributo1 … atributo2 op1() op2() opA() opAtrib1()

6 66 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

7 7 2. Arquitectura de un sistema CORBA Tema 2: Sistemas Distribuidos con CORBA Objeto 2Objeto 1 Servicios CORBA Facilidades CORBA ORB AO ORB IIOP

8 8 2. Arquitectura de un sistema CORBA Tema 2: Sistemas Distribuidos con CORBA Objeto 2Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP 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

9 9 2. Arquitectura de un sistema CORBA Tema 2: Sistemas Distribuidos con CORBA Objeto 2Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP 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

10 10 2. Arquitectura de un sistema CORBA Tema 2: Sistemas Distribuidos con CORBA Objeto 2Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP 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

11 11 2. Arquitectura de un sistema CORBA Tema 2: Sistemas Distribuidos con CORBA Objeto 2Objeto 1 Servicios CORBA Facilidades CORBA AO ORB IIOP 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  …

12 12 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

13 13 3. Alternativas a CORBA Tema 2: Sistemas Distribuidos con 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 14 3. Alternativas a CORBA Tema 2: Sistemas Distribuidos con 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!  http://www.csm.ornl.gov/pvm/ http://www.csm.ornl.gov/pvm/  SR (Synchronizing Resources)  Lenguaje de programación de la universidad de Arizona  Exclusivamente empleado en ámbito universitario  http://www.cs.arizona.edu/sr/ http://www.cs.arizona.edu/sr/  MPD (Multithreaded, Parallel and Distributed)  Sucesor de SR  http://www.cs.arizona.edu/mpd/ http://www.cs.arizona.edu/mpd/

15 15 3. Alternativas a CORBA Tema 2: Sistemas Distribuidos con 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 16 3. Alternativas a CORBA Tema 2: Sistemas Distribuidos con CORBA Inconvenientes de CORBA  Complejo y extenso  Diferencias importantes entre fabricantes de plataformas  Tecnología en evolución  ¿Poco futuro?

17 17 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

18 18 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

19 19 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

20 20 4.1 Notas generales Tema 2: Sistemas Distribuidos con CORBA  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)

21 21 4.1 Notas generales Tema 2: Sistemas Distribuidos con CORBA 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 22 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

23 23 4.2 Concepto de mapping Tema 2: Sistemas Distribuidos con CORBA  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 24 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

25 25 4.3 El tipo interface Tema 2: Sistemas Distribuidos con CORBA  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: 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 26 4.3 El tipo interface Tema 2: Sistemas Distribuidos con CORBA  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; int contador(); // Accessor void contador(int value); // Mutator readonly attribute long contador;

27 27 4.3 El tipo interface Tema 2: Sistemas Distribuidos con CORBA  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 28 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

29 29 4.4 Tipos predefinidos Tema 2: Sistemas Distribuidos con CORBA Tipo IDLDescripción Mapping Java void Tipo nulovoid boolean Tipo lógicoboolean char Carácter básicochar wchar Carácter ampliado (dep. implementación)char float Número realfloat double Número real de doble precisióndouble long double Número real largo de doble precisióndouble long Número entero (32 bits)int long Número entero largo (64 bits)long unsigned long Número entero (32 bits) sin signoint unsigned long long Número entero largo (64 bits) sin signolong

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

31 31 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

32 32 4.5 Constantes Tema 2: Sistemas Distribuidos con CORBA  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 33 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

34 34 4.6 Tipos compuestos Tema 2: Sistemas Distribuidos con CORBA enum nombre_enumerado {literal 1, literal 2, … literal n };  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; … } … Enumerados  Sintaxis:

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

36 36 4.6 Tipos compuestos Tema 2: Sistemas Distribuidos con CORBA struct nombre_structura { tipo 1 campo 1 ; … tipo n campo n ; };  Mapping: public final class nombre_struct implements org.omg.CORBA.portable.IDLEntity { public tipo 1 campo 1 = …; … public nombre_struct (tipo1 _campo1, …) { campo 1 = _campo 1 ; … } … Estructuras  Sintaxis:

37 37 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

38 38 4.7 Creación de tipos Tema 2: Sistemas Distribuidos con CORBA 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  Sintaxis:

39 39 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

40 40 4.8 Tipos contenedores Tema 2: Sistemas Distribuidos con CORBA typedef tipo_base tipo_array [tamaño]; … interface I { attribute tipo_array atributo1; … };  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 Arrays  Los atributos de tipo array deben declararse mediante typedef  Sintaxis:

41 41 4.8 Tipos contenedores Tema 2: Sistemas Distribuidos con CORBA typedef sequence tipo_secuencia; // Ilimitada typedef sequence tipo_secuencia; // limitada … interface I { attribute tipo_secuencia atributo1; … 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:

42 42 4.8 Tipos contenedores Tema 2: Sistemas Distribuidos con CORBA 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 43 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

44 44 interface A interface B { { … … }; }; interface C:A,B { … }; 4.9 Herencia Tema 2: Sistemas Distribuidos con CORBA  IDL soporta herencia múltiple  Sintaxis: ABC 1  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 45 4.9 Herencia Tema 2: Sistemas Distribuidos con CORBA  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 46 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

47 47 4.10 Excepciones Tema 2: Sistemas Distribuidos con CORBA exception nombre { tipo_campo1 campo1; tipo_campo2 campo2; … }; exception otraexcepcion { };  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:  Se pueden declarar excepciones dentro o fuera de una interfaz  No se pueden crear jerarquías de excepciones mediante herencia

48 48 4.10 Excepciones Tema 2: Sistemas Distribuidos con CORBA interface nombre_interface { tipo nombre_oper (modo tipo nombre_param1, …) raises (excep1, excep2…); … };  Sintaxis de declaración de excepciones lanzadas por una operación  Mapping: exception nombre { tipo_campo1 campo1; tipo_campo2 campo2; … }; 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, …) {…} }

49 49 4.10 Excepciones Tema 2: Sistemas Distribuidos con CORBA interface nombre_interface { tipo nombre_oper (modo tipo nombre_param1, …) raises (excep1, excep2…); … };  Mapping (cont.) … 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 50 4. El lenguaje IDL Tema 2: Sistemas Distribuidos con CORBA 1.Notas generales 2.Concepto de mapping 3.El tipo interface 4.Tipos predefinidos 5.Constantes 6.Tipos compuestos 7.Creación de tipos 8.Tipos contenedores 9.Herencia 10.Excepciones 11.Módulos

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


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

Presentaciones similares


Anuncios Google