Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help

Browse by Tags

All Tags » libros

Reseña: The Principles of Beautiful Web Design

En una plática que di, donde presenté las herramientas Expression de Microsoft, le platiqué al público que cuando se diseña la interfaz de una aplicación--ya sea tipo desktop o Web--hay dos tipos de personas: las que nos gusta tirar código y las que les gusta hacer rectángulos con esquinas redondas y cosas que brincan y hacen fade-in en la pantalla.  En el caso de las aplicaciones Web, a los primeros les dicen desarrolladores Web (web developer) y a los segundos diseñadores Web (web designer)--una distinción que al parecer los reclutadores que me llaman nunca han podido entender. 

Expression es para el segundo grupo.  Pero yo, definivamente pertenezco al primero.  Soy de ese tipo de personas que si les pides una aplicación, te sabe hacer la arquitectura, la capa de objetos de negocio, la capa de acceso a datos, servicios, etcétera, es decir, un sitio que funcione perfectamente de pe a pa, pero no me pidas que te diga qué móndrigos colorcitos o que tipo de layout deberíamos usar para las "paginitas", porque no sabría ni por donde comenzar.

Últimamente traía la idea de cambiar el diseño "gráfico" de este sitio/blog, tomando en cuenta que: A) no quería uno de los diseños estándares de Blogger, B) quería algo completamente original, lo cual descartaba usar los templetes que están disponibles en otros sitios como este, este y este, y C) a pesar de que domino CSS a un buen nivel, no sé ni p*** de "diseño gráfico".

Portada - The Principles of Beautiful Web Design Así que se me hizo una buena oportunidad para aprender.  Comencé a interesarme por el tema, busqué libros y cuando me topé con The Principles of Beautiful Web Design de Jason Beaird (SitePoint, ISBN 978-0-9758419-6-9) supe que había encontrado el indicado.  Este es un excelente libro de apenas 165 páginas--y con muuuchas ilustraciones--donde en apenas 5 capítulos pretende enseñarle a los "programadores" las bases para el diseño de un sitio Web: composición y arreglo (layout), color, textura, tipografía e imágenes.  También contiene un montón de enlaces útiles que comparto a continuación.

Composición y arreglo

Aunque algunos de los arreglos en el web son casi estándar--y ni siquiera tienes que quebrarte el coco para echar el CSS requerido--el libro explica bastante bien la teoría de cuadriculado (grid theory), la regla de tercios--así es, no solo se utiliza en la fotografía--y los layouts estándar.  Además hace un buen trabajo identificando algunas tendencias recientes que quizá ustedes ya hayan notado.

Un buen argumento que hace el autor, es que para que uno pueda hacer un buen diseño es importante ver varios diseños buenos.  Algunos recursos en este departamento son:

Color

Si son como yo, y no saben ni qué colores escoger y combinar para la ropa que se ponen en la mañana, mucho menos para un sitio Web, entonces este capítulo les servirá.  Explica desde las asociaciones psicológicas que tenemos con algunos colores, hasta la teoría RGB para combinarlos y poder desarrollar un esquema y paleta de colores basándonos en cuáles son análogos, complementarios, monocromáticos, etc.  Alguna de la información pueden encontrarla en un artículo por el mismo autor llamado Color for Coders.

De las herramientas que menciona, están unos sitios que puede ayudar enormemente en esta tarea:

Textura

Este capítulo es uno de los dos que trae algo de código CSS.  Y tiene una introducción que me cayó como pedrada (traducción mía):

Hay muchas personas bien-intencionadas por ahí que construyen un sitio Web con un layout estándar de dos o tres columnas, escogen unos cuantos colores para él y lo dan por terminado.  No se molestan con empujar su diseño más allá, o afinar los detalles.  Quizá no tienen suficiente tiempo o dinero en el proyecto, o quizá se han tomado el axioma de "menos es más" demasiado literalmente.

No todos los sitios Web tienen que estar hermosos, pero cada sitio puede serlo. El surgimiento de CSS le ha dado a los diseñadores Web un gran control sobre cómo se ve un sitio, pero creo que el problema es que muchas personas simplemente no saben por dónde empezar cuando se trata de personalización. (p. 67)

Y sí, como habría de esperarse, habla--entre varias otras cosas--de cómo hacer rectángulos con esquinas redondas, jejeje.  Para ello hay una herramienta que menciona el autor que también es bastante útil:

  • Spanky Corners - Una herramienta que genera las imágenes y CSS necesarios para este efecto de acuerdo a los colores que tú escogas.

Tipografía

Este quizá fue el capítulo con el que más familiarizado estaba dado mi interés por la tipografía.  Es decir, yo ya sabía la diferencia entre un font serif y uno sans-serif, así como cuáles eran los 7 fonts "seguros" para el Web.  Aún así aprendí algunas cosas nuevas. 

