Anterior
 Volver
 Siguiente

 
Asunto: RE: Comentarios sobre el modelo de componentes CORBA
Fecha: Fri Jan 21 14:58:17 2000
De: David Martinez Oliveira <dmartinez@proel.es>

 
Hola a todos.

En primer lugar me gustaría isaludar a todos los lectores de esta lista.
Esta es mi segunda intervención, la primera sobre el sistema que estoy
desarrollando EDMA no tuvo demasiado éxito.

Desgraciadamente he perdido algunos de los mensajes de esta hebra y espero
no malinterpretar lo que aquí se comenta. Si es así me disculpo por
anticipado.

No soy demasiado experto en estos temas y espero no meter la pata demasiado
y aprender de todos vosotros, de forma que pueda mejorar EDMA ya que es el
elemento central de mi tesis doctoral.

Me gustaría comentar como soluciona EDMA algunos de los problemas que
estais comentando en esta hebra y que me indicaseis vuestra opinión al
respecto.

At 18.55 20/1/00 +0100, you wrote:
>>En esto tienes razón. Se debe ser muy cuidadoso en identificar y definir
>los
>>interfaces locales para evitar que en algún momento se puedan (o se deban,
>>por cualquier tipo de exigencia) convertir en no-locales.

En EDMA la distribución de componentes se realiza a través del sistema de
extensión SIU. Básicamente lo que hace es generar el código proxy/stub de
forma dinámica puesto que toda la información de interface está disponible
en tiempo de ejecución.

De esta forma se puede utilizar cualquier clase diseñada para trabajar
localmente de forma remota, simplemente moviendo la complejidad de la
comunicación e incluso la semántica de invocación (en el caso general) a
este sistema de extensión. La implementación actual es todavía muy
rudimentaria y es probable que me esté dejando cosas en el tintero por lo
cual cualquier comentario sería bien recibido.

Como ejemplo de como funcionaría esta forma de trabajar muestro un ejemplo
de un posible código:

objLocal=NewObj("MICLASE",NULL);
objRemoto=NewObj("REMOTO:MICLASE",NULL);
objRemoto1=NewObj("REMOTO_ONEWAY:MICLASE",NULL);
objRemoto2=NewObj("REMOTO_BLOCKING:MICLASE",NULL);


donde REMOTO, REMOTO_ONEWAY, REMOTO_BLOCKING son clases proxy que
interceptan todas las interacciones con el objeto realizando la llamada
remotamente... se pueden definir todas las clases de estos proxys que se
deseen y cada uno todo lo complejo que sea necesario (es código C). Además
se pueden seleccionar en tiempo de ejecución simplemente modificando una
cadena de caracteres.

>
>Claro, pero lo que ocurre es algo parecido a lo que comentaba en el caso de
>la palabra virtual:  Puede ocurrir que desarrolles varios trabajos
>utilizando un interfaz local y al tercero te des cuenta de que realmente
>necesitas que no lo sea.  Pero permitidme injerir en este punto un trocito
>de otra carta de Antonio Vallecillo.

Con relación a la cuestión de métodos virtuales o no virtuales. EDMA
incorpora el concepto de objeto virtual. Cualquier objeto puede ser
declarado como virtual y en ese momento, cualquier método virtual o no, o
incluso cualquier propiedad del mismo se puede sobrecargar dinámicamente.

Este concepto se introdujo ya que parecía más que posible que para una
determinada clase en un determinado contexto, un determinado método no
debería ser virtual y en otro contexto si que debería serlo, aún cuando la
definición de la clase fuera correcta en los dos casos. También sucedía, en
algunas de las aplicaciones desarrolladas, que attributos de los objetos
eran modelados correctamente como propiedades en la definición de la clase
para un caso concreto, pero a medida que la jerarquía de herencia crecía,
serían manejadados de una forma más lógica a través de métodos. Bien, esto
puede parecer un poco raro pero estas situaciones aparecían en un entorno
con herencia dinámica.

>El problema que planteas de las llamadas "oneway" no me había ocurrido,
>pero sí, a la hora de hacer las "colocaciones" habría que ser cuidadosos en
>estos casos, aunque la idea que apunta Diego podría ser la más sencilla
>para resolverlo (¡hasta que se acabe el pool de hebras!).
>

He perdido el mail en el que se plantea este problema, pero me gustaría
conocer en que consiste.

Muchas gracias y un saludo
David Martínez Oliveira


 Anterior
 Volver
 Siguiente