Mostrando entradas con la etiqueta csla. Mostrar todas las entradas
Mostrando entradas con la etiqueta csla. Mostrar todas las entradas

Rocky Lhotka y CSLA 2.0

viernes 31 de marzo de 2006 | categorías: | 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.

Libros para principiantes y no tan principiantes

jueves 16 de febrero de 2006 | categorías: , , , , , , | 1 comentarios -- da clic aquí para dejar el tuyo

Ayer me comentó Teo Ortega que va a tener que portear una aplicación “cliente/servidor” hecha en Delphi a .NET. Al parecer aunque esta aplicación era adecuada (de hecho consume Web Services de una aplicación hecha en ASP.NET), algunas limitantes en la conectividad y flexibilidad del sistema han forzado al cambio de plataforma. Como el Teo apenas va a comenzar a dotnetear, pues la inevitable pregunta fue “Oye, ¿y no tienes algún libro que me ayude en este rollo?”

Creo que todos hemos estado ahí. Así que le envié una larga lista de libros que me han sido útiles desde que comencé con este rollo y pensé que les podrían ser útiles a ustedes también—de hecho sí me cayó el veinte de “ay we’, ¿de veras he leído todo esto?” La mayoría de estos libros los pueden leer en línea en sitios como books24x7. En la empresa donde trabajo tenemos un acuerdo corporativo, así que todos los empleados tenemos acceso. Otra alternativa podría ser Safari. En lo personal, prefiero libros en formato arbol-muerto, pero (1) leo más rápido en línea—por alguna extraña razón—y (2) no tengo tanta lana como para comprar todos los libros en sitios como estos. Así que hagan lo que puedan. Si deciden comprarlos en papel, este sitio es útil para encontrar el mejor precio. En general, los mejorcitos que he encontrado son de Apress—a donde acabaron muchos autores que dimitieron de Wrox Press—y de ahí, los publicados por Microsoft. Aunque todo depende de qué tema se quiera aprender. Así que aquí está la lista, separada por contextos generales.

Fundamentos

Mucha raza que me he topado ha aprendido a dotnetear a punta de voluntad, pero desgraciadamente les falta comprender conceptos fundamentales del .NET como plataforma. Para ellos recomendaría Microsoft .NET Core Requirements (Microsoft Press, 2003). Este es un paquete de 4 libros que son para preparase para una certificación MCAD o MSCD (versión 1.x del Framework). Lo bueno:

  • Trae todos los ejemplos en los dos lenguajes más populares (C# y VB.NET)
  • Cubre todo lo mínimo elemental que debe saber un desarrollador a la hora de dotnetear (y uno que otro truquito que nomás MS se sabe).
  • Cubre material para los diferentes tipos de aplicaciones que se pueden crear (WinForms, Web, Windows Services, Web Services)
Lo malo:
  • Para en verdad sacarle jugo hay que chutarse al menos 3 de ellos—el cuarto es completamente teórico y trata sobre MSF y metodologías y herramientas para desarrollar software—esto es porque fueron escritos por distintas personas en MS, así que hay bastante redundancia y no son uniformes.
  • Algunas cosas decididamente están fechadas. Por ejemplo, al hablar de armazones de pruebas, habla de construir los propios con escripts, siendo que NUnit lo suplantó por de facto; no hay ni mención de las especificaciones WS-I para Web Services, etc.

Aún así lo recomiendo porque varios capítulos, por separado son muy buenos y concisos, p.ej. el de Developing Windows-based Applications explica muy bien conceptos de los lenguajes como overloading, interfaces, delegates, etc., el de Developing XML Web Services and Server Components trae una excelente explicación de qué es el .NET Framework, cuáles son sus “partes” cual es el papel de cada una de ellas y qué features son los que aporta. Ahora que si van a comenzar en aplicaciones Web con el Framework 2.0 Pro ASP.NET 2.0 in C# 2005 (Apress, 2005) se ve muy bueno. Cubre desde lo fundamental, hasta lo “Pro”.

Más avanzadones

Si buscan un buen Framework para objetos de negocio, están los libros del Rocky Lhotka, en su versión C# o VB.NET. Yo me esperaría un poco y compraría la edición que va a salir en los próximos meses ya que (1) está hecha para el Framework 2.0 y (2) integra muchos features que le fue agregando al CSLA basado en retroalimentación de sus lectores y basado en capacidades nuevas en las herramientas.

Como lo mencioné ayer, Expert ASP.NET 2.0 Advanced Application Design: ASP.NET as a distributed application hosting environment (Apress, 2005) es un excelente libro para hacer la arquitectura de un sistema con tecnologías dotnetescas.

No-.NET, pero relacionados

Si no saben UML, aprendan ¡ya!—tiene ya como 10 años por el amor de Dios. Uno de mis favoritos es UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition de Martin Fowler. Este vato propone utilizar UML como una herramienta útil para bosquejar un sistema.

Para una sólida base de diseño de bases de datos relacionales especialmente relacionados a programación orientada a objetos, lean Beginning Relational Data Modeling, Second Edition (Apress, 2005). De haber leído este librito antes, hubiera evitado algunos errores en el diseño a la hora de implementar relaciones superclase/subclase en una aplicación que esos errorcillos acabaron dando enormes dolores de cabeza.

Finalmente, y hablando de base de datos y orientación a objetos, está Information Modeling and Relational Databases: From Conceptual Analysis to Logical Design (Morgan Kaufmann Publishers, 2001) de Terry Halpin, que cubre ORM—no Object-Relational Mapping, sin Object-Role Modeling—una metodología muy sencilla y muy útil para modelar los requerimientos de un sistema y automáticamente generar el diseño lógico y físico de una base de datos, incluyendo muchas de las “reglas de negocio en un sistema”. Incluso enfatiza el porqué UML es una muy mala metodología para hacer un modelo de datos. Los detalles de cómo aplicar ORM con Visio lo cubre también muy bien en este otro libro. ORM es, en mi humilde opinión, una de las herramientas más utiles y menos utilizadas.

Enjoy.