PDF de programación - ORBit2 como middleware para una aplicación multicapa, usando el servicio de nombres CORBA

Imágen de pdf ORBit2 como middleware para una aplicación multicapa, usando el servicio de nombres CORBA

ORBit2 como middleware para una aplicación multicapa, usando el servicio de nombres CORBAgráfica de visualizaciones

Actualizado el 16 de Junio del 2017 (Publicado el 14 de Enero del 2017)
569 visualizaciones desde el 14 de Enero del 2017
768,8 KB
29 paginas
Creado hace 18a (24/05/2005)
ORBit2 como middleware para una aplicación

multicapa, usando el servicio de nombres

CORBA

Alejandro García Castro, Juan Jos é Sánchez Penas

[email protected], [email protected]

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 1/29

Objetivo

Objetivo de la charla: explicación del uso que se
está haciendo de ORBit2 en una arquitectura
cliente/servidor, sus limitaciones en la actualidad y las
soluciones que hemos implementado para
solucionarlas.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 2/29

Estructura de la charla

1. Contextualización, el proyecto Fisterra
2. ¿Qué es CORBA?
3. Arquitectura multicapa, el proyecto Fisterra
4. ORBit2 como middleware de comunicaciones, el

servicio de nombres

5. Ejemplos de funcionamiento
6.
7. Conclusiones y trabajo futuro

Implementación de localizadores fijos en ORBit2

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 3/29

Contextualización

Necesidades para la implantación de software
libre en los escritorios de la empresa: aplicaciones
de gestión integradas con el escritorio.
Creación del proyecto Fisterra desde Igalia, año
2003.
Desarrollo del proyecto en función del interés de la
comunidad.
Elsoftware libre en la empresa, posibilidades y
problemas, un campo abierto.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 4/29

Contextualización (II)

Arquitectura de capas (Martin Fowler, Analysis
Patterns, 1997).
Selección del entorno de desarrollo del escritorio
GNOME.
Posibilidades para integrarlo con desarrollos de
servidor:

Glib, independencia del interfaz.
Comunicaciones, integración con tecnología:
CORBA (ORBit2).
Costes de adaptación, no era el primer uso de
estas bibliotecas fuera del escritorio.
Direcciones de objetos fijas.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 5/29

Contextualización (y III)

Principal problema encontrado en las
comunicaciones: gestión de uso de referencias a
los servicios de forma manejable.
Utilización del servicio de nombres CORBA para la
gestión de las referencias.
Durante el proyecto intentamos solucionar este
problema mediante la modificación de ORBit2.
Nuevas posibilidades en la utilización de ORBit2.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 6/29

¿Qué es CORBA?

Estándar para la integración de componentes de
comunicaciones, creado por la OMG (1989).
Permite la comunicación de objetos en un entorno
distribuido de forma transparente: middleware
de comunicaciones.
Pensado para entornos multilenguaje.
El estándar define todas las partes de la
arquitectura, desde el protocolo hasta servicios de
apoyo básicos.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 7/29

¿Qué es CORBA? (II)

La base de la comunicación es el ORB (Object
Request Broker), encargado de la encapsulación
de las comunicaciones.
El funcionamiento se basa en la publicación por
parte del ORB de un interfaz a los métodos de los
objetos que implementemos.
Definición de interfaces mediante la utilización de
un lenguaje especial: IDL(Interface Definition
Language)

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 8/29

¿Qué es CORBA? (III)

Compilación de estos interfaces para la
generación del código de comunicaciones.
Definición de datos y métodos utilizados, entornos
multilenguaje.
“Contenedores de objetos” : POA (Portable Object
Adapter).
Más jerga de CORBA: stubs, skeletons, servants,
POAmanager, IORs (explicación posterior), etc.
El servidor de nombres: “el DNS de CORBA”.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 9/29

¿Qué es CORBA? (y IV)

Cliente

Servidor

servant

skel−impl

IIOP (IOR)

POA

stub

ORB

ORB

skel

POAManager

objeto cliente

delegate

ORBit2

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 10/29

Arquitectura multicapa

proyecto Fisterra.
Arquitectura de capas (Martin Fowler, 1997).
Necesidad de middleware de comunicaciones
para la transparencia en la orientación a objetos.
El contenedor de objetos como servidor,
propiedades de los objetos: comunicaciones,
gestión de la información persistencia,
transacciones, etc.
Completamente desarrollado con tecnologías
GNOME.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 11/29

Arquitectura multicapa (II)

Cliente: es una aplicación de ventanas,
desarrollada como cualquier otra aplicación de
escritorio GNOME, que se encarga de interaccionar
con el usuario. Patrón MVC intensivo.
Servidor: está formado por componentes que
implementan las acciones necesarias para llevar a
cabo los servicios del interfaz de comunicaciones.
El contenedor de EGBs.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 12/29

