Está en la página 1de 14

Modelos de Programación para

Aplicaciones Distribuidas
?Llamadas a procedimientos remoto
Objetos Distribuidos ?Invocacióna un método remoto (RMI)
CORBA: Un caso de Estudio ?Modelo de programación basado en
eventos

Profs. Yudith Cardinale-Mariela Curiel


Sep – Dic 2002

Interfaces Modelo de Objetos


Interfaces en los sistemas distribuidos ? Un programa OO consta de un conjunto de objetos
que interactuan entre ellos.
? Interfaces de servicio
? Cada objeto se compone de un conjunto de datos y
? Interfaces remotas un conjunto de métodos.
Los lenguajes de definición de interfaces ? Un objeto se comunica con otro objeto invocando
(IDL) están diseñados para permitir que los sus métodos, generalmente pasándole argumentos
objetos implementados en lenguajes y recibiendo resultados
diferentes se invoquen unos a otros. Ejem: ? Se puede acceder a los objetos mediante
CORBA IDL, Sun XDR. referencias a objetos.

1
Modelo de Objetos
Modelo de Objetos
Distribuidos
? La interfaz define las firmas o signatures de los ? En el modelo C/S, los objetos son administrados
métodos (tipos de sus argumentos, valores por servidores y sus clientes invocan sus métodos
devueltos y excepciones) sin especificar su utilizando una invocación de métodos remota
implementación. (RMI)
? Los sistemas de objetos distribuidos pueden
? Se manejan excepciones
adoptar cualquiera de los modelos arquitectónicos
? Se hace necesario proporcionar mecanismos de conocidos.
liberación del espacio ocupado por aquellos ? Cuando el cliente invoca un método de un objeto
objetos que ya no lo necesitan (compactación remoto, se envía un mensaje al servidor que lo
automática de la memoria) administra.

Modelo de Objetos Modelo de Objetos


Distribuidos Distribuidos
? Cada proceso contiene un conjunto de ? La invocación se lleva a cabo ejecutando el
objetos, algunos de los cuales pueden método del objeto en el servidor y el
recibir tanto invocaciones locales como resultado se devuelve al cliente en otro
remotas. Otros objetos sólo pueden recibir mensaje.
invocaciones locales.

Invocaciones
Invocación locales Invocación
Remota Remota
C
A B D E

Objeto Remoto
Objeto Remoto

2
Modelo de Objetos
Modelo de Objetos Distribuidos
Distribuidos ? Interfaz remota:
– Cada objeto tiene una interfaz remota que especifica
Existen dos conceptos fundamentales: cuáles de sus métodos pueden invocarse remotamente.
? Referencia de objeto remoto: – El sistema CORBA proporciona un IDL que permite
definir interfaces remotas. Las clases de los objetos
– Otros objetos pueden invocar los métodos de un
remotos y los programas de los clientes pueden
objeto remoto si tienen acceso a su referencia
implementarse en cualquier lenguaje. Los clientes
de objeto remoto. CORBA no tienen que estar en el mismo lenguaje que
– Las referencias a objetos remotos se pueden el objeto remoto.
pasar como argumentos y resultado de las
Invocaciones
invocaciones de métodos remotos. Invocación
Remota
locales Invocación
Remota
C
A B D E
Interfaz Remoto
Interfaz Remoto

Modelo de Objetos
Distribuidos
? La compactación automática de memoria,
distribuida, se logra usualmente mediante la
cooperación entre el compactador de memoria
Corba: un estándar para
local y un módulo adicional que realiza
compactación de memoria distribuida, basado en
construir objetos
un contador de referencias. distribuidos.
? Una invocación a un método remoto debe ser
capaz de lanzar excepciones. CORBA IDL
proporciona una notación para las excepciones.

