Nos hemos demorado un poco pero por fin hemos subido las presentaciones y las demos del Evento sobre Frameworks y Herramientas RAD para Aplicaciones .NET. Podéis encontrarlas aquí:
Introducción al evento. Desarrollo ágil con frameworks y herramientas RAD
NHibernate
ADO.NET EF y LINQ to SQL
Spring.NET
Unity
ASP.NET MVC
Framework Movical
DotNetNuke
SolidRAD
Kalipso
Dynamics CRM 4.0
Además, vamos a hacer una webcast en vivo sobre DotNetNuke con Vicenç Masanas el próximo martes 13 de Mayo a las 19.00. Podéis registraros en http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=38-A0-32-30-71-47-63-F9-95-EF-46-E3-27-23-63-AD&Culture=es-ES tanto para asistir en directo como en diferido a partir del día siguiente.
Los blogs de los ponentes que participaron en el evento son los siguientes:
Unai Zorrilla
Eduardo Quintás
Jesús López
Daniel Sabater
César de la Torre
David Salgado
DotNetNuke
Y por último, algunas preguntas y respuestas que surgieron durante el evento:
Nosotros en nuestros DAOS tenemos eventos que se lanzan y consumimos para ciertas tareas ¿en nhibernate y en Entity Framework existen estos tipos de eventos?
Eduardo Quintás:
Si, en NHibernate puedes a nivel de DTO se puede hacer veto de ciertas operaciones implementando la interface siguiente:
public interface ILifecycle
{ LifecycleVeto OnSave(ISession s);
LifecycleVeto OnUpdate(ISession s);
LifecycleVeto OnDelete(ISession s);
void OnLoad(ISession s, object id);
}
En entity framework a nivel de entidad tienes los eventos OnPropertyChanged y OnPropertyChanging, en ObjectContext (análogo al ISession de NHibernate) tienes el evento OnSavingChanges();
Nuestra lógica de negocio está perfectamente implementada en 4GL pero entendemos que tecnologícamente nos hemos quedado atrás. ¿Nos compensa cambiar de paradigma e ir arquitecturas en n-capas, utilizar OO, O/RM, frameworks como spring.net?
Eduardo Quintás:
No es una respuesta sencilla porque el cambio de paradigma y de arquitectura de aplicación es un esfuerzo económico y de desarrollo grande. Entre otras cosas implica contar, en el mejor de los casos, con desarrolladores y arquitectos con cierta experencia en este nuevo enfoque y hay que medir el ROI respecto al coste de la formación del personal técnico, análisis de la reingeniería... tiempo de desarrollo de la reingeniería... principalmente.
Respecto a valorar las ventajas del nuevo enfoque es que es una arquitectura ampliamente probada y nació para suplir las deficencias de arquitecturas monolíticas que escalaban mal; como las basadas en lógica de negocio en SGBDs. Con los años se ha demostrado a través de numerosos casos de éxito que es la mejor arquitectura (o la menos mala) en el desarrollo de aplicaciones empresariales pues reduce el acoplamiento entre capas y la organización está mejor preparada ante la gestión del cambio y escalar mejor en el caso de que nuestro número de usuarios/clientes crezca.
Es muy interensante la lectura de Patrones de Arquitectura Empresarial, tanto de Patterns & Practices de Microsoft como en la página de Martin Fowler: http://www.martinfowler.com/articles/enterprisePatterns.html en ella se explican ventajas y desventajas de estos enfoques.
¿Se puede hacer explicita la carga de colecciones lazy en nhibernate?
Eduardo Quintás:
Sí. Se puede a nivel de HQL, por ejemplo si tenemos una entidad director que tiene una colección de películas que ha dirigido y está mapeada como una relación de carga perezosa puedes hacer en tu consulta algo como "from Director inner join FETCH Movie" ese FETCH hace que se recuperen explícitamente todas las películas en el momento de ejecutar la consulta.