Arquitectura multicapa (y III)

cliente fisterra

servidor de base de datos

servidor fisterra

servidor LDAP

cliente fisterra

servidor nombres (CORBA)

servidor de base de datos

servidor fisterra

replicado

cliente fisterra

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 13/29

ORBit2 como middleware

Presentación acerca de ORBit2 en este sentido de
Frank Rehberger en la GUADEC 2004 (SSL).
Interés de la integración con el escritorio con un
middleware para otras soluciones.
En nuestro caso particular uso en arquitectura
multicapa.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 14/29

ORBit2 como middleware (II)

configuración

cliente:

<URL servidor nombres>

...

cliente

fisterra

(3)

(6)

servidor

fisterra

(5)

<referencia>

servidor

sesiones

fisterra

(1)

(4)

servidor

nombres

CORBA

(7)

(8)

Objeto

sesión

base

de

datos

(2)

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 15/29

ORBit2 como middleware (III)

Para conocer las localizaciones de objetos CORBA se
utilizan los IORs (Interoperable Object References).
Se pueden convertir en cadenas de texto:

IOR:010000002b00000049444c3a6f6d672e6f7267
2f436f734e616d696e672f4e616d696e67436f6e74
6578744578743a312e300000010000000100000024
000000010000000100000001000000140000000100
000001000105000000000901010000000000

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 16/29

ORBit2 como middleware (IV)

Parte de la información que incluye el IOR en el
caso de IIOP (comunicación por TCP/IP) es:

nombre de la máquina
número de puerto
object key

La object key identifica a un objeto de forma
unívoca dentro de un ORB. Incluye información
sobre el POA en el que se ejecuta.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 17/29

ORBit2 como middleware (V)

Las cadenas en ese formato son engorrosas, por lo
que se definen representaciones más legibles:
corbalocs:

corbaloc:iiop:1.2@localhost:4444/%00%00%00
%00%7e%c8%fc%d9%70%8a%f9%5f%88%40%10%3

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 18/29

ORBit2 como middleware (VI)

El corbaloc mantiene la object key, que incluye el
identificador del POA, por lo que sigue siendo
incomprensible.
Lo que es peor es que además es variable.
La identificación de un objeto varía cada vez que
lo levantamos.
El principal problema es que imposibilita una
configuración fija para identificar un objeto.
Aunque la mayoría de ORBs actuales incluyen una
forma de poder sustituir el corba key por una
cadena fija, ORBit2 no tiene esa posibilidad.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 19/29

ORBit2 como middleware (VII)

Solución: Uso de un servidor de nombres.
Conversión de nombres en localizaciones
jerárquicas (directorio), en los IORs:
myorb/mysite/fisterra_service
Podemos buscar el IOR de objetos en esta
estructura.
Pero ... se pueden encontrar todos excepto el del
propio servidor de nombres que es también un
objeto, por ser el primero.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 20/29

ORBit2 como middleware (y VIII)

La solución que implementamos para resolver este
segundo problema es añadir a ORBit2 un sistema
para poder registrar y acceder a objetos
sustituyendo el corba key por un nombre fijo.

corbaloc:iiop:1.2@localhost:4444/NameService

Parámetro de configuración para cliente y servidor.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 21/29

Ejemplos de funcionamiento

Ejemplos de funcionamiento

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 22/29

Implementación en ORBit2

Uso del mensaje LocateReply.
Mensaje se usa como respuesta al mensaje
LocateRequest.
Se envía antes de cada conexión como mejora del
rendimiento.
El cliente pide con el localizador y se le responde
con el IOR real almacenado para ese objeto.
El protocolo es el responsable de esta nueva
petición, por lo que es totalmente transparente al
programador.

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 23/29

Implementación en ORBit2 (II)

Se incluye una nueva estructura en el ORB para
almacenar esta relación.

struct CORBA_ORB_type {

struct ORBit_RootObject_struct
...
GPtrArray

root_object;

*adaptors;

/* Esta es la tabla hash que utilizaremos */

GHashTable
GSList
GHashTable
...

*forw_binds;
*current_invocations;
*initial_refs;

ORBit2 como middleware para una aplicaci ón multicapa, usando el servicio de nombres CORBA– p. 24/29

Implementación en ORBit2 (III)

Comprobación de la tabla hash para las peticiones.

..
  • Links de descarga
http://lwp-l.com/pdf1774

Comentarios de: ORBit2 como middleware para una aplicación multicapa, usando el servicio de nombres CORBA (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