PDF de programación - Tecnologías de Objetos Distribuidos: OMG-CORBA (Invocación Dinámica)

Imágen de pdf Tecnologías de Objetos Distribuidos: OMG-CORBA (Invocación Dinámica)

Tecnologías de Objetos Distribuidos: OMG-CORBA (Invocación Dinámica)gráfica de visualizaciones

Publicado el 21 de Febrero del 2021
278 visualizaciones desde el 21 de Febrero del 2021
304,3 KB
32 paginas
Creado hace 18a (13/12/2005)
Sistemas de
Información

Tecnologías de objetos distribuidos:
OMG-CORBA. Invocación dinámica

Agradecimientos: Juan Pavón Mestras (UCM), Jesus Villamor Lugo y Simon Pickin (UC3M), Juan José Gil Ríos (Terra)

1

CORBA
DII (Dinamic Invocation Interface)
DII

Ejemplos

[email protected]

2

Motivación
¿Qué es?
¿Para qué sirve?
¿Cómo se usa?
¿Cómo funciona?

¿Qué es?
¿Para qué sirve?
¿Cómo se usa?
¿Cómo funciona?

Repositorio de interfaces

CORBA Invocación dinámica
Motivación
El problema:

El modelo basado en stubs tiene algunas restricciones

Los stubs son generados en tiempo de compilación
Un cambio en el IDL implica rehacer todos los clientes

Hay algunas aplicaciones (navegadores, depuradores, intérpretes) que

requieren flexibilidad mayor porque:

No saben de antemano que interfaz tendrán los objetos a los que accederán
Necesitan la existencia de mecanismos que les permitan:

Descubrir esas interfaces
Crear de forma dinámica la petición de operación

La solución: CORBA ofrece una solución basada en:

El repositorio de interfaces: IR (Interface Repository)

Guarda la descripción de las interfaces

La interfaz de invocación dinámica: DII (Dinamic Invocation Interface)
Permite construir en tiempo de ejecución una petición de una determinada

operación

[email protected]

3

CORBA
DII (Dinamic Invocation Interface)
¿Qué es?

Interfaz Corba que permite la construcción dinámica

de invocaciones en tiempo de ejecución para un
determinado objeto remoto

¿Para qué sirve?

Para dar más flexibilidad al cliente ya que no necesita

conocer el interfaz de los objetos a los que va a
invocar en tiempo de compilación puede:
descubrir el interfaz de los objetos
construir la invocación
en tiempo de ejecución

[email protected]

4

CORBA
DII (Dinamic Invocation Interface)

¿Cómo se usa?

Todos estos datos se obtienen del Repositorio de Interfaces (IR)
De cara al servidor la invocación es idéntica a una que llega a través

de la interfaz estática, pero dentro del cliente se logra una
flexibilidad fundamental en arquitecturas complejas y dinámicas.

[email protected]

5

En vez de utilizar una llamada a una función determinada de un
objeto concreto, que el cliente puede especificar a través de una
llamada o conjunto de ellas:

el objeto
la invocación
los parámetros a pasar a la invocación

Una invocación dinámica se compone de:

Una referencia al objeto,
Una operación
Una lista de parámetros

CORBA (Invocación dinámica)
¿Cómo funciona?

La interfaz del servidor se descubre en tiempo de

ejecución, utilizando el repositorio de interfaces

La petición se construye con la interfaz de invocación

dinámica DII

Client

Object

Implementation

Dynamic
Dynamic
Invocation
Invocation

Client
Client
IDLIDL
Stubs
Stubs

Server
Server

IDL Stubs
Stubs
IDL

Object
Object
Adapter
Adapter

Request
Request

Object Request
Object

Request Broker

Broker CoreCore

El Cliente no necesita Stubs de compilación
El Servidor percibe la misma llamada

[email protected]

6

CORBA IR (Interface Repository)
¿Qué es?

Un repositorio de información que permite:

Es un servicio estándar CORBA disponible a través del

ORB que ofrece objetos persistentes que representan
la información IDL de los interfaces disponibles en
CORBA, de una forma accesible en tiempo de
ejecución (run-time)

Localizar los objetos en tiempo de ejecución
Activar la implementación de los objetos (esta funcionalidad

ahora la realiza el POA)

[email protected]

7

CORBA IR (Interface Repository)
¿Para qué sirve?
Proporciona información de los objetos en tiempo de

ejecución puede ser utilizado:
Por el ORB para realizar peticiones.
Por el Programador de aplicaciones

Para acceder a objetos cuya interfaz no se conocía en tiempo de

compilación

Para determinar que operaciones son válidas para un objeto.

Otras funcionalidades de IR:

Instalación de implementaciones
Control de las políticas para la activación y ejecución de las

implementaciones de los objetos. Por ejemplo, los permisos por
usuario para acceder e invocar los objetos son especificados aquí.

Con la introducción de POA en CORBA 2.2, las políticas de

activación y ejecución se localizan ahora dentro de POA, en el
propio código del servidor en lugar de hacerlo en IR

[email protected]

8

