Está en la página 1de 52

Programacin

Concurrente y Distribuida
Prcticas

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

Tema 2: Sistemas Distribuidos con CORBA

1. Qu es CORBA?
CORBA NO es:
Ni un lenguaje de programacin
Ni un sistema operativo

CORBA es un estndar de la OMG que:


Establece una forma de construccin de software nter
operativo empleando tecnologa orientada a objetos

CORBA es slo una especificacin


Dicha especificacin es implementada por las distintas
plataformas que construyen los fabricantes

Dicha especificacin recoge:


La forma en que se define la interfaz de los objetos
Cmo dichos objetos interactan con ellos
Servicios y facilidades disponibles a los objetos

Tema 2: Sistemas Distribuidos con CORBA

1. Qu es CORBA?
CORBA nos proporciona
Independencia de lenguaje de programacin
IDL (Interface Definition Language): Lenguaje neutral que
permite definir las interfaces de los objetos
Los objetos se implementan en nuestro lenguaje habitual
de programacin
La traduccin de IDL a los distintos lenguajes de
programacin est estandarizada (y automatizada!)

Independencia de sistema operativo y hardware


La especificacin recoge
Los protocolos por los que interactan los objetos
La forma en la que se representan y transmiten los datos

Independencia de localizacin fsica de los objetos


4

op1()

metodo2()

op2()

opA()

metodoA()

metodo1()

atributo1

opAtrib1()

atributo2

Tema 2: Sistemas Distribuidos con CORBA

1. Qu es CORBA?

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

Tema 2: Sistemas Distribuidos con CORBA

2. Arquitectura de un sistema CORBA

Objeto 1

AO

ORB

Objeto 2

Facilidades
CORBA

Servicios
CORBA

ORB
IIOP

AO

ORB
7

Tema 2: Sistemas Distribuidos con CORBA

2. Arquitectura de un sistema CORBA


Servicios CORBA
Implementan funciones de bajo nivel de uso habitual
Interfaz estandarizada
Implementacin de cada servicio es opcional
Algunos servicios definidos en estndar:
Servicio de nombres
Servicio de localizacin
Servicio de eventos
Servicio de propiedades

Objeto 1

AO

Objeto 2

Servicios
CORBA

Facilidades
CORBA

ORB

AO

ORB
IIOP

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: comn a cualquier tipo de aplicacin
Verticales: especficas a un mbito determinado

Facilidades horizontales:
Interfaz de usuario
Administracin de informacin
Administracin de sistemas
Administracin de tareas

Objeto 1

AO

Objeto 2

Servicios
CORBA

Facilidades
CORBA

ORB

AO

ORB
IIOP

Tema 2: Sistemas Distribuidos con CORBA

2. Arquitectura de un sistema CORBA


ORB (Object Request Broker)
Acta como un bus de interconexin de objetos
Gestiona:
comunicacin entre objetos
Transferencia de datos (Marshalling/Unmarshalling)

IIOP (Internet Inter-ORB Protocol)


Permite interoperacin entre
ORBs
Basado en TCP/IP
No es el nico protocolo InterORB

Objeto 1

AO

Objeto 2

Servicios
CORBA

Facilidades
CORBA

ORB

AO

ORB
IIOP

10

Tema 2: Sistemas Distribuidos con CORBA

2. Arquitectura de un sistema CORBA


Adaptador de Objetos
Acta 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:
Activacin de objetos
Mapeo entre interfaces y sus
implementaciones

Objeto 1

AO

Objeto 2

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
Programacin mediante interfaz de sockets
Muy bajo nivel!

RPC (Remote Procedure Call)


Protocolo de llamada a procedimientos remotos
Ms bajo nivel

DCE (Distributed Computing Environment)


Conjunto de servicios estandarizados de OSF
Idea similar a CORBA
Muri

DCOM (Distributed Component Object Model)


Tecnologa propietaria de Microsoft
Slo para plataformas Windows
Relativamente robusto
Abandonada a favor de .NET

13

Tema 2: Sistemas Distribuidos con CORBA

3. Alternativas a CORBA
PVM (Parallel Virtual Machine)
Libreras C/C++ para programacin distribuida
Muy usado en ingeniera y matemticas
Versin 3: 1993!
http://www.csm.ornl.gov/pvm/

SR (Synchronizing Resources)
Lenguaje de programacin de la universidad de Arizona
Exclusivamente empleado en mbito universitario
http://www.cs.arizona.edu/sr/

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
Java RMI
Arquitectura muy similar a CORBA (compatible desde JDK
1.2)
Ventaja: paso de objetos por valor
Inconveniente: implementacin ligada a interfaz

.NET Remoting
Interfaz de invocacin remota de plataforma .NET
Similar a CORBA y a Java RMI
Slo plataforma .NET (.NET 3.0 forma parte de Windows
Vista)

Servicios Web
Coleccin de protocolos y estndares que sirve para
intercambiar datos entre aplicaciones
Especificacin de interfaces: WSDL
Transporte: HTTP

15

Tema 2: Sistemas Distribuidos con CORBA

3. Alternativas a CORBA
Inconvenientes de CORBA
Complejo y extenso
Diferencias importantes entre fabricantes de plataformas
Tecnologa en evolucin
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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
19

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 (mdulos)

20

Tema 2: Sistemas Distribuidos con CORBA

4.1 Notas generales


Aspectos lxicos
Maysculas y minsculas:
Son distintas, PERO
en un mismo mbito, dos identificadores no se pueden
diferenciar slo en su uso

Toda declaracin termina en ;


