Sistemas Distribuidos Con CORBA

Post on 23-Dec-2015

9 views 3 download

description

CORBA ORB

Transcript of Sistemas Distribuidos Con CORBA

1

Tema 2: Sistemas Distribuidos con CORBA

Programación Programación Concurrente y DistribuidaConcurrente y Distribuida

PrácticasPrácticas

22

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Índice:

1. ¿Qué es CORBA?

2. Arquitectura de un sistema CORBA

3. Alternativas a CORBA

4. El lenguaje IDL

3

1. ¿Qué es CORBA? CORBA NO es:

Ni un lenguaje de programaciónNi un sistema operativo

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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ónDicha 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 objetosCómo dichos objetos interactúan con ellosServicios y facilidades disponibles a los objetos

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

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

5

1. ¿Qué es CORBA?

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

metodo1()

metodo2()…

metodoA()…

atributo1

atributo2

op1()

op2()

opA()

opAtrib1()

66

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Índice:

1. ¿Qué es CORBA?

2. Arquitectura de un sistema CORBA

3. Alternativas a CORBA

4. El lenguaje IDL

7

2. Arquitectura de un sistema CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Objeto 2Objeto 1

ServiciosCORBA

FacilidadesCORBA

ORB

AO AO

ORB ORB

IIOP

8

2. Arquitectura de un sistema CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Objeto 2Objeto 1

ServiciosCORBA

FacilidadesCORBA

AO AO

ORB 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 nombresServicio de localizaciónServicio de eventosServicio de propiedades

9

2. Arquitectura de un sistema CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Objeto 2Objeto 1

ServiciosCORBA

FacilidadesCORBA

AO AO

ORB ORB

IIOP

Facilidades CORBA Implementan funciones de alto nivel de uso habitual Tipos de facilidades:

Horizontales: común a cualquier tipo de aplicaciónVerticales: específicas a un ámbito determinado

Facilidades horizontales:Interfaz de usuarioAdministración de informaciónAdministración de sistemasAdministración de tareas

10

2. Arquitectura de un sistema CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Objeto 2Objeto 1

ServiciosCORBA

FacilidadesCORBA

AO AO

ORB ORB

IIOP

ORB (Object Request Broker) Actúa como un bus de interconexión de objetos Gestiona:

comunicación entre objetosTransferencia 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

2. Arquitectura de un sistema CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Objeto 2Objeto 1

ServiciosCORBA

FacilidadesCORBA

AO AO

ORB 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…

1212

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Índice:

1. ¿Qué es CORBA?

2. Arquitectura de un sistema CORBA

3. Alternativas a CORBA

4. El lenguaje IDL

13

3. Alternativas a CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Programación mediante interfaz de sockets¡Muy bajo nivel!

RPC (Remote Procedure Call)Protocolo de llamada a procedimientos remotosMás bajo nivel

DCE (Distributed Computing Environment)Conjunto de servicios estandarizados de OSFIdea similar a CORBAMurió

DCOM (Distributed Component Object Model)Tecnología propietaria de MicrosoftSólo para plataformas WindowsRelativamente robustoAbandonada a favor de .NET

14

3. Alternativas a CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

PVM (Parallel Virtual Machine)Librerías C/C++ para programación distribuidaMuy usado en ingeniería y matemáticasVersión 3: ¡1993!http://www.csm.ornl.gov/pvm/

SR (Synchronizing Resources)Lenguaje de programación de la universidad de ArizonaExclusivamente empleado en ámbito universitariohttp://www.cs.arizona.edu/sr/

MPD (Multithreaded, Parallel and Distributed)Sucesor de SRhttp://www.cs.arizona.edu/mpd/

15

3. Alternativas a CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Java RMIArquitectura muy similar a CORBA (compatible desde JDK

1.2)Ventaja: paso de objetos por valorInconveniente: implementación ligada a interfaz

.NET RemotingInterfaz de invocación remota de plataforma .NETSimilar a CORBA y a Java RMISólo plataforma .NET (.NET 3.0 forma parte de Windows

Vista)

Servicios WebColección de protocolos y estándares que sirve para

intercambiar datos entre aplicacionesEspecificación de interfaces: WSDLTransporte: HTTPInvocación remota: SOAPRepresentación de datos: XML

16

