Y ya para finalizar mi intervención en este "thread", que os estaré aburriendo, alguno conocéis la arquitectura SDO de IBM? sirve para atajar más o menos esta problemática...
2007/1/29, Francisco A. Lozano <[EMAIL PROTECTED]>: > Creo que hay más motivos por los que pasar entidades fuera del > contexto local de la aplicación no es una buena idea, incluso con un > modelo de dominio completamente anémico como los tuyos. Por ejemplo, > la seguridad... Compruebas que el cliente haya modificado únicamente > lo que tu le dejes, antes de hacer un update, (o saveOrUpdate, o > merge, o lo que sea) con el objeto que te viene de fuera? O te fías > del "cliente"? (grave fallo de seguridad, en tal caso). Aparte, > serializas los proxies de las propiedades lazy-loading? o qué > serializas? > Eso de "Limpiar" objetos Nhibernate mediante reflexión es una > grandísima idea y me gusta mucho, he hecho algún intento en el pasado > (intentando pasarle objetos Hibernate a Google Web Toolkit, por > ejemplo :) pero no lo he usado nunca en nada serio. Cómo defines los > fetch-plans? es decir, hasta qué profundidad del grafo de objetos > preparas para ser transferido? Y cómo le das esa info a la capa de > reflexión? Xquery o algo así? > > Creo que escupir entidades completas por un canuto de red está mas > cerca de arquitecturas cliente-servidor de-antes que de arquitecturas > 3(omás)-tier modernas. > > Prefiero limitar los DTOs a > la-información-que-necesita-ese-caso-de-uso-y-nada-más en vez de ir > pasando grafo de entidades completo que requiera o pueda requerir + la > habilidad de lazy loading remoto. Así, los "mensajes" que atraviesan > la red están predefinidos (representaciones de DTOs serializados en > XML o en binario o en lo que corresponda), lo cual es mucho más > correcto desde el punto de vista de un protocolo de red. > > 2007/1/29, "Andrés G. Aragoneses [ knocte ]" <[EMAIL PROTECTED]>: > > > > Angel "Java" Lopez escribió: > > > Hmmm.... Dario, en mi opinion, lo mas limpio es enviar un mensaje, un DTO. > > > El mapeo del NHibernate, lazy loading, y demas, queda mas claro puesto y > > > visto solamente desde el servidor. Lo ideal, desde un modelo de dominio. > > > > > > Pero a una aplicacion externa, a un cliente remoto, y demas, le enviara un > > > clasico DTO, adecuado a lo que necesita en ese momento. Apareceran > > > entonces > > > fachadas remotas, encargadas de resolver como conversar con lo que ya > > > tenias, y enviar y recibir DTOs en cada servicio expuesto remotamente. > > > > > > Claro, por ahi hay que armar clases adicionales, y conversores de objetos > > > de > > > dominio a DTOs y demas.... Pero ya estaras adivinando quien generara el > > > codigo... :-) > > > > Vaya, parece que llego un poco tarde a esta conversación tan interesante :) > > > > Por si a alguien le interesa, yo he enfocado la solución a este problema > > desde otro punto de vista: > > > > Las clases de mi modelo (que son leídas por NHibernate) se podría decir > > que no tienen ningún tipo de lógica de negocio (prefiero sacarla al > > Controlador en lugar de que se queden en el Modelo; ya sabéis, MVC ;) ), > > por tanto se podrían calificar de DTOs. > > > > Como uso NHibernate en lugar de ActiveRecord, los únicos "metadatos" que > > tengo que eliminar para transferir objetos son las colecciones internas > > de NHibernate y los objetos con proxy, que se traducen en objetos o > > colecciones vagas. > > > > Esta transformación la hago mediante un método que usa Reflection para > > examinar su contenido. He optimizado el método lo máximo posible con las > > técnicas de optimización de Reflection que he ido aprendiendo. > > > > El resultado final es que no hacen falta generadores de código ni clases > > adicionales, por lo que yo creo que no está nada mal. > > > > Más info: > > > > http://knocte.blogspot.com/2006/12/serializacin-binaria-con-nhibernate.html > > > > > > Por cierto, en cuanto a diferencias entre el framework 2.0 e Indigo > > (WCF), a mí se me ocurren dos importantes: > > > > - Posibilidad de conexión bidireccional directa sin pérdida de canal en > > cada llamada (algo al estilo del canal bi-direccional de Ingo Rammer). > > [Aunque aún no he investigado cómo se hace :D ] > > - Posibilidad de serialización XML de objetos cíclicos. [Idem] > > > > Un saludo, > > > > Andrés [ knocte ] > > > > -- > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
