Rocky Lhotka y CSLA 2.0
viernes 31 de marzo de 2006 | categorías: csla | 1 comentarios -- da clic aquí para dejar el tuyo<acronymHell> CSLA = Component-Scalable Logical Architecture (o algo así, no recuerdo muy bien) </acronymHell>
Hace una semana o dos, Rockford Lhotka finalmente liberó la versión 2.0 del CSLA, que es un framework para objetos de negocios.
Pero con lo perezos... ejem... pragmático que pretendo ser, y con eso de que los libros apenas van a salir en las próximas semanas, pues la entrevista que le hicieron en el podcast de DotNetRocks me cayó como anillo al dedo. Y lo mejor de todo es que no solo lo entrevistaron en audio, sino que hasta sacaron la primera parte de una serie de videos para demostrar cómo usar CSLA, para aquellos que nunca lo han visto o no saben cómo se usa.
Aparte de los cambios que trae el CSLA, en la entrevista se avientan un par de puntadas bastante curas también, entre ellas: lo feo que está el sitio de Rocky--y sí está bien pinche feo para qué negarlo--y las cosas que no son tan buenas de las herramientas ORM (Object-Relational Mapper). Yo estoy del lado de Rocky con lo de ORM, la verdad no me gustan las herramientas (NHibernate, et.al.) con la gran excepción de una: IdeaBlade (luego les platico de ella).
En fin, entre los cambios más relevantes que al parecer hubo entre la versión 1.x y la 2.0 del framework (CSLA) están: Mejoras a la validación de las reglas de negocios
Si usaron la versión 1.0 del CSLA que venía con los libros originales, recordarán que tenían que usar un de BrokenRules.Assert para cada regla de negocios que querían validar. En el libro, Rocky las ponía en los set y get de las propiedades, pero rápidamente uno descubría que esos Assert's se necesitaban en otros lados. Nosotros tuvimos que adaptar el framework y mover todos ellos a un solo método (IsValid) que se mandaba llamar siempre al intenter guardar un cambio al objeto. Sin embargo los resultados fueron menos que elegantes y el código de ese método se complicaba rápidamente porque tenías que determinar si el objeto era nuevo o existente, si lo estabas borrando o no, etc.
Al parecer todo eso ya quedó de lado desde la v1.3 del CSLA. Por lo que entendí, declaró un delegado el cual sirve como base para las reglas de negocio (que ahora son métodos) en tu objeto de negocios en donde le pasas la instancia y la propiedad que quieres validar y éste método te regresa si es válida o no, así como la descripción del error en el RuleArgs.
Soporte para autorización a nivel campo de una clase
Esto es algo con lo que me tocó pelearme personalmente. A menudo el cliente te dice que quiere controlar por seguridades lo que un usuario ve en la pantalla/página a nivel campo. Es decir que quieren que todo mundo vea la misma página pero que nomás fulanito que es supervisor/deidad-menor/etc. pueda ver y/o editar un campo especial.
Cuando me enfrenté a este problema me aventé una esquema semi-sofisticado de roles y permisos, con unos métodos en las clases base de nuestras páginas para que todas pudieran determinar qué pintar en la página en base a los permisos del usuario.
Al parecer no fuimos los únicos en andar haciendo esos jales chicanos y el Rocky agregó funcionalidad en el framework para poner esto en la capa de negocios--donde en realidad corresponde. Dos palabras: ¡Woo-Hoo!
Cambios al DataPortal
El famoso DataPortal--el mecanismo que permitía tener objetos móviles--también ha sido rediseñado para desligarlo de la tecnología que empleaba para la comunicación: Remoting.
A mi Remoting aún no me acaba de convencer. Y cuando aprendí que tanto Remoting como Web Services era más lentos que DCOM--aunque menos latosos para implementar y configurar--pues menos me agradó la fregadera. Lean la segunda parte del libro Expert ASP.NET 2.0 Advanced Application Design y sabrán por qué.
Bueno, pues el buen Rocky parece haber abstraído esa parte y ahora podremos usar, a parte de Remoting, Enterprise Services (COM+/DCOM o como le quieran llamar), Web Services o cualquier otro canal que a ustedes les plazca, incluso Windows Communication Foundation. Tener opciones me agrada.
Por RSS o Atom