3. Alternativas a CORBA

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Inconvenientes de CORBA Complejo y extenso Diferencias importantes entre fabricantes de plataformas Tecnología en evolución ¿Poco futuro?

1717

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Índice:

1. ¿Qué es CORBA?

2. Arquitectura de un sistema CORBA

3. Alternativas a CORBA

4. El lenguaje IDL

18

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.1 Notas generales

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Interface Definition Language: no hay sentencias “ejecutables”

Permite definir:Interfaces, compuestas por

• Atributos

• Operaciones

Tipos y constantesExcepcionesAgrupaciones de todo lo anterior (módulos)

21

4.1 Notas generales

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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íneaEstilo C: /* Comentario hasta cierre de comentario */

Existe preprocesador léxico:#define, #include, #ifdef…#endif, #ifndef...#endif, etc.

Normalmente: archivos con terminación “.idl”

22

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.2 Concepto de mapping

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Definición: Elementos o construcciones del lenguaje destino al que se traduce cada elemento IDL

Mapping está normalizado para los distintos lenguajes:JavaC++Ada…

24

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.3 El tipo interface

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.3 El tipo interface

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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 existenConstructoresDestructoresModificadores 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(); // Accessorvoid contador(int value); // Mutator

readonly attribute long contador;

27

4.3 El tipo interface

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Mapping operaciones: métodos JavaParámetros en modo out o inout: clases envolturaUsa 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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.4 Tipos predefinidos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Tipo IDL DescripciónMapping

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 long Número entero largo (64 bits) long

unsigned long Número entero (32 bits) sin signo int

unsigned long long

Número entero largo (64 bits) sin signo long

30

4.4 Tipos predefinidos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Tipo IDL DescripciónMapping

Java

short Entero corto (16 bits) short

unsigned short Entero corto (16 bits) sin signo short

octect Byte (8 bits) byte

string Cadena de caracteres String

31

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.5 Constantes

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Sintaxis:

const tipo nombre= valor;

Se puden declarar…Dentro de una interfazFuera 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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.6 Tipos compuestos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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; … } …

Enumerados Sintaxis:

35

nombre_enumerado var1= nombre_enumerado.literal1;nombre_enumerado var2= var1;…if (var1 == var2) …

nombre_enumerado

4.6 Tipos compuestos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Enumerados (cont.) No se puede suponer relación de orden entre los

literales Uso:

literal1

literal2

literaln

Cierto si var1 y var2 apuntan al mismo objeto

36

4.6 Tipos compuestos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

struct nombre_structura { tipo1 campo1; … tipon campon;};

Mapping: public final class nombre_struct implements org.omg.CORBA.portable.IDLEntity{ public tipo1 campo1 = …; … public nombre_struct (tipo1 _campo1, …) { campo1 = _campo1; … } …

Estructuras Sintaxis:

37

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.7 Creación de tipos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

typedef tipo nombre_tipo;

Mapping: No ha lugarEl nombre de tipo creado se sustituye por el tipo equivalente

Uso principal: tipos contenedoresSólo se pueden crear mediante typedef

Sintaxis:

39

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.8 Tipos contenedores

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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 fijoRango del índice: depende de lenguaje de programación

Arrays Los atributos de tipo array deben declararse mediante

typedef Sintaxis:

41

4.8 Tipos contenedores

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

typedef sequence<tipo_base> tipo_secuencia; // Ilimitadatypedef sequence<tipo_base,tamaño> 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

4.8 Tipos contenedores

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

interface A interface B{ { … …}; };

interface C:A,B{ …};

4.9 Herencia

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

IDL soporta herencia múltiple Sintaxis:

A B

C

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

4.9 Herencia

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

Los métodos no se pueden… SobrecargarRedefinirOcultar

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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.10 Excepciones

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.10 Excepciones

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.10 Excepciones

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4. El lenguaje IDL

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

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

4.11 Módulos

Tem

a 2:

Sis

tem

as D

istr

ibu

ido

s co

n C

OR

BA

module nombre{ // declaraciones IDL …};

Módulo=agrupación lógica de declaraciones en IDLPuede contener declaraciones de todo lo expuesto hasta el

momento (incluso módulos)

Sintaxis:

Mapping: paquetes JavaPor cada módulo, se genera un paquete de mismo nombreTodo lo declarado en dicho módulo se incluye dentro de

dicho paquete

52