Comentarios:
Estilo C++: // comentario hasta final de lnea
Estilo C: /* Comentario hasta cierre de comentario */

Existe preprocesador lxico:


#define, #include, #ifdef#endif, #ifndef...#endif, etc.

Normalmente: archivos con terminacin .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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
22

Tema 2: Sistemas Distribuidos con CORBA

4.2 Concepto de mapping


Definicin: Elementos o construcciones del lenguaje
destino al que se traduce cada elemento IDL
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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
24

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 declaracin bsica:


interface nombre
{
// declaracin de atributos
[readonly] attribute tipo nombre_atributo;
readonly attribute long contador;
attribute string nombre;

// declaracin de operaciones

};

[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);

25

Tema 2: Sistemas Distribuidos con CORBA

4.3 El tipo interface


No hay sobrecarga en IDL
La soportara cualquier lenguaje al que se traduzca?

No pueden coincidir los nombres de una operacin y un


atributo
No existen
Constructores
Destructores
Modificadores de acceso (private, public, protected)

Mapping atributos:
Una operacin de lectura y otra de escritura (si no readonly)
interface nombre
{

attribute long
contador;
readonly
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


Mapping operaciones: mtodos Java
Parmetros en modo out o inout: clases envoltura
Usa clases envoltura especficas 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

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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
28

Tema 2: Sistemas Distribuidos con CORBA

4.4 Tipos predefinidos


Tipo IDL

Descripcin

Mapping
Java

void

Tipo nulo

void

boolean

Tipo lgico

boolean

char

Carcter bsico

char

wchar

Carcter ampliado (dep. implementacin) char

float

Nmero real

float

double

Nmero real de doble precisin

double

long double

Nmero real largo de doble precisin

double

long

Nmero entero (32 bits)

int

long long

Nmero entero largo (64 bits)

long

unsigned long Nmero entero (32 bits) sin signo

int

unsigned long Nmero entero largo (64 bits) sin signo


long

long
29

Tema 2: Sistemas Distribuidos con CORBA

4.4 Tipos predefinidos


Tipo IDL
short

Descripcin
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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
31

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;

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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
33

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;

34

Tema 2: Sistemas Distribuidos con CORBA

4.6 Tipos compuestos


Enumerados (cont.)
No se puede suponer relacin de orden entre los
literales
nombre_enumerado
literal
Uso:
1

nombre_enumerado var1= nombre_enumerado.literal1;


nombre_enumerado var2= var1;

if (var1 == var2)

literal2

literaln

Cierto si var1 y var2


apuntan al mismo objeto

35

Tema 2: Sistemas Distribuidos con CORBA

4.6 Tipos compuestos


Estructuras
Sintaxis:
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;

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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
37

Tema 2: Sistemas Distribuidos con CORBA

4.7 Creacin 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


Slo 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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
39

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 [tamao];

interface I
{
attribute tipo_array atributo1;

};

Mapping: array Java del tipo resultante de aplicar


mapping al tipo base
Tamao de array siempre es fijo
Rango del ndice: depende de lenguaje de programacin

40

Tema 2: Sistemas Distribuidos con CORBA

4.8 Tipos contenedores


Secuencias
Secuencia: sucesin 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,tamao> tipo_secuencia; // limitada

interface I
{
attribute tipo_secuencia atributo1;

41

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 vlido!

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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
43

Tema 2: Sistemas Distribuidos con CORBA

4.9 Herencia
IDL soporta herencia mltiple
Sintaxis:
A

interface A
{

};

interface B
{

};

interface C:A,B
{

};

Mapping: las interfaces Java generadas reflejan la


relacin de herencia entre las interfaces IDL
(En Java s es posible herencia mltiple entre interfaces)
44

Tema 2: Sistemas Distribuidos con CORBA

4.9 Herencia
Los mtodos no se pueden
Sobrecargar
Redefinir
Ocultar

Si se emplea herencia mltiple: no se puede heredar de


clases con nombres coincidentes de atributos y/o
operaciones
Lo soportara 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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
46

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 operacin

Sintaxis de declaracin de tipo excepcin:


exception nombre
{
tipo_campo1 campo1;
tipo_campo2 campo2;

};
exception otraexcepcion { };

Se pueden declarar
excepciones dentro o
fuera de una interfaz
No se pueden crear
jerarquas de excepciones
mediante herencia

47

Tema 2: Sistemas Distribuidos con CORBA

4.10 Excepciones
Sintaxis de declaracin de excepciones lanzadas por
una operacin
interface nombre_interface
{
tipo nombre_oper (modo tipo nombre_param1, ) raises (excep1, excep2);

};
public final class nombre extends
org.omg.CORBA.UserException
{
Mapping:
tipo_campo1 campo1;
tipo_campo2 campo2;
exception nombre

{
public nombre() {}
tipo_campo1 campo1;
public nombre(tipo_campo1 campo1,) {}
tipo_campo2 campo2;
public nombre (String $reason, tipo_campo1

campo1, ) {}
};
}
48

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 implementacin de una operacin lanza excepcin 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
Creacin de tipos
Tipos contenedores
Herencia
Excepciones
Mdulos
50

Tema 2: Sistemas Distribuidos con CORBA

4.11 Mdulos
Mdulo=agrupacin lgica de declaraciones en IDL
Puede contener declaraciones de todo lo expuesto hasta el
momento (incluso mdulos)

Sintaxis:
module nombre
{
// declaraciones IDL

};

Mapping: paquetes Java


Por cada mdulo, se genera un paquete de mismo nombre
Todo lo declarado en dicho mdulo se incluye dentro de
dicho paquete
51

52

También podría gustarte