3
Object Management Group Object Management Group
(OMG) (OMG)
? Esun consorcio internacional que ? Fue fundado en 1989.
promueve el desarrollo de software
orientado por objetos ? Inicialmente estuvo conformado por 8
compañías: 3Com Corpotation, American
Airlines, Canon Inc., Data General, Hewlett-
? Elobjetivo del OMG es proveer un Packard, Philips Telecommunications N.V.,
marco de arquitectura común para Sun Microsystems y Unisys Corporation.
permitir la interacción de objetos en
plataformas heterogéneas y distribuidas. ? Actualmente hay más de 500 miembros

Object Management Architecture


Object Management Group (OMG)
(OMA)
? El OMG no realiza trabajos de desarrollo ? OMA es una arquitectura de referencia
e implementación, más bien se basa en la sobre la cual se pueden construir
tecnología existente ofrecida por sus aplicaciones.
miembros. ? Define, a un nivel alto de abstracción las
? Propone especificaciones para el “facilidades” necesarias para el
desarrollo de computación distribuida desarrollo de aplicaciones distribuidas
basada en objetos: OMA (Object orientadas por objetos.
Management Architecture).

4
Object Management Architecture Object Management Architecture
(OMA) (OMA)
? ORB (intermediario de petición de objetos)
• Posee 4 componentes:
es el bus de comunicación entre objetos.
Common
Application
Interfaces Facilities
Permite o facilita la comunicación entre
objetos. La tecnología adoptada para los
ORBs es lo que se conoce como CORBA.
Application Common
Object Request Broquer (ORB) Interfaces Facilities

Object Request Broquer (ORB)


Object Services

Object Services

Object Management Architecture


Object Management Architecture (OMA)
(OMA) ? Object Services: definen un conjunto de objetos que
implementan servicios fundamentales de bajo nivel como
Corba (Common Object Request Broker servicio de nombres, seguridad, persistencia, ejecución
Architecture) es un diseño de middleware concurrente y transacciones, etc. Permiten a los
desarrolladores construir aplicaciones sin tener que
que permite que los programas de reinventar la rueda.
aplicación se comuniquen unos con otros
Application Common
con independencia del lenguaje de Interfaces Facilities

programación, sus plataformas de hw y


sw, las redes sobre las que se comunican Object Request Broquer (ORB)

y sus implementadores.
Object Services

5
Object Management Architecture CORBA
(OMA)
? Common Facilities (CF): son servicios de ? Fue creada en 1991 (Corba 1.1). propone una
más alto nivel orientados a las aplicaciones implementación específica del ORB (IDL)
(accounting, intercambio de información entre ? En 1994 surge CORBA 2.0 (1994), que definió
aplicaciones, correo electrónico o facilidades estándares para permitir la comunicación entre
para imprimir). implementaciones realizadas por
? Application Interfaces: interfaces desarrolladores diferentes. Este estándar se
desarrolladas para aplicaciones en particular. denomina GIOP (General Inter-ORB
Estos objetos hacen uso del resto de los Protocol).
componentes. OMG probablemente no llegue a ? CORBA 3.0 (1997) incrementa
desarrollar estándares de este tipo. interoperabilidad y funcionalidad (POA)

Corba IDL
Modelo de Objetos CORBA
? Los clientes no son necesariamente objetos; un IDL: Interface Definition Language
cliente podr á ser cualquier programa que envía La interfaz especifica un nombre y un conjunto de métodos
mensajes de petición a objetos remotos y reciba que podrán utilizar los clientes.
respuestas.
? El término objeto CORBA se refiere a objetos
? Es un lenguaje declarativo
remotos. ? Define tipos de objetos especificando sus
? Un objeto CORBA implementa una interfaz IDL, interfaces estáticas
tiene asociado una referencia de objeto remoto y
es capaz de responder a las invocaciones de los ? Sintaxis derivada de C++ con palabras
métodos en su interfaz IDL. adicionales
? Se puede implementar un objeto CORBA en un
lenguaje que no sea OO.

