Introducción a CORBA
CO
d
ió
Ingeniería del Software II
Curso 2008/2009
Sergio Ilarri Artigas
Sergio Ilarri Artigas
[email protected]
Índice (I)
OMG, OMA:
Core Object Model
Reference Model
Conceptos básicos: stub, skeleton, ORB
El ORB
El ORB
Invocaciones entre objetos
El lenguaje de definición de interfaces (IDL)
(IDL)
ió d i t
Interoperabilidad: GIOP, IIOP
j d d fi
El l
i
f
Índice (II)
Adaptadores de objetos: POA
Modelo CORBA:
Modelo CORBA:
Servicios CORBA: servicio de nombres
Comparación con RMI
Resumen de la terminología
Motivación
Queremos computación distribuida:
Entre plataformas hardware distintas
Entre plataformas software distintas
Manteniendo código legado
Con distintos lenguajes de programación
Con distintos lenguajes de programación
Sin depender de un vendedor concreto
Sistemas de objetos distribuidos
( bjt
ti )
(objetos cooperativos)
Solución: CORBA
Common Object Request Broker
Architecture
Introducida por el Object Management
Group(OMG) en 1989
OMG
El mayor consorcio de la industria del software
Más de 800 empresas (año 2000) y organizaciones, incluyendo la
mayoría de vendedores y desarrolladores de tecnologías de objetos
distribuidas y desarrolladores de aplicaciones
) y
p
g
y
(
,
í
í
Promueve la ingeniería de software orientada a objetos
bj t
í d
t d
ft
P
l
i
i
i
Emiten especificaciones (no hay implementación de referencia)
por consenso y de forma gratuita
t it
d f
Propone una arquitectura común para el desarrollo de
apli a iones dist ib idas o ientadas a objetos basada en
aplicaciones distribuidas orientadas a objetos basada en
especificaciones de interfaces
También estandariza el lenguaje de modelado UML
También estandariza el lenguaje de modelado UML
http://www.omg.org/
OMA
Object Management Architecture
Frameworkdonde se encajan el resto
de tecnologías adoptadas por OMG
de tecnologías adoptadas por OMG
Dos partes fundamentales:
Core Object Model
ReferenceModel
Reference Model
OMA: Core Object Model (I)
Terminología común productos OMG
Objetivos:
Portabilidad
Portabilidad
Componentes que no dependen de una
implementación concreta
implementación concreta
Interoperabilidad
i
t
Sin importar
Si
lenguaje de implementación
l
la plataforma,
l t f
l
localización, o
ió
li
OMA: Core Object Model(II)
Es un modelo de objetos clásico:
Objetos: referencia al objeto (identidad)
Operaciones: signaturas, excepciones
Operaciones: signaturas, excepciones
Interfaces
)
Tipos de datos (que no son objetos):
Ti
No especificados por el Core Object Model
Sí por CORBA
bj t
d d t
(
í
Interfaces como modo de agrupamiento de
operaciones (y como “tipos”)
Reflexión
¿Por qué es un modelode
¿ o qué es u odeode
objetosabstracto?
No lo implementa ninguna tecnología
particular (≈ clases abstractas)
)
b t
(
t
ti
l
l
Core Object Model
CORBA Object Model
OMA: Reference Model
4 Categorías de objetos
Objetos de aplicación
Objetos de dominio
Facilidades comunes
j
Objetos CORBA
programados
Áreas de aplicación:
Fabricación, finanzas, telecomunicaciones,
salud, etc.
Objetos de servicios
Objetos de servicios
Útiles para muchas aplicaciones:
i t
intercambio de datos, agentes,
internacionalización, etc.
bi d d t
t
http://www.omg.org/oma/
Para aplicaciones de cualquier dominio:
Servicio de nombres, seguridad, etc.
Reflexión
¿Están los objetos de aplicación
estandarizados?
p
j
N l
No, los define el programador
d fi
d
l
Reflexión
¿Por qué es un modelo de
¿ o qué es u odeode
referencia?
Especificación
OMGdefine los interfaces, la implementación es cosa de los vendedores
O Gde
p e e tac ó es cosa de os e dedo es
te aces, a
e os
Conceptos Básicos
Objeto CORBA:
Una entidad "virtual" que puede ser localizada por
un ORB y recibir invocaciones remotas.
Referencia a un objeto CORBA:
Estructura de datos opaca que identifica un objeto
CORBA.
Servant:
Entidad de un lenguaje de programación que
implementa uno o más objetos CORBA
CORBA
Como RMI, pero independiente del
lenguaje y más completo:
Definición de interfaces
Generación de stubsy skeletons
Definido sobre el CoreObjectModelde la OMA
Definido sobre el Core Object Modelde la OMA
Reflexión
¿Cómo podemos lograr
¿Có o pode os og a
interoperar transparentemente
con implementaciones distintas?
Interfaces
Reflexión
¿Y si las implementaciones
¿ s as
p e e tac o es
están en distintos lenguajes de
programación?
Interfaces en lenguaje neutro (IDL)
Interface Definition Language
Reflexión
¿Cómo podemos lograr
¿Có o pode os og a
la transparencia respecto a la
plataforma hardware y la red?
GIOPy CDR
General Inter-ORB Protocol-> IIOP
(formato de mensajes)
Common Data Representation
Reflexión
q
¿Por qué en RMI no necesitamos
algo del estilo del CDR?
RMI
RMI es Java-Java
J
J
Idea Básica de CORBA
Cliente
Implementación
del
cliente
Invoca un método
implementado por
el objeto remoto
Servant
Implementación
de
objeto
marshalling
marshalling
unmarshalling
unmarshalling
Servidor
Red de comunicaciones
IDL Stub
ORB
Empaqueta la invocación
Empaqueta la invocación,
envía los datos al skeleton
IDL Skeleton
Desempaqueta los datos,
Desempaqueta los datos,
invoca método en objeto,
devuelve resultados/errores
Reflexión
¿Qué hemos introducido con
¿Qué e os
t oduc do co
respecto a RMIen el dibujo
anterior?
ORB
Object Request Broker
ORB(I)
Object Request Broker (Object Bus)
Servicio distribuido que implementa las
peticiones al objeto remoto:
peticiones al objeto remoto:
Localiza al objeto remoto en la red
Comunica la petición a dicho objeto
Espera los resultados y los pasa al cliente
p
p
ó
y
Petición de
servicios a
objetos
distribuidos
Cada máquina
Cada máquina
tiene su ORB
ORB(II)
Proporciona transparencia de
localización
Nada cambia si varía la localización de
Nada cambia si varía la localización de
cliente u objeto remoto
Proporciona independenciadellenguaje
Proporciona independencia del lenguaje
Cliente y objeto CORBAremoto pueden
estar implementados en lenguajes de
programación diferentes
ORB(III)
Funciones principales:
i
t d
E
t
Enrutamiento de peticiones y respuestas
ti
t
i
También llamadas
CORBA object
handles
Transformaciones entre referencias a
objetosremotosy cadenas de caracteres
j
y
Invocación dinámica de objetos remotos
Invocación dinámica de objetos remotos
Activación/desactivación de objetos
ORB(IV)
Elementos importantes:
p
Interface Repository
(no todas las implementaciones ver siguiente transp )
(no todas las implementaciones, ver siguiente transp.)
Implementation Repository
(no todas las implementaciones, ver siguiente transp.)
(no todas las implementaciones ver siguiente transp )
Client Stubs
Server Skeletons
Portable Object Adapter(POA)
)
Dynamic Invocation /Skeleton Interface(DII /DSI)
p (
j
Repositorios
Repositorio de interfaces:
Repositorio de interfaces:
Almacena las definiciones IDL
Permite que los objetos CORBA se auto-
b
l
describan
Repositorio de implementaciones:
Permite al ORB localizar y activar (bajo
Permite al ORB localizar y activar (bajo
demanda) implementaciones de objetos
Invocaciones entre Objetos (I)
Nos centramos en la invocación estática
La usada con mayor frecuencia (también
es posible la invocación dinámica)
Similar al método convencional de
invocación en Java
Se comprueban tipos en tiempo de
compilación
compilación
Las definiciones del interfaz deben estar
disponibles cuando se compila el cliente
disponibles cuando se compila el cliente
(stub)
Invocaciones entre Objetos (II)
Un cliente necesita una referencia al
objeto remoto (IOR: Interoperable
bj
Object Reference):
(IOR I
bl
Es como el número de teléfono del objeto
j
remoto
Identifica unívocamente al servant
independientemente de su localización
p
Reflexión
¿Algún patrón de diseño
¿ gú pat ó de d se o
relacionado con los stubs?
El patrón Proxy
Reflexión
¿Algún patrón de diseño
¿ gú pat ó de d se o
relacionado con los skeletons?
El patrón Adapter
El
t ó Ad t
Reflexión
¿Y cómo conseguimos la
¿ có o co segu os a
referencia al objeto remoto?
Invocaciones entre Objetos (III)
Obtención de la referencia:
ORB.resolve_initial_references(objectNam)
Preguntando a otros objetos CORBA(como
el servicio de nombres))
Usando una stringifiedobjectreference:
Usando una stringified object reference:
object_to_string y string_to_object
en org.omg.CORBA.Object
g g
j
Puede almacenarse, por ejemplo, en disco
Invocaciones entre Objetos (IV)
Máquina del cliente
Máquina del servidor
Objeto
Cliente
S b
Stub
ORB
ORB
Objeto
Remoto
Sk l
Skeleton
ORB
ORB
IDL(I)
Interface Definition Language
Lenguaje declarativo (no sentencias)
Orientado a objetos sintaxis tipo C++
Orientado a objetos, sintaxis tipo C++
Para especificar el
Comentarios de: Introducción a CORBA - Ingeniería del Software II (0)
No hay comentarios