|
From: Jorge C. <jor...@ya...> - 2003-11-16 21:18:27
|
Este es el primer mail de la lista de ObjectBase (copio a TADP ya que no hay muchos en la lista de OB) El ssh es accesible a través de objectbase.sourceforge.net. Ya creé un idex.html con lo ultra mínimo (welcome). Se agradece la colaboración en este punto. (o en cualquier otro). Ahora la parte interesante. Después de que subí lo inicial no tuve mucho tiempo de darle bola al proyecto, pero si de pensar un par de cosas que hoy me puse a continuar. A partir de lo que hay en el CVS quise hacer que las PersistentCollections de ObjectBase persistieran. De mínima me propuse hacer que se levantaran de un archivo y que cuando uno enviara a OB el mensaje persist, se grabara todo. La idea está clara, sin embargo la implementación no tanto. Lo primero que se me ocurrió fue serializar de alguna manera, sea usando Castor o algo. Sin embargo me parece que ninguno de estos enfoques es muy piola. Posibilidades: 1) hacer nosotros un mecanismo de serializacion/deserialización (a XML o algo) usando reflection y declaradamente violando la encapsulación. Sin embargo esto hace que podamos persistir casi cualquier cosa (un socket, un OutputSream o algo muy físico no se podría, y creo que no tiene sentido). Por otra parte obliga a que las clases tengan un constructor vacio que en principio no debería hacer nada (ya que creo que no tenemos otra manera de crear el obj) 2) Cambiar el bytecode de la clase y acerla "más viva" con habilidad para serializarse/deserializarse (esto lo vi en algunas implementaciones de JDO), el problema es que los atributos internos también habría que "mejorarlos" y eso no siempre es posible, con lo que estaríamos medio limitados. Seguimos con las mismas limitaciones de sockets, streams, files, etc. Alguien tiene otra alternativa? Yo me inclino por la primera, aunque creo que no siempre es viable (hay requisitos de seguridad, que me parece no son un problema, pero están). Aunque quizás en el futuro tengamos que usar una combinación de ambos. Pienso esto por lo siguiente: - un mecanismo de reflection piola nos va a permitir serializar cualquier cosa - "mejorar" las clases "base" nos va a permitir agregar cosas como OID y poner hooks (que probablemente sea necesario) "Mejorar" las clases puede hacerse en tiempo de generación tocando el bytecode del .class, quizás en runtime mediante un classloader o mediante un proxy que refleje la interface de la clase más el comportamiento que necesitemos (esta última es transparente, pero más costosa en tiempo de ejecución). Bueno, a los que querían implementar no se van a quejar, aca hay tela para cortar. Así que ahora quiero escuchar opiniones. Un abrazo Jorge __________________________________ Do you Yahoo!? Protect your identity with Yahoo! Mail AddressGuard http://antispam.yahoo.com/whatsnewfree |