6
Enfoque CORBA: IDL
// Ejemplo de especificación de Enfoque CORBA: IDL
IDL: forma.idl y ListaForma.idl

struct Rectangulo { interface Forma { ? Módulos: la construcción módulo permite agrupar


long ancho; long dameVersion(); en unidades lógicas las interfaces y otras
ObjetoGrafico DameTodoEstado ();
long alto;
}; definiciones del tipo IDL. Define un alcance
long x;
long y; Typedef sequence <Forma, 100> Todo
léxico.
}; Interface ListaForma { ? Los parámetros se etiquetan como in, out, inout.
exception ExceptionLlena {};
struct ObjetoGrafico{
Forma nuevaForma( in ObjetoGrafico g) – in: se pasa del cliente al objeto CORBA invocado.
raises (ExceptionLlena)
string tipo; Todo TodasFormas(); – out: lo devuelve el objeto CORBA
Rectangle enmarcado; long dameVersion(); – inout: el valor de este parámetro puede pasarse en
boolean estaRelleno; };
ambas direcciones.
};
Lista de Ref. a objetos
CORBA

Enfoque CORBA: IDL Enfoque CORBA: IDL


? Si no se devuelve ningún valor el tipo retornado se ? La invocación remota en CORBA define,
coloca como void.
oneway void retrollamada (in int version)
por defecto, la semántica como máximo
?Oneway indica que el cliente que invoca el método una vez. Si una operación retorna
no se bloqueará mientras el destino lleva a cabo el exitosamente, se garantiza que se ejecutó
método. exactamente 1 vez. Si retorna una excepción
? Cuando se lanza una excepción que contiene fue ejecutada a lo sumo 1 vez.
variables, el servidor puede utilizar las variables
para devolver información al cliente sobre la
excepción.
exception ExceptionLlena{};
exception ExceptionLlena{ObjetoGrafico g };

7
Enfoque CORBA: IDL Enfoque CORBA: IDL
Value
Tipos IDL
? Herencia: las interfaces IDL se pueden extender.
Constructed value ? Una interfaz IDL podrá extender de más de una
Object Reference interfaz.
array
Union
? Todas las interfaces IDL heredan del tipo Object.
struct sequence
Basic Values Esto hace posible el definir operaciones IDL que
puedan tomar como argumento o devolver como
Integer Float Point
resultado una referencia a un objeto remoto de
cualquier tipo.
Interface A {};
any
Interface B: A{};
Short Long UshortUlong Float enum
octal Interface C {};
Double boolean
char string Interface Z: B, C {};

La Arquitectura de CORBA La Arquitectura de CORBA


in args

Operation() INTERFACE IMPLEMENTATION


IDL COMPILER
OBJECT REPOSITORY REPOSITORY
CLIENT IMPLEMENTATION
out args + return value

CLIENT SERVANTS

Request IDL
IDL ORB SKELETON DSI
DII
STUBS INTERFACE
OBJECT ADAPTER
ORB

GIOP/IIOP ORB CORE

8
La Arquitectura de CORBA Enfoque CORBA
Client ?IDL Skeleton (Esqueletos):
REQUEST ?Funciones generadas desde la interfaz IDL para “enlazarlas” a
IDL Stub
las implementaciones de objetos
DII
?Dynamic Skeleton Interface (DSI)
?IDL Stubs (resguardos o proxies): ORB Core ?Análogo al DII del lado de la implementación de objetos
?Funciones generadas desde la interfaz IDL para “enlazarlas”
a los clientes
?Provee una interfaz de invocación estática
?Dynamic Invocation Interface (DII)
Servant
?Permite especificar y construir requerimientos a tiempo de ejecución
?Operaciones: create_request, invoke, send, get_response IDL Sk DSI
?El cliente especifica el objeto, la operación y los parámetros. Se ORB
Interface Object Adapter
obtienen a través del repositorio de interfaz.
ORB Core

