martes, diciembre 11, 2007

El nuevo Microsoft ASP.NET MVC

Desde la introducción de .NET 1.0 Microsoft le apostó 100% a el framework de ASP.NET para el desarrollo de aplicaciones web. ASP.NET fue un cambio de paradigma importante ya que en el mundo Microsoft las aplicaciones Web eran aplicaciones en las cuales era fácil perder el rumbo o tener un nivel de complejidad muy importante, debido a lo que se llama "código espagueti" en donde no hay una clara separación del código que es parte de la interfaz gráfica, el flujo del programa y el acceso a los datos.

ASP.NET tuvo muy buena acogida, ya que permitía esta separación de forma mas o menos clara, de lo mas importante es que el código que controla el flujo de la aplicación y los datos se puede alojar en una clase, aparte del código html/ tags ASP.NET que conforman la interface gráfica.

Desde mi punto de vista muy particular, ASP.NET si proporcionaba una mejora en cuanto al desarrollo de aplicaciones web con respecto a como se hacían antes de ASP.NET, pero conforme la aplicación iba creciendo la complejidad de la misma aumentaba de forma importante, desafortunadamente los demos que Microsoft nos presentaba sobre "arrastrar y soltar", escribir aplicaciones sin escribir una linea de código, funciona muy bien para demos y aplicaciones pequeñas; y no en el mundo real.

Programé en ASP.NET y la verdad no me gusto la experiencia, definitivamente la complejidad del ciclo de vida de las paginas cae en lo ridículo, así que me dedique a otras cosas, pero de alguna u otra forma me "salía" la necesidad de programar para web. Buscando alternativas para ASP.NET me encontré con Ruby On Rails, una tecnología para desarrollo web que vuelve a lo básico, el modelo Model-View-Controller.

Mi problema con Ruby On Rails es que había que aprender un nuevo lenguaje, y uno de mis proyectos para una intranet estaba a la vuelta de la esquina, buscando sobre opciones del modelo MVC en .NET me encontré el proyecto Castle Monorail, el cual es una implementación muy cercana a ROR pero en .NET.

Castle Monorail y el patrón MVC me permitió terminar el proyecto para mi cliente de forma rápida y sin complicaciones, pero sobre todo me permitió hacer uso de la técnica Test-Drive Development, para llevar a cabo el desarrollo y probar que mi aplicación funcionara correctamente, algo que es muy difícil de lograr con ASP.NET.

Esta complejidad del ASP.NET no fue algo que únicamente yo vi, también una buena parte de los líderes de opinión en las tecnologías Microsoft, sobre todo el Estados Unidos, se empezaron a quejar y a buscar alternativas como ROR y Monorail, se inicio una discusión entre ellos y Microsoft, se creo el grupo ALT.NET que pondera la utilización de practicas ágiles, sobre herramientas, de hecho realizaron su primera conferencia en Austin, Texas.

En este punto la ruptura de Microsoft con parte de su comunidad era un tanto inminente, pero Microsoft realizo su jugada, y al parecer muy buena jugada, contrato a algunos de estos líderes de opinión para trabajar en una alternativa de ASP.NET y proporcionar a su comunidad una herramienta mas sencilla de utilizar y que fuera compatible con las metodologias ágiles, dentro de estos líderes de opinión contratados están Phil Haack, Rob Conery y Scott Haselman.

Así es como en la conferencia de ALT.NET Scott Guthiere y Scott Haselman presentaron el Microsoft ASP.NET MVC Framework, pero no solo eso, invitaron a gente de la comunidad de desarrolladores a dar sus opiniones sobre el mismo y de esa forma retro-alimentarse y realizar cambios sobre la marcha. El fin de semana pasado salió el primer Community Technical Preview o CTP, y al día de hoy hay una enorme cantidad de posts al respecto y ya inclusive proyectos open source como MVCContrib que tiene la finalidad de agregar nueva funcionalidad al MS MVC; es que ademas una de las características de MS MVC es que es totalmente extensible en todos sus aspectos, esto quiere decir que es posible reemplazar la funcionalidad original con una propia.

Ahora surgen las siguientes preguntas entre los defensores de ASP.NET:
- ¿ASP.NET va a ser reemplazado?, no va a seguirse desarrollando
- ¿Me va a afectar el ASP.NET MVC en algún modo?, no si estas contento con desarrollar en ASP.NET sigue desarrollando en ASP.NET e ignora el MVC
- ¿Que necesito para desarrollar en MVC?, nada solo bajarte las extensiones y ver algunos de los tutoriales - aunque todos están en ingles -
-¿Mi experiencia en ASP.NET me va a ayudar a moverme a MVC?, no, MVC es otro paradigma muy diferente a ASP.NET, va a ser necesario aprender nuevos conceptos.
- ¿Puede mezclar en una aplicación ASP.NET y MVC?, si pero no es muy recomendable
- ¿Que pasa con los controles ASP.NET que he desarrollado y los que he comprado de terceros?, no sirven para MVC
- ¿Que tan difícil es cambiarse a MVC?, los conceptos en si de MVC no son complejos y han estado con nosotros desde la década de los 70´s, poco a poco van a hacer sentido

Como conclusión parece que Microsoft esta vez puso mucha atención a su comunidad de desarrolladores, esperemos que siga por ese camino.

2 comentarios:

squidge dijo...

Porque dices que el ciclo de vida de una pagina asp.net cae en lo ridiculo?

Mario Alberto Chavez dijo...

squidge;

Es una expresion para remarcar la complejidad del ciclo de vida de una pagina aspx en comparacion con el nuevo ASP.NET MVC. Esto es todavia mas visible si programas controles del lado del servidor donde hay todavia una numero importante de eventos que se disparan durante su proceso.

http://msdn2.microsoft.com/en-us/library/ms178472.aspx

Saludos