De los enlaces útiles en este capítulo están:

  • sIFR 2.0: Rich Accesible Typography for the Masses - Explica una técnica que se degrada "graciosamante" utilizando Flash y JavaScript para aplicar prácticamente el font que quieras a encabezados.
  • Typetester - Una herramienta que permite comparar el efecto de diferentes configuraciones sobre distintos fonts.

Y si de veras se quieren clavar en el tema, yo agregaría el siguiente:

Imágenes

Este fue uno de los capítulos que quizá le faltó un poco más de "carnita", aunque trae buenos ejemplos del proceso de criticar y arreglar una fotografía.  También explica muy bien sobre los diferentes esquemas de licenciamiento para fotografías stock--gratis, royalty-free y rights-managed--y dónde conseguirlas.   

El autor menciona dos sitios donde puedes obtener fotografías stock completamente gratis:

Conclusión

The Principles of Beautiful Web Design es un libro que es tan corto que me lo eché en tres sentadas.  Se clava más con los muchos ejemplos e ilustraciones sobre los conceptos de diseño, en vez del código CSS necesario para producirlo, lo cual fue perfecto para no desviarse de los temas.  La narrativa y es amena y tiene muchos chistoretes con los que me identifiqué. Hasta veces sentía como si estuviera leyendo una revista larga, más que un libro.  Si están en la misma lancha que yo con respecto al "diseño gráfico" de sitios Web, entonces se los recomiendo.

Armado con este nuevo conocimiento, comenzará el re-diseño de este sitio, así que si de repente ven cosas raras no te asustes, solo soy yo experimentando y aprendiendo un poco.

El mundo se está achatando

La primera vez que escuché sobre el libro The World is Flat, fue hace como año y medio. Sin embargo, en los últimos meses lo vi mencionado varias veces por distintos invitados en uno de mis programas favoritos (bueno, de los pocos que se me antoja ver cuando llego a encender la TV cada venida del Papa). Así que intrigado, finalmente lo compré y comencé a leerlo.

A grandes razgos, el libro trata sobre el impacto que la tecnología de información está teniendo no sólo sobre los negocios, sino la sociedad en general y qué se necesita para no quedarse atrás.

Hay un resumen de los capítulos hecho por el mismo autor aquí. ¿Quieres una cita cura de esa página? (intento de traducción mía):

"Pero seguí yendo hacia el este hasta que llegué a México. Una de las cosas que comencé a hacer fue preguntarle a las personas, dígame ¿cuándo descubrió que el mundo era plano? Así que le pregunté a algunas personas del Banco Central de México y me dijeron, fue hace un par de años. Como sabe, el Santo Patrón de México es la Virgen de Guadalupe. Hace como un año descubrimos que se estaban importando de China estatuillas de la Virgen de Guadalupe. Cuando eres es un país manufacturero de bajo salario y estás importando tu santo patrón de China, tu mundo es plano."

Apenas acabo de terminar el primer capítulo, y debo admitir que me han estado asaltando ideas y preguntas sobre lo que todo esto significa para México, porque temo que aquellos "en el poder" en realidad no estén poniendo atención a las implicaciones de la "globalización 3.0".

Hemos entrado en la era de las maquilas de información. Ya no solo se está moviendo el trabajo de procesamiento de materiales a donde la mano de obra es más barata, sino el trabajo de procesamiento de información. Esto ciertamente no es nuevo (mi primer trabajo a los 16 años fue como capturista de datos para una compañía gringa en Cd. Juárez), pero no estoy hablando solo de captura bruta, sino de análisis y transformación... todo de manera remota... en todas las industrias (¡hasta las de la comida rápida no manches!)

Y así como pasó con la manufactura, donde comenzamos con trabajo de bajo nivel hasta que fuimos agarrando expertise, pasará lo mismo con este tipo de outsourcing, por lo que tenemos que entrarle lo más pronto posible.

Esto representa unas oportunidades MUY interesantes para nuestro país, sin embargo ¿estamos listos? ¿Contamos con la infaestructura educativa y de telecomunicaciones para participar? No estoy convencido.

¿Tenemos los elementos culturales necesarios? Acá en el norte quizá, por que estamos agringados (lo cual no es necesariamente bueno). ¿Y el resto del país? ¡Hay mucho que podemos aprender de los "japoneses de la TI"! (osea los hindúes y los chinos)

En la era donde los individuos ahora compiten globalmente ¿qué hay de los millones de mexicanos que están económicamente rezagados y sin educación? ¿Cómo competirán?