Arquitectura de CORBA Arquitectura de CORBA


? ORB Interface: ? Repositorio de Interfaces (Interface
? Provee funciones para acceder directamente al Repository):
ORB core desde los clientes y desde las
?Su información permite que un programa
implementaciones de objetos
? Su interfaz no depende de la interfaz de los clientes
encuentre un objeto cuya interfaz no conoce en
ni de las interfaces de las implementaciones de tiempo de compilación
objetos
? Repositoriode Implementaciones
? Operaciones que permiten su arranque y parada
? Operaciones para la conversión entre referencias a (Implementation Repository):
objetos remotos y cadenas de texto. ?Contiene información que permite al ORB core
? Object Adapter: localizar y activar implementaciones de objetos

9
Funciones de un Adaptador de Estructura de un Adaptador de
Objetos Objetos
? Funciones: ? Tiene tres interfaces diferentes:
? Genera referencias a objetos que se registran en
CORBA. IOR (Interoperate object reference)
? Da a cada objeto CORBA un único nombre que ?Una interfaz privada para el esqueleto
forma parte de su referencia a objeto remoto.
? Medio de comunicación entre implementaciones ?Una interfaz privada para el núcleo
de objetos y el ORB core.
? Despacha cada RMI vía un esqueleto hacia el
sirviente apropiado. ?Una interfaz pública para las
? Activación/Desactivación de sirvientes implementaciones de objetos

Funciones de un Adaptador de
Referencia a Objetos Objetos
? Funciones:
? Genera referencias a objetos que se registran en
Un objeto CORBA puede identificarse, localizarse y direccionarse CORBA. IOR (Interoperate object reference)
por su referencia a objeto. ? Da a cada objeto CORBA un único nombre que
forma parte de su referencia a objeto remoto.
Nombre de tipo Protocolo y dirección Clave del ? Medio de comunicación entre implementaciones
de Interfaz IDL detallada Objeto de objetos (lenguaje de los sirvientes) y el ORB
core (Objetos CORBA).
Identificador Nombre de Número
de repositorio IIOP Dominio Nombre del Nombre ? Despacha cada RMI vía un esqueleto hacia el
de puerto adaptador del objeto
de interfaz del host sirviente apropiado.
? Activación/Desactivación de sirvientes

10
Funciones de un Adaptador de Funciones de un Adaptador de
Objetos Objetos
? El ORB y el OA cooperan para permitir ? Diferentes OAs pueden soportar diferentes
que las aplicaciones clientes invoquen estilos de implementación de sirvientes.
métodos de objetos CORBA y aseguran que Por ejemplo, el Orbix Object Database
cada objeto CORBA se asocie a un Adapter Framework, permite implementar
sirviente. El ORB y el OA cooperan para, objetos usando una base de datos OO. Otro
de forma transparente, localizar e invocar a ejemplo es el Real Time Object Adapter
los sirvientes adecuados, una vez que se (objetos a tiempo real.)
tiene la información en las referencias.

Estructura de un Adaptador de
Funciones de un Adaptador de Objetos
Objetos
? Adaptadores de Objetos adoptados por
Que pasaría si no existiera el adaptador de objetos? el estándar CORBA:
– El core tendría que soportar múltiples tipos o
?Basic Object Adapter (BOA)
estilos de sirvientes lo cual lo haría más grande,
complejo y lento. ?Portable Object Adapter (POA)
– Falta de flexibilidad
Con el OA se pueden soportar diferentes estilos de
programción de los sirvientes. De esta forma el
código del ORB es más pequeño y simple.

