Disclaimer #1: Aunque vaya a parecer comercial, no tengo nada que ver con los autores del libro o con la editorial. Simplemente me cayó tan bien el libro que tuve que escribir sobre él.
Disclaimer #2: No estoy siendo sexista. Al decir “para hombres” es en el sentido “vs. niños, amateurs, principiantes”, no “vs. mujeres”. Las mujeres son la neta.
Disclaimer #3: Este
post está intencionalmente “pocho”. Hay cosas en jerga computacional y citas textuales que francamente me da flojera traducir.
Yo soy extremadamente codo para comprar libros técnicos. La verdad es que si voy a pagar 60 dólares por un pedazo de árbol muerto con letritas, más vale que las letritas sean
muy buenas, ya que la herramientas cambian tan rápido que la vida útil de un libro técnico es de solo un par de años, a lo mucho.
Aún recuerdo cuando me llegó mi copia de
Professional VB 5 Business Objects (Wrox Press, ¿1997?), por un tal
Rockford Lhotka, que abogaba el uso de la arquitectura en capas y el uso de UML. Cuando años más tarde, en el trabajo comencé a hacer cosas dotneteras™ más en serio, sugerí la
versión de .NET de su libro—recién sacadita de la imprenta si mal no recuerdo—para el proyecto y la adoptamos como el armazón de nuestra aplicación con bastante éxito. Esa es la clase de libros que te “dan de comer” por varios años y vale la pena comprar.
En esa misma categoría pues, he puesto a
Expert ASP.NET 2.0 Advanced Application Design: ASP.NET as a distributed application hosting environment (Apress, 2005). Que si hubiera sido yo el autor, probablemente le habría puesto como título “ASP.NET para hombres”. En mi humilde opinión, este libro debería ser lectura
requerida para cualquier desarrollador .NET profesional.
¿Por qué? Porque más que un libro más sobre ASP.NET es un libro sobre
arquitectura de software aplicando herramientas que se llevan bien con el .NET. Y no solo es para aplicaciones Web o Web Services, el contenido aplica para casi cualquier tipo de aplicación que se necesite desarrollar con las herramientas que se tienen en este momento, y cómo se relaciona con las que están en puerta (como Windows Communication Foundation).
“And so in designing this book we decided that we did not want to do the standard ‘new feature march.’ This book is not a general introduction to version 2.0 of the ASP.NET Framework. Instead, this book focuses on designing distributed applications using the .NET Framework as your platform. With this as our focus, we treat ASP.NET not as an environment for the generation of HTML, but rather as an application hosting environment, one capable of servicing requests not just for Web Forms, but also for Web Services, for distributed objects via Remoting, even for your own custom application hosting needs. By treating ASP.NET as an application server instead of as a web application development environment, our field of view is dramatically increased.” (p. xix)
Y no es exageración. Después de leerlo sentí que mi arsenal de herramientas se había incrementado dramáticamente.
El libro comienza con algo de “teoría” básica sobre arquitectura donde me topé con algunas citas con las cuales estoy totalmente de acuerdo:
“You'll need to consider more than the business-based, functional requirements. When you're designing the architecture, functional requirements may be relevant, but they're usually secondary to other application requirements, which aren't captured in the ‘Use Cases.’” (p. 3)
[Traducción: la
arquitectura de un sistema se saca de todas las “
-abilidades” (mantenibilidad, ecalabilidad, etc.), no tanto de los requerimientos]
“The answer to any question when it comes to architecture is ‘it depends’. This is why you make the big bucks.” (p. 4)
[Refiriéndose a la importancia de la mantenibilidad y flexibilidad en los sistemas:]
“Checking a code file out of source control and having a developer make changes to it is the most expensive kind of change that can be made to a system. It requires a developer (not cheap). It requires the recompilation of binaries. It requires regression testing of all areas of the application that are affected by a change to that binary (testers, automation, and time: aka more money). And then it takes a deployment and all of the requisite worry, heartache, and long hours that can accompany that.” (p. 12)
Después de algunas arquitecturas de ejemplo, el libro pasa rápidamente a explicar el
ASP.NET Execution Pipeline, en otras palabras, qué pasa desde que un
request le llega a IIS hasta que la página es
rendereada y todos los puntos de extensibilidad en el proceso.
Al principio me era un poco amenazante, pero gracias a la muy amena redacción que tiene, de-mistificó rápidamente cosas que para mi hasta ahora habían sido “magia” de ASP.NET. Conforme avanzas en la lectura comprendes perfectamente cómo Microsoft implementó muchos de los
features de ASP.NET (
Forms Authentication, el
handler de
Web Services, etcétera). Y una vez que se entiende eso, el modelo (en capítulos posteriores) para entender
Web Services Extensions (WSE) y hasta WCF es esencialmente el mismo.
Whoa.Podría hacerles un resumen casi por capítulo de cosas que me gustaron en cada uno de ellos, pero para no hacer el cuento muy largo les voy a poner las cosas principales que aprendí o me gustaron de este libro:
- Qué tecnologías están disponibles hoy, qué features proveen y cómo decidir cuándo usar cuál (a veces los features son ofrecidas por varias de las tecnologías) y cómo emplearlas de forma que provean una migración fácil a las tecnologías que están en puerta (como WCF).
- Trae un destilado de las muchas definiciones que se han dado de Web Services y de Service Orientation y qué elementos tienen en común. La importancia de entender la diferencia entre SO y OOAD y cual es el papel de cada una de estas filosofías en un sistema distribuido (hint: tiene mucho que ver con la diferencia entre cosas stateful y stateless).
- La tendencia de Microsoft hacia la programación “declarativa”, como alternativa a la “imperativa”—si alguna vez han utilizado atributos en sus clases o visto código XAML, de esto se trata la programación declarativa.
- Ejemplos claros, completos, prácticos y concisos de cómo hacer (y no hacer) muchas cosas con el .NET Framework 1.x Aquí me topé con muchas situaciones por las que yo ya había pasado y aprendido a guamazos. (p.ej. qué se tiene que hacer para implementar Forms Authentication), y qué cambios hubo en 2.0 para facilitar esas cosas (p.ej. cómo usar el nuevo MembershipProvider, controles nuevos, etc.).
- Capítulos detallados en algunas áreas que no se cubren muy bien en la documentación o en otros libros que he visto o leído:
- Hay un capítulo enterito dedicado la clase Page: qué es lo que sucede a la hora de ejecución, cómo arma los controles, y qué prácticas seguir. Incluye una muy buena explicación en la página 95 de porqué NO es tan buena idea DataBindear un DataSet a un DataGrid—esencialmente acabas gastando 4X el tamaño original de los datos—y qué alternativas hay.
- Otro capítulo dedicado exclusivamente a ViewState y JavaScript, incluyendo cosas AJAX-escas (Out-Of-Band Callbacks)
- Una muy buena cobertura sobre Enterprise Services (COM+) en .NET. Aquí aprendí varias cosas que ni sabía que existían, incluyendo Queued Components—componentes que se ponen en una cola de ejecución y automáticamente tienen un proceso “escucha” y los procesa asíncronamente; cómo poder generar Web Services a partir de componentes configurados automáticamente y sin siquiera requerir de .NET
En fin, el libro cubre los temas con un detalle suficiente como para meterse en broncas, y entender el concepto de una manera concreta, pero te deja “picado” para buscar más detalles cuando se ofrezca en la vida real.
Les recomiendo que le den una hojeada al libro o lo compren en su
tienda favorita, o si tienen acceso a algo como
books24x7.com, ahí también lo tienen.