Que rápido. Me parece que pasó menos de una semana.

Unas preguntas:

1. ¿Cómo publicas los objetos que reciben mensajes remotos para ser
usados por las máquinas remotas? ¿Existe un servicio básico que indica
cuáles son etos objetos y los mensajes que están dispuestos a recibir?
2. ¿Usas colas de mensajes? ¿Cómo haces en caso de que llegue un mensaje
a un objeto cuando aún está ejecutando el mensaje anterior?
3. Cuando declaras una clase en M1 y la exportas a M2, ¿recompilas la
clase en M2 o simplemente envías el objeto compilado?
4. Los objetos que son pasados como parámetro son siempre serializados o
también se puede enviar un proxy de ellos (por ejemplo podría ser "ob
asProxy") de modo que automáticamente se cree un proxy de ese objeto en
M2 apuntando al objeto en M1. En EJB eso se puede hacer aunque es una
mala práctica, porque luego es natural que el protocolo de comunicación
se vuelva "chatty". 
5. ¿Porqué quieres los objetos que no se han usado se serialicen?
¿Quedan vivos los resultados que se enviaron a otra máquina?
6. ¿Cómo implementarías map-reduce con AjTalk? Suponiendo que tengo un
arreglo de proxies en M0 donde cada elemento del arreglo tiene un proxy
a M1, M2, ... M10 (supogamos que son 10 máquinas) y que cada petición se
hace de manera asíncrona (cuando la respuesta se recibe se ejecuta un
bloque). ¿Consideras eso implementable?

Tengo entendido que en Squeak existe un ambiente distribuido de objetos
llamado Croquet. Y bueno en Open Cobalt, que al parecer es un mundo
virtual construido sobre Croquet, se puede hacer mundos 3D sobre los que
se puede ejecutar aplicaciones Windows y compartirlas con otros
usuarios...

http://en.wikipedia.org/wiki/Open_Cobalt

Según recuerdo la gran idea de Croquet es que en vez de enviar los
objetos para ejecutar de manera remota, se puede enviar "la computación"
para ejecutarla localmente y de esa manera obtener un mejor desempeño.

Saludos,
Guillermo.

On Sun, 2010-10-17 at 17:44 -0300, Angel Java Lopez wrote:
> Hola gente!
> 
> Ya tengo objetos distribuidos en mi pet project AjTalk:
> 
> http://pastie.org/1213856
> 
> Puedo comunicar N maquinas, cada una puede ser cliente o servidora de
> otra maquina.
> Puedo declarar una clase en maquina M1, y exportarla a M2.
> Puedo ejecutar texto definido en M1, en la maquina M2.
> Puedo evaluar texto definido en M1, en la maquina M2, y serializar
> (como copia) el resultado calculado en M2, para que viaje y se
> reifique en M1.
> Puedo evaluar texto definido en M1, en la maquina M2, y pedirle que
> devuelva el proxy que apunta a ese objeto que queda en M2.
> Usando el proxy en M1, como un objeto mas, puedo enviar mensajes al
> objeto remoto que todavia reside en M2.
> 
> Hay que mejorar puntos, pero la "base esta" ;-)
> 
> Proximos pasos: investigar la idea de "objeto intermedio" de Mariano,
> implementarlo, implementar que los objetos que no se usan desde un
> tiempo se serializen, implementar transacciones de objetos como la
> describi en otro thread... pero tengo que ver en que orden, que
> tiempo.
> 
> Nos leemos!
> 
> Angel "Java" Lopez
> http://www.ajlopez.com
> http://twitter.com/ajlopez
> 
> 
> 2010/10/11 Andres Valloud <[email protected]>
>         Ah, para clarificar.
>         
>         >> Che, si es esto
>         
>         esto = "tener proxies y mandar mensajes remotos a objetos sin
>         perder
>         la identidad del objeto", por ejemplo...
>         
>         >> a lo que Mariano se referia, no nos olvidemos de
>         >> GemStone que hace no se, 25 años que esta con su base de
>         objetos
>         >> (esencialmente se puede ver como una imagen compartida
>         entre N otras
>         >> imagenes, con transacciones).  Si eso
>         
>         
>         eso = "resolver el problema de distribucion de mensajes a
>         objetos
>         distribuidos de manera razonablemente general, como por
>         ejemplo lo
>         hace GemStone"...
>         
>         >> es lo que aca se describio como
>         >> "trivial", desde ya que de ninguna manera es trivial ese
>         problema.
>         >> Trivial podra ser una primera aproximacion a la
>         serializacion, pero
>         >> literalmente "objetos distribuidos" asi como en GemStone,
>         ni ahi.
>         
>         
>         Andres.
>         
>         
>         
>         2010/10/11 Angel Java Lopez <[email protected]>:
>         > Hola gente!
>         >
>         > Ah! Yo, por lo menos, nunca mencione GemStone (que alguien
>         bueno de Sugar
>         > (Smalltalk Users Group de Argentina) me comento en los
>         noventa, el bueno de
>         > Leandro Caniglia, recuerdo su implementacion en Luchetti,
>         que recuerde).
>         >
>         > Lo que me gustaria (tengo codigo, pero no tengo test, asi
>         que nada de
>         > publicado ahora), es:
>         >
>         > anObject msg: par1 ....
>         >
>         > y anObject sea un proxy local, que deriva a un objeto
>         residente en otra
>         > maquina ese mensaje. El programador puede haberlo creado
>         local (como para
>         > probar su algoritmo en una sola maquina) o puede haberlo
>         creado en otro nodo
>         > de una red. En los casos de uso que tengo en mente, el
>         programador sabe que
>         > hay un costo en eso, asi que no esta conversando con esos
>         objetos a cada
>         > milisegundo. Es mas: te doy una tarea, despues, llegado el
>         caso, en algun
>         > momento, por otro canal, recibire una respuesta.
>         >
>         > Tambien quiero implementar:
>         >
>         > anObject msg: par1 ...
>         >
>         > y que anObject por abajo, derive el mensaje a uno, a todos,
>         o a algunos de
>         > otros objetos, remotos o locales.
>         >
>         > Y algo ortogonal a todo eso, que tengo implementando, pero
>         tendria que
>         > unirlo con lo de remoting:
>         >
>         > anObject msg: par1 ...
>         >
>         > que anObject reciba el mensaje, y lo atienda en su propio
>         thread. Recibe el
>         > mensaje, lo coloca en una cola en memoria, y lo atiende en
>         su propio thread,
>         > cuando este disponible. El objeto que envie el mensaje sigue
>         su camino. Esto
>         > permite implementar algoritmos en paralelo, sin el tema "te
>         envio algo, y te
>         > espero a que termines para seguir yo".
>         >
>         > Interesante el paper que enviaste, lo conocia, pero no lo
>         recordaba. Ya lo
>         > mando a twitter.
>         >
>         > No entendi si "si es esto a lo que Mariano se referia", y
>         "Si eso es lo que
>         > aca", digo, no entendi "si esto" en la primera frase se
>         refiere a lo mismo a
>         > lo que se refiere "si eso", en la segunda.
>         >
>         > Nos leemos!
>         >
>         > Angel "Java" Lopez
>         > http://www.ajlopez.com
>         > http://twitter.com/ajlopez
>         >
>         > 2010/10/11 Andres Valloud <[email protected]>
>         >>
>         >> Che, si es esto a lo que Mariano se referia, no nos
>         olvidemos de
>         >> GemStone que hace no se, 25 años que esta con su base de
>         objetos
>         >> (esencialmente se puede ver como una imagen compartida
>         entre N otras
>         >> imagenes, con transacciones).  Si eso es lo que aca se
>         describio como
>         >> "trivial", desde ya que de ninguna manera es trivial ese
>         problema.
>         >> Trivial podra ser una primera aproximacion a la
>         serializacion, pero
>         >> literalmente "objetos distribuidos" asi como en GemStone,
>         ni ahi.
>         >>
>         >> Ah, hablando de esto, hace poco encontre este articulo que
>         me parecio
>         >> interesante.
>         >>
>         >> http://www.rgoarchitects.com/Files/fallacies.pdf
>         >>
>         >> 2010/10/11 Angel Java Lopez <[email protected]>:
>         >> > Hola gente!
>         >> >
>         >> > Interesante la discusion del Thread "Blog", pero tambien
>         algo se fue por
>         >> > las
>         >> > ramas... Cambio de titulo en este mensaje.
>         >> >
>         >> > Estuve agregando objetos distribuidos a mi pet project
>         [1], quedo algo
>         >> > asi:
>         >> >
>         >> > http://pastie.org/1213856
>         >> >
>         >> > Tengan encuenta que no tengo libreria de clases de base,
>         asi que tengo
>         >> > que
>         >> > comenzar desde nil subclass:... ';-)
>         >> >
>         >> > Puedo:
>         >> >
>         >> > - Levantar un servidor (tecnologia Remoting .NET), en
>         nodo A.
>         >> > - Levantar un cliente remoto a ese servidor, en nodo B.
>         >> > - Definir una clase en nodo B.
>         >> > - Exportar su definicion de B a nodo A.
>         >> > - Ejecutar desde nodo B algo en nodo A.
>         >> > - Evaluar en nodo A y devolver el objeto serializado
>         (contemplando
>         >> > grafos
>         >> > con ciclos, repeticion de objetos, etc..) a B.
>         >> >
>         >> > Me falta evaluar en nodo A y que el resultado quede en A,
>         viajando a B
>         >> > una
>         >> > especie de proxy, de tal manera que invocando a ese
>         objeto en B, se
>         >> > ejecute
>         >> > el mensaje en nodo A.
>         >> >
>         >> > Mi idea es que si B devuelve un objeto a A, ese resultado
>         viaja
>         >> > completo.
>         >> > Sino, definiria algo como
>         >> >
>         >> > ^host asProxy: result.
>         >> >
>         >> > Tendria que escribir post, pero por ahora, tengo esto
>         para mostrar.
>         >> >
>         >> > [1] http://code.google.com/p/ajtalk
>         >> >
>         >> > Nos leemos!
>         >> >
>         >> > Angel "Java" Lopez
>         >> > http://www.ajlopez.com
>         >> > http://twitter.com/ajlopez
>         >> >
>         >> >
>         >> >
>         >> > --
>         >> > To post to this group, send email to
>         [email protected]
>         >> > To unsubscribe from this group, send email to
>         >> > [email protected]
>         >> >
>         >> > http://www.clubSmalltalk.org
>         >>
>         >> --
>         >> To post to this group, send email to
>         [email protected]
>         >> To unsubscribe from this group, send email to
>         >> [email protected]
>         >>
>         >> http://www.clubSmalltalk.org
>         >
>         > --
>         > To post to this group, send email to
>         [email protected]
>         > To unsubscribe from this group, send email to
>         > [email protected]
>         >
>         > http://www.clubSmalltalk.org
>         
>         --
>         To post to this group, send email to
>         [email protected]
>         To unsubscribe from this group, send email to clubSmalltalk
>         [email protected]
>         
>         http://www.clubSmalltalk.org
> 
> 
> 
> -- 
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to clubSmalltalk
> [email protected]
>  
> http://www.clubSmalltalk.org

-- 
Simplex Veri Sigillum

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a