Maldición, yo pensando en todas estas tarugadas y solo es el primer capítulo...

La importancia del workflow

A ver si algo de esto les es familiar:

Chucho Melosetocho trabaja en ChidaSoft™, que ha sido contratada por Grupo Enorme (sin albur) para hacer un súper sistema porque Enorme trae pedos mayores con cómo maneja su proceso surtido de pedidos.

Grupo Enorme se dedica a hacer Chuchulucos® de todos tipos, tamaños, sabores y colores. De hecho es la empresa más grande de chuchulucos en el país. Pero últimamente, han crecido tanto que sus problemas son evidentes: cuando un cliente les hace un pedido, tardan hasta un mes en surtirlo y por lo mismo, están perdiendo terreno a la competencia, LosQueremosClientes LosQueremos, S.A. de D.R. y R.L. (o sea Sociedad Anónima de Dudosa Reputación y Responsabilidad aún más Limitada).

Así que los jefazos de Enorme se juntaron y decidieron que lo que necesitaban era automatizar todo el “proceso” de distribución, cobranza y pagos. Ellos esperan que un sistema les ahorre hasta un 25% en los costos y un 50% en el tiempo de entrega, según un estudio que hizo su departamento de “IT”—Ingenieros Tarados—y por eso contrataron a ChidaSoft™, quien sin pensarla mucho dice “pan comido” y manda al pobre de Chucho a intentar tomar requerimientos y hacer el análisis del sistema.

Pero Chucho se topa inmediatamente con problemas: la mera-mera de Finanzas, una C.P.—Cabeza de Pollo, digo, ejem… Contadora Pública—con lógica y cabeza cuadrada, se la pasa del chongo con los del almacén porque surten los pedidos de los clientes, aún cuando éstos tienen pagos atrasados; el del almacén se la pasa de la greña con los de producción porque no le entregan las cosas a tiempo y los clientes les gritan cada vez más feo porque están adictos a los Chuchulucos® y sus pedidos no están listos; y el de producción le echa la balona a los de compras que no le tienen la materia prima que necesita a tiempo… en fin… cualquier parecido a la realidad es a propósito.

Así que temeroso de perder su chamba y quedarse sin dinero para ir a teibolear, Chucho entrevista a los jefes de cada departamento por separado para ver qué es lo que necesitan que el sistema haga—intentó en un principio juntarlos a todos para que se pusieran de acuerdo pero las juntas terminaban siempre en insultos, malas palabras, sillas arrojadas y sacadas de lengua.

Cada uno de los jefazos le dice cómo se hacen las cosas en la empresa y le da una larga lista de navidad de lo que quieren que haga el sistema y de pero muchas cosas se contradicen: es evidente que nadie conoce “el proceso” y algunos no parecen saber ni a qué $#¡|\|&@dos se dedica en realidad la empresa.

Después de meses y meses de juntas por teléfono y andar conciliando requerimientos finalmente logra hacer sus diagramitas de casos de uso, sus escenarios de los casos, diagramas lógicos y todo lo demás que dicta el UML y las metodologías de desarrollo de software moderno. Se avienta una documentación clara y precisa que le pasa a al equipo de desarrollo quien con diligencia y un control de calidad estricto tira un código hermoso y elegante.

Pero Enorme no está contento. El proyecto tardó y costó casi el doble de lo que habían previsto y al correr el piloto se dan cuenta que solo ahorrarán un 10% en el costo y tiempo sobre el esquema anterior. Comienzan los gritos, los insultos y las amenazas de no pagarle a ChidaSoft™, y a pesar de que el sistema se apega a los requerimientos que todos los jefes firmaron. Enorme insiste que el sistema “no es lo que pedimos, no nos está ahorrando el dinero que estipulamos cuando los contratamos así que no les vamos a pagar”.

Abrumado y cabizbajo, Chucho visita a su Sensei, quien después de reírse descaradamente de él le dice:
—Saltamontes, has olvilalo la legla del flujo: “si fluye algo le trabajo debes consilelal wolkflow, pelo si el tlabajo fluye lejos debes usal wolkflow”.

Y Sensei le presta su copia de Workflow Modeling: Tools for Process Improvement and Application Development (Alec Sharp y Patrick McDermott, Artech House © 2001).

¿Qué significa todo esto?

En mucho más de una ocasión me ha tocado hacer o mantener un sistema, y que de pronto me hable Fulanito de Tal, del departamento X para que le explique cómo funciona algo o qué se hace con cierto pedazo de información, o para pedir un cambio al sistema del cual se va a arrepentir luego de explicarle que el hacerlo impactaría otra cosa de otro departamento.

En pocas palabras, nosotros, las “personas de sistemas” algunas veces, en sabemos más del “proceso” que las mismas áreas de negocio. Y me pregunto: “¿Cómo es esto posible?”

Parte de la evolución de las empresas en los últimos 10 o 15 años ha sido el reconocimiento de que deben estar orientadas a los procesos de negocios—¿recuerdan todo el ruido que causaron “mejora continua” y “reingeniería de procesos”?

Esto es, la especialización en las empresas ha llevado a que cada departamento se preocupe tanto por eficientizar sus “procesos”, que en muchas ocasiones pierden de vista el “proceso global”: lo que la empresa realmente de dedica.

Dado que el flujo de trabajo (workflow) no es más que una abstracción de los procesos de negocio—el cual se formalizará típicamente en un sistema computacional—es muy importante saber analizar bien cómo fluye el trabajo antes de hacer la definición, análisis o diseño por tres grandes razones:
  1. Para que todas áreas o personas involucradas sepan qué están haciendo en realidad—cómo está funcionando su empresa—y qué se puede mejorar;
  2. No repetir simplemente cómo se hacen las cosas y/o formalizar en una aplicación actividades que no agregan valor (“no hay que pavimentar los caminos de las vacas”, o la clásica replicación ciega de procesos en papel); y
  3. Determinar si en realidad hay algo que se pueda mejorar/ahorrar con un sistema, o si un simple cambio en las actividades del negocio es suficiente. Si se determina que sí agrega valor un sistema, entonces automáticamente ya se tendrán los requerimientos o características deseadas en él.

Sharp y McDermott proponen un famework como el siguiente:


Estas técnicas también sirven cuando se está considerando implementar un sistema “Enterprise”—SAP, PeopleSoft, Siebel, etc.—que cuestan un lanototota. Muchas empresas los compran pensando que así recién sacaditos de la caja van a resolver sus problemas como por arte de magia, solo para descubrir—decenas o cientos de miles de dólares más tarde—que para que en verdad les sirva tienen que adaptarlos a la manera particular en la que trabajan en la empresa, lo cual lleva a que contraten gente para que les personalice el sistema hasta el punto en el que se dan cuenta que uno hecho a la medida les hubiera salido más barato desde un principio. Todo porque no comprendían su propio workflow desde un inicio.

Lo “malo” es que aprender a modelar workflow requiere un poco de habilidades de administración de empresas o incluso ingeniería industrial—¡guácala!—pero afortunadamente en dosis no-letales. Así que los ingenieros de sistemas estamos en una posición óptima para en verdad aportar valor a una empresa cuando surgen proyectos de este tipo.

La herramienta por excelencia en este tipo de modelación son los swimlane diagrams (¿diagramas de canales? maldita traducción), los cuales son distintos a los que se manejan, por ejemplo en UML o en análisis estructurado. Quizá ya los hayan visto, no son más que diagramas de flujo puestos contra un fondo de canaletas, donde cada canaleta representa el área de acción de un Actor.

Pero leer estos diagramas es mucho más sencillo que hacerlos, así que hablemos un poco del proceso para poder llegar a desarrollarlos.

El proceso para analizar, modelar y mejorar procesos

Según Sharp y McDermott:
  1. Encuadrar y definir el proceso
    1. Identificar un proceso de negocios y clarificar sus límites
    2. Hacer una evaluación inicial con todos los interesados
    3. Establecer las metas del proceso rediseñado
  2. Comprender el proceso actual (“as-is”)
    1. Modelar la manera en que fluye el trabajo (workflow)
    2. Hacer una evaluación más profunda tomando en cuenta los 6 “habilitadores” de un proceso de negocios: diseño de workflow, tecnología de información, motivación y medidas, recursos humanos, políticas y reglas, instalaciones y ambiente de trabajo
  3. Diseñar el proceso nuevo (“to-be”)
    1. Ingeniar las mejoras potenciales
    2. Evaluarlas de acuerdo a los 6 habilitadores
    3. Seleccionar las características principales deseadas del nuevo proceso
    4. Diseñar el nuevo workflow
  4. Desarrollar casos de uso y escenarios de uso—hacer la transición hacia análisis de requerimientos de sistema describiendo cómo los actores interactuarían con el sistema para realizar sus actividades.

No voy a profundizar en cada uno de los pasos, para eso les recomiendo el libro, el cual trae muchísimos “tips” basados en casos y ejemplos de la vida real, así como un montón preguntas que se deben hacer durante todo el proceso.

Mi intención, en los siguientes posts será enlazar el concepto de workflow con algunas de las herramientas de que conozco o que van a salir, especialmente Windows Workflow Foundation, que será parte de WinFX. Así que estén pendientes...

Libros para principiantes y no tan principiantes

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.

ASP.NET para hombres

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.