11
Estructura de un Adaptador de Estructura de un Adaptador de
Objetos (BOA) Objetos
? Modelos de Activación ? Algunas limitaciones (BOA)
? Unshared Server: servidor que soporta un único
?No especifica cómo deben ser los
objeto CORBA. Si se crea otro objeto (del mismo
tipo) se tiene que crear un nuevo servidor. esqueletos o cómo deben asociarse los
? Shared Server: soporta múltiples objetos sirvientes a los esqueletos.
CORBA, posiblemente de diferentes tipos. ?No especifica cómo se deben registrar los
? Persistent Server: el servidor se inicia cuando se
sirvientes en el OA.
inicia el sistema (boot time).
? Server-per-Method: es una colección de procesos ?No se establece nada respecto a servidores
c/uno implementando una operación de un objeto multithreading.
CORBA.

Estructura de un Adaptador de Estructura de un Adaptador de


Objetos Objetos
POA: facilita la portabilidad de los servidores ? Identificador de objetos: identifica un objeto
CORBA. CORBA dentro del contexto de un POA. Puede
? Identificador de objetos ser asignado por la aplicación o por el POA.
? Objetos persistentes y transitorios ? Objetos persistentes y transitorios:
? Activación asociada al objeto, no al servidor: ? Persistentes: su tiempo de vida es independiente del
explícita, por demanda, implícita, por defecto tiempo de vida del proceso servidor. No se se
almacena el estado de los objetos.
? Explicitamente se soportan servidores
multithreaded. ? Transitorios: su tiempo de vida está ligado al tiempo
de vida del proceso servidor.
?Existen otras diferencias ( Schmidt and
Vinosky)

12
Estructura de un Adaptador de Inter-Operabilidad
Objetos
? Es necesario que inter-operen los
? Activación asociada al objeto, no al servidor: ORB´s de diversos fabricantes.
– Explícita: se usan llamadas directas al POA para activar
a los sirvientes. ? Las barreras no son sólo de
– Por demanda: se registra un manejador de sirvientes. implementación sino relacionadas con
Este manejador lo puede proveer la aplicación y se
encarga de activar el sirviente.
la seguridad.
– Implícita: cierta acción sobre un sirviente ? Dominios: son un conjunto de objetos,
(servant._this) es suficiente para activarlo (objetos
transitorios)
los cuales, por alguna razón de
– Por defecto: se activa un sirviente por defecto para implementación o administrativa están
todos los objetos. separados de otros objetos.

Inter-Operabilidad Inter-Operabilidad

? Entre diferentes dominios se usan puentes ? El protocolo General Inter-ORB


para permitir la interacción. (GIOP) satisface las necesidades de
? Tipos de puentes: comunicación entre ORB´s y trabaja
? Immediate: los objetos pasan directamente del
formato de un dominio a otro (más rápida, menos
sobre cualquier protocolo de
general). transporte.
? Mediated: los elementos que interactuan se ? La implementación del GIOP que
transforman desde el formato de su dominio a
cualquier otro formato acordado mutuamente por funciona sobre TCP/IP se denomina
ambos dominios. Internet Inter-ORB Protocol (IIOP)

13
Semánticas de Ejecución y
Implementaciones de ORBs
Modelos de interacción
? Semánticas: ? Residenteen el cliente y en la
?At-most-once implementación de objeto
?Best effort (oneway)
? Basado en un Servidor
? Modelos de interacción:
?Con la interfaz estática: Operaciones
síncronas ? Basado en el Sistema
?Con la interfaz dinámica: síncrona
diferida. ? Basado en Librerías

Servicios de CORBA
Bibliografía
? Ciclo de vida de los objetos
? CORBA: A Platform for Distributed Object
? Manejo de nombres
Computing. Zhonghua Yang and Keith Duddy.
? Persistencia ? Objet Interconnections. Object adapters: Concepts
? Notificación de eventos and Terminology. Douglas Schmidt and Steve
Vinosky. SIGS C++ Report magazine 1997.
? Concurrencia y transacciones
? Sistemas Distribuidos Conceptos y Diseño.
? Seguridad Coulouris, Dollimore and Kindberg. Tercera
Edición. Addison Wesley.

14

También podría gustarte