Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CORBA
DII (Dinamic Invocation Interface)
DII
Motivacin Qu es? Para qu sirve? Cmo se usa? Cmo funciona?
Repositorio de interfaces
Qu es? Para qu sirve? Cmo se usa? Cmo funciona?
Ejemplos
mcfp@it.uc3m.es 2
Hay algunas aplicaciones (navegadores, depuradores, intrpretes) que requieren flexibilidad mayor porque:
No saben de antemano que interfaz tendrn los objetos a los que accedern Necesitan la existencia de mecanismos que les permitan:
Descubrir esas interfaces Crear de forma dinmica la peticin de operacin
CORBA
DII (Dinamic Invocation Interface)
Qu es?
Interfaz Corba que permite la construccin dinmica de invocaciones en tiempo de ejecucin para un determinado objeto remoto
Para qu sirve?
Para dar ms flexibilidad al cliente ya que no necesita conocer el interfaz de los objetos a los que va a invocar en tiempo de compilacin puede:
descubrir el interfaz de los objetos construir la invocacin
en tiempo de ejecucin
mcfp@it.uc3m.es
CORBA
DII (Dinamic Invocation Interface)
Cmo se usa?
En vez de utilizar una llamada a una funcin determinada de un objeto concreto, que el cliente puede especificar a travs de una llamada o conjunto de ellas:
el objeto la invocacin los parmetros a pasar a la invocacin
Todos estos datos se obtienen del Repositorio de Interfaces (IR) De cara al servidor la invocacin es idntica a una que llega a travs de la interfaz esttica, pero dentro del cliente se logra una flexibilidad fundamental en arquitecturas complejas y dinmicas.
mcfp@it.uc3m.es 5
Object Implementation
Dynamic Invocation
Object Adapter
Request
Object Request Broker Core
Es un servicio estndar CORBA disponible a travs del ORB que ofrece objetos persistentes que representan la informacin IDL de los interfaces disponibles en CORBA, de una forma accesible en tiempo de ejecucin (run-time)
mcfp@it.uc3m.es
Se puede acceder al Repositorio de Interfaces como un servicio bien definido (se accede al objeto Repository raz de la jerarqua):
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);
mcfp@it.uc3m.es 9
ConstantDef
TypeDef
ModuleDef
ExceptionDef
InterfaceDef
ConstantDef
TypeDef
InterfaceDef
ExceptionDef
ModuleDef
ConstantDef
TypeDef
OperationDef
ExceptionDef
AttributeDef
ParameterDef
ExceptionDef
11
CORBA
Invocacin Esttica vs Dinmica
Invocaciones Estticas
Ms fciles de programar Chequeo de tipos ms robusto Buen rendimiento Autodocumentado
Invocaciones Dinmicas
Sistema ms extensible Soporte de bsqueda de servicios en run-time Permite escribir cdigo ms genrico
mcfp@it.uc3m.es 12
2.
4.
Recoger los resultados (con return_value del objeto request) Liberar los recursos (del objeto request y la NVList si existe)
mcfp@it.uc3m.es
13
Object
Interface Repository
3.
4. 5.
Crear la peticin
create_request ()
Modelos de Interaccin
send() invoke()
bloquear
versiones anteriores: send_deferred()
send()
versiones anteriores: send_oneway()
get_response()
bloquear
Sncrono
Sncrono Diferido
Asncrono
Invocacin sncrona (bloqueante): se enva la peticin y se obtiene un resultado. (semntica de exactly-once y si hay una excepcin at-most-once) Invocacin sincrnica diferida (no bloqueante): disponible nicamente con invocacin dinmica. Antes de invocar get_response(), se puede invocar poll_response() para saber si la respuesta est lista. Invocacin asncrona o oneway (semntica de best-effort CUIDADO! )
mcfp@it.uc3m.es 15
CORBA::Request
Representa una peticin de operacin y ofrece mtodos para darle parmetros, para invocarla, y leer los resultados
CORBA::NVList
Permite construir listas de parmetros
CORBA::ORB
Permite crear objetos NVList, y enviar y recibir mltiples peticiones
mcfp@it.uc3m.es 16
CORBA::Object
= deprecated
add_arg invoke send_oneway send_deferred get_response poll_response delete object_to_String string_to_object create_list create_operation_list get_default_context create_environment
CORBA::Request
CORBA::NVList
CORBA::ORB
17
Escenarios (1/3)
1. Escenario hgalo-usted-mismo
Cliente Object InterfaceDef OperationDef ORB
create
NVList
repeat
create
Request
Escenarios (2/3)
2. Escenario ORB-puede-ayudar
Cliente Object InterfaceDef ORB
create
NVList
repeat
add_value
...
create
Request
mcfp@it.uc3m.es
19
Escenarios (3/3)
3. Escenario sin NVList explicita
Cliente Object InterfaceDef OperationDef
create
Request
repeat
El uso del mtodo add() en vez de add_item() ya no es estndar. El uso del mtodo return_value() ya no es estndar
mcfp@it.uc3m.es
22
El uso del mtodo add() en vez de add_item() ya no es estndar. El uso del mtodo return_value() ya no es estndar
23
El uso del mtodo add_X_arg() en vez de add_arg() ya no es estndar. El uso de los mtodos set_return_type() y return_value() ya no es estndar
mcfp@it.uc3m.es 24
Modelos de Interaccin
Invocaciones Sncronas
r.invoke();
Invocaciones Asncronas
r.send(); // antes: send_oneway()
Tambin existen:
El precio de la libertad
Un Benchmark sobre el ORB Visibroker
Se realizaron 1.000 invocaciones remotas
Pings Estticos
Rendimiento:
131 msecs
3,3 msecs
3,2 msecs
Puede utilizar la invocacin Dinmica Invocacin Dinmica Utiliza Applet y stubs descargables. Luego, el Applet hace uso de la Invocacin Esttica
mcfp@it.uc3m.es
27
Resumen
La invocacin dinmica sirve permite crear aplicaciones que descubren nuevas interfaces y sean capaces de utilizarlas, dotando as de mayor flexibilidad al sistema La informacin para poder construir dinmicamente un objeto Request se puede encontrar en el Repositorio de Interfaces
mcfp@it.uc3m.es
28
Algunas referencias
Orfali, R., Harkey D. Y Edwards J. (1997). Instant CORBA. New York: John Wiley &Sons inc. ISBN 0-471-18333-4. IONA, OrbixWeb Programming Guide (1996). Noviembre 1996. Orfali, R. y Harkey D. (1997). Client/Server Programing with JAVA and CORBA. New York: John Wiley &Sons inc. ISBN 0471-16351-1.
mcfp@it.uc3m.es
29
mcfp@it.uc3m.es
30
mcfp@it.uc3m.es
31
mcfp@it.uc3m.es
32