CORBA IR (Interface Repository)
¿Cómo funciona?
Hay que obtener una referencia al Servicio proporcionado por el ORB
El servicio IR proporciona una base de datos de definiciones de objetos

Cada objeto representa una definición IDL
Los objetos están anidados en una estructura que refleja las definiciones IDL
Es posible navegar y buscar definiciones en dicha estructura

Las definiciones pueden suministrarse al Repositorio de Interfaces:

Usando una utilidad (irfeed en ORBacus, putidl en OrbixWeb, idl2ir en Visibroker)
Desde cualquier programa usando las funciones de escritura de la interfaz del

Repositorio de Interfaces

Se puede acceder al Repositorio de Interfaces como un servicio bien

definido (se accede al objeto Repository raíz de la jerarquía):

org.omg.CORBA.Object obj = orb.resolve_initial_references(“InterfaceRepository”);
org.omg.CORBA.Object obj = orb.resolve_initial_references(“InterfaceRepository”);
org.omg.CORBA.Repository intfRepository = org.omg.CORBA.RepositoryHelper.narrow(obj);
org.omg.CORBA.Repository intfRepository = org.omg.CORBA.RepositoryHelper.narrow(obj);
9

[email protected]

CORBA IR (Interface Repository)
¿Cómo funciona?
Está implementado como un conjunto de objetos

persistentes (metadatos) que representan la información
que contiene (un objeto por cada tipo de construcción IDL)
ModuleDef
InterfaceDef
OperationDef
ParameterDef
AttributeDef
ConstantDef
ExceptionDef
TypeDef

además del objeto

Repository, que contiene a todos

[email protected]

10

CORBA IR (Interface Repository)

Contained

Container

Repository

ConstantDef

TypeDef

ModuleDef

ExceptionDef

InterfaceDef

ConstantDef

TypeDef

InterfaceDef

ExceptionDef

ModuleDef

ConstantDef

TypeDef

OperationDef

ExceptionDef

AttributeDef

ParameterDef

ExceptionDef

11

CORBA
Invocación Estática vs Dinámica
Invocaciones Estáticas
Más fáciles de programar
Chequeo de tipos más robusto
Buen rendimiento
Autodocumentado

Invocaciones Dinámicas

Sistema más extensible
Soporte de búsqueda de servicios en “run-time”
Permite escribir código más genérico

[email protected]

12

CORBA: Invocación Dinámica
Procedimiento

1.

2.

4.

5.
6.

Partiendo del IR obtener:


la interfaz
la descripción del método (si no se utiliza create_operation_list)


Crear y configurar el objeto request. (2 formas):


crear una lista de argumentos NVList y luego un objeto request
crear un objeto request y luego añadirle los argumentos


Solicitar al ORB que envie la petición al objeto destino con invoke
(3 formas de invocar la petición):



Síncrona
síncrona diferida
asíncrona


Recoger los resultados (con return_value del objeto request)
Liberar los recursos (del objeto request y la NVList si existe)

[email protected]

13

CORBA: Invocación Dinámica
Procedimiento

Client Object

1. Obtener el nombre de la interfaz

get_interface()

2. Obtener la descripción del método

lookup_name ()
describe ()

3. Crear la lista de argumentos

create_list ()
add_item ()...add_item ()...add_item ()

Object

Interface
Repository

4. Crear la petición

create_request ()

5.

Invocar el método remoto

obien
asíncrona(“oneway”):

send ()

14

invocaciónsíncrona:
obien
síncronadiferida:

3 formas de
hacer la
invocación
remota

invoke ()

send()
get_response ()

Modelos de Interacción

invoke()

bloquear

send()

versiones anteriores:
send_deferred()

get_response()
bloquear

send()

versiones anteriores:
send_oneway()

Síncrono

Síncrono Diferido

Asíncrono

Invocación síncrona (bloqueante): se envía la petición y se obtiene un

resultado. (semántica de “exactly-once” y si hay una excepción “at-most-once”)
Invocación sincrónica diferida (no bloqueante): disponible únicamente con
invocación dinámica. Antes de invocar get_response(), se puede invocar
poll_response() para saber si la respuesta está lista.

Invocación asíncrona o oneway (semántica de “best-effort” ¡CUIDADO! )

[email protected]

15

La Interfaz de Invocación
Dinámica (DII)
Existen 4 interfaces de pseudo-objetos CORBA:

Operaciones que soportan todos los objetos CORBA. Para

CORBA::Object

invocaciones dinámicas:

get_interface()
create_request()
_request()

CORBA::Request

Representa una petición de operación y ofrece métodos para darle

parámetros, para invocarla, y leer los resultados

CORBA::NVList

CORBA::ORB

Permite construir listas de parámetros

Permite crear objetos NVList, y enviar y recibir múltiples peticiones

[email protected]

16

Interfaces de Invocación Dinámica

get_implementation
get_implementation
get_interface
get_interface
is_nill
is_nill
duplicate
duplicate
release
release
is_a
is_
  • Links de descarga
http://lwp-l.com/pdf18888

Comentarios de: Tecnologías de Objetos Distribuidos: OMG-CORBA (Invocación Dinámica) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad