You are on page 1of 9

1. Empecemos desde el principio, qu es MVC?

Aunque de forma algo simplista, podramos definir MVC como un patrn arquitectural que describe una forma de desarrollar aplicaciones software separando los componentes en tres grupos (o capas):

El Modelo que contiene una representacin de los datos que maneja el sistema, su lgica de negocio, y sus mecanismos de persistencia. La Vista, o interfaz de usuario, que compone la informacin que se enva al cliente y los mecanismos interaccin con ste. El Controlador, que acta como intermediario entre el Modelo y la Vista, gestionando el flujo de informacin entre ellos y las transformaciones para adaptar los datos a las necesidades de cada uno.

MVC son las siglas de Modelo-Vista-Controlador, y se trata de un modelo muy maduro y que ha demostrado su validez a lo largo de los aos en todo tipo de aplicaciones, y sobre multitud de lenguajes y plataformas de desarrollo. Puedes encontrar ms informacin en:

Wikipedia, Modelo-Vista-Controlador Documentos originales de definicin de MVC, de Trygve M. H. Reenskaug, en Xerox (ao 1978!) Tutorial de Java, Arquitectura MVC Model-View-Controller Web presentation pattern en MSDN

2. Qu ventajas tiene el uso del patrn MVC?


Como siempre, esto de enumerar ventajas es algo subjetivo, por lo que puede que pienses que falta o sobra alguna (dmelo!). En un primer asalto podramos aportar las siguientes:

Clara separacin entre interfaz, lgica de negocio y de presentacin, que adems provoca parte de las ventajas siguientes. Sencillez para crear distintas representaciones de los mismos datos. Facilidad para la realizacin de pruebas unitarias de los componentes, as como de aplicar desarrollo guiado por pruebas (TDD). Reutilizacin de los componentes. Simplicidad en el mantenimiento de los sistemas. Facilidad para desarrollar prototipos rpidos. Los desarrollos suelen ser ms escalables.

Pero bueno, tambin se pueden citar algunos inconvenientes:

Tener que ceirse a una estructura predefinida, lo que a veces puede incrementar la complejidad del sistema. Hay problemas que son ms difciles de resolver respetando el patrn MVC. La curva de aprendizaje para los nuevos desarrolladores se estima mayor que la de modelos ms simples como Webforms. La distribucin de componentes obliga a crear y mantener un mayor nmero de ficheros.

3. Qu es ASP.NET MVC Framework?


Es un framework, un entorno de trabajo cuya primera versin acaba de ver la luz, creado por Microsoft con objeto de ayudarnos a desarrollar aplicaciones que sigan la filosofa MVC sobre ASP.NET. Adems del conjunto de libreras (ensamblados) que proporcionan las nuevas funcionalidades a nivel de API, incluye plantillas y herramientas que se integran en Visual Studio 2008 (tanto en la versin Express de Visual Web Developer como en sus hermanas mayores) para facilitarnos un poco las cosas. Una vez instalado el marco de trabajo (que puedes iniciar desde aqu o desde el Web Platform Installer), Visual Studio mostrar un nuevo tipo de proyecto (ASP.NET MVC Web Application) que nos permitir crear el esqueleto bsico de un proyecto de este tipo. Y ya para cuando estemos en faena, el entorno ofrece multitud de utilidades para hacer nuestro trabajo ms fcil, como la herramienta de creacin de vistas automticas, el desplazamiento entre controladores y vistas, o plantillas para la definicin de controladores, entre otras.

4. Es el primer framework MVC creado para .NET?


No, ni el nico. Existen multitud de frameworks MVC para ASP.Net, como MonoRail, Maverick.Net, ProMesh.Net y muchos otros.

5. Como desarrollador de aplicaciones web con ASP.NET, me afectar la llegada de este framework?
No necesariamente. Puedes seguir desarrollando aplicaciones como hasta ahora, con Webforms. Si as lo decides, este nuevo framework no te afectar nada; simplemente, ignralo.

De todas formas, ya que has ledo hasta aqu, permteme un consejo: aprende a utilizar ASP.NET MVC framework. Despus podrs decidir con conocimiento de causa si te conviene o no.

6. Entonces, no significa la aparicin del framework MVC la muerte prxima de los Webforms de ASP.NET?
En absoluto. Son simplemente dos filosofas diferentes para conseguir lo mismo, pginas web! La tecnologa de Webforms es muy til para asemejar el desarrollo de aplicaciones web a las de escritorio, ocultando la complejidad derivada del entorno desconectado y stateless (sin conservacin de estado) del protocolo HTTP a base de complejos roundtrips, postbacks y viewstates, lo que nos permite crear de forma muy productiva formularios impresionantes y que el funcionamiento de nuestra aplicacin est guiado por eventos, como si estuviramos programando Winforms. Sin embargo, esta misma potencia a veces hace que las pginas sean pesadas y difcilmente mantenibles, adems de dificultar enormemente la realizacin de pruebas automatizadas. Y por no hablar de comportamientos extraos cuando intentamos intervenir en el ciclo de vida de las pginas, por ejemplo para la carga y descarga de controles dinmicos. ASP.NET MVC propone una forma distinta de trabajar, ms cercana a la realidad del protocolo y, curiosamente, ms parecida a cmo se haca unos aos atrs, cuando controlbamos cada byte que se enviaba al cliente o se reciba de ste. No existen, por tanto, conceptos como el mantenimiento del estado en el viewstate, ni el postback, ni nos valdrn los controles de servidor basados en estas caractersticas, que son la mayora. Sin embargo, dado que el framework est creado sobre ASP.NET, ser posible utilizar pginas maestras, codificar las vistas en un .aspx utilizando C# o VB.NET, usar los mecanismos de seguridad internos, control de cach, gestin de sesiones, localizacin, etc.

7. Vale la pena pasarse a ASP.NET MVC o sigo usando Webforms?


En mi opinin, probablemente no se trate de decidirse por una u otra tecnologa, sino de conocer ambas y utilizar la ms apropiada en cada momento. Hay muchos aspectos a tener en cuenta, por citar algunos:

los conocimientos y experiencia del equipo de desarrollo la necesidad de usar controles o sistemas preexistentes la madurez del framework el futuro de la tecnologa

la importancia de ventajas propias de MVC el tipo de sistema que se pretende construir

Vamos a reflexionar sobre cada uno de estos puntos, y la decisin os la dejo a vosotros. ;-)

El equipo de desarrollo
La tecnologa de formularios web (Webforms) permite el desarrollo rpido de aplicaciones (RAD) a travs de diseadores visuales con los que es posible componer una pgina compleja y definir el comportamiento del interfaz a golpe de ratn, puesto que el framework se encarga de realizar parte del trabajo duro, como el mantenimiento del estado entre peticiones, convertir propiedades de controles en cdigo HTML y CSS, o incluso generar scripts que realicen determinadas tareas en cliente. De hecho, siguiendo este modelo es posible crear aplicaciones para Internet sin tener apenas idea de las particularidades inherentes al desarrollo web, lo que permite que muchos programadores procedentes del mundo del escritorio puedan ser productivos muy rpidamente, aunque sea a costa de generar pginas mucho ms pesadas y con un cdigo de marcado complejo. No hay que olvidar que para determinado tipo de aplicaciones, los Webforms son una buena opcin, tanto como lo han sido hasta ahora. Por tanto, si el equipo de desarrollo tiene ya experiencia creando aplicaciones con esta tecnologa y no poseen grandes conocimientos sobre programacin web de ms bajo nivel ni experiencia previa trabajando con el patrn MVC, deberamos pensrnoslo antes de dar el salto a ASP.NET MVC, puesto que la productividad, al menos inicialmente, va a caer. ASP.NET MVC requiere un conocimiento ms profundo del entorno web y sus tecnologas subyacentes, puesto que a la vez que ofrece un control mucho ms riguroso sobre los datos que se envan y reciben desde el cliente, exige una mayor responsabilidad por parte del desarrollador, ya que deber encargarse l mismo de mantener el estado entre peticiones, maquetar las vistas, crear las hojas de estilo apropiadas, e incluso los scripts. Esto, sin embargo, no difiere mucho de la forma de trabajar unos aos atrs, y es posible que en el equipo de trabajo haya desarrolladores experimentados que se sientan incluso ms cmodos trabajando a este nivel que utilizando abstracciones como las provistas por ASP.NET Webforms.

Controles y mdulos reutilizables


Otro aspecto a valorar antes de dar el salto a ASP.NET MVC es que existe una altsima probabilidad de que no podamos utilizar sistemas o componentes que hayamos desarrollado previamente, lo cual redundar en los tiempos de desarrollo y productividad del equipo de trabajo. No nos valdrn los controles de servidor, ni las plantillas de proyectos, ni los generadores de cdigo, y en muchos casos ni siquiera la herencia de editor (que por muy antipatrn que sea seguro que acostumbramos a utilizar).

Probablemente en breve dispondremos de componentes para ASP.NET MVC generados por la propia comunidad de desarrolladores, ya sea en forma de helpers (mtodos estticos de generacin de cdigo en cliente), en forma de vistas parciales (por ejemplo en archivos .ASCX) y nos permitan reutilizar cdigo, o incluso como controles de servidor (ya se puede ver algo de eso en el ensamblado MVC Futures, disponible en CodePlex). Puedes ver un ejemplo de helper en el post Helper para desplegables enlazados con ASP.NET MVC y jQuery.

Madurez del framework


ASP.NET MVC es un framework recin salido del horno, por lo cual su adopcin implica ciertos riesgos, ya superados por los veteranos Webforms. En primer lugar, es bastante probable que durante un primer periodo de adopcin comiencen a surgir bugs, agujeros de seguridad y otros problemas que podrn hacer tambalear los cimientos de los sistemas que utilicen este marco de trabajo. Tambin es cierto que dada la disponibilidad del cdigo fuente del mismo y su relativa simplicidad frente a los formularios web, los inconvenientes que puedan aparecer podran ser rpidamente subsanados. La madurez tambin se hace patente en la cantidad y calidad de informacin disponible. ASP.NET MVC, aunque cuenta con una comunidad de desarrolladores bastante entusiasta, son una minora comparndola con su veterana competencia. Y lo mismo ocurre con el nmero ingente de componentes y controles reutilizables disponibles para Webforms. Dado que no son compatibles con el framework MVC, se parte de una situacin de clara desventaja frente a stos, aunque como comentaba anteriormente seguro que con el tiempo este aspecto ir mejorando.

Consideraciones sobre el futuro de la tecnologa


Si lo que te preocupa es el futuro de los Webforms, has de saber que Microsoft va a seguir dndoles soporte y mejorndolos, como no poda ser de otra forma. Por tanto, de momento no es necesario que bases tu decisin en esto. Eso s, hay quien opina que ASP.NET MVC ser el estndar de creacin de sistemas web en unos aos, por lo que en cualquier caso se trata de una tecnologa que no habra que perder de vista

Beneficios de ASP.NET MVC


Las ventajas de la arquitectura MVC, descritas anteriormente, y las bondades del diseo del framework son un buen aliciente para comenzar a trabajar con ASP.NET MVC. De hecho, deberamos tener muy en cuenta en qu aspectos nuestros desarrollos van a beneficiarse del uso de esta tecnologa y valorar si estas ventajas compensan los inconvenientes que su adopcin va a suponer:

la separacin de aspectos impuesta por el patrn MVC obligar a tener un cdigo ms limpio y estructurado, independizando totalmente la interfaz de la lgica de navegacin y, por supuesto, de la de negocio. de la misma forma, esta divisin facilita el trabajo en equipo, pues permite el avance en paralelo en las distintas capas. si entre nuestras prioridades est el asegurar el correcto funcionamiento de nuestros componentes a travs de pruebas unitarias, o hemos optado por utilizar una metodologa de desarrollo guiado por pruebas (TDD), ASP.NET MVC nos vendr de perlas. La separacin de aspectos citada anteriormente facilita la creacin de pruebas especficas para los componentes de cada capa de forma independiente, as como el uso de tcnicas avanzadas (mocking, inyeccin de dependencias) para que stas sean lo ms completas posible. las friendly URLS, o direcciones amigables, es un beneficio directo del uso del framework de Microsoft. Estrictamente hablando no es mrito de la plataforma MVC, sino del juego de clases presentes en el espacio de nombres System.Web.Routing, incluidas en .NET framework 3.5, pero en cualquier caso si optamos por esta tecnologa la tendremos de serie, con las ventajas que ello conlleva (SEO, REST, claridad en direcciones). al final, el software ser mucho ms mantenible; el hecho de que los componentes estn separados y bien estructurados simplificar las tareas de mantenimiento. el conjunto de convenciones en cuanto a la estructura de proyectos y de nombrado y disposicin de elementos facilitar el desarrollo una vez sean asimiladas.

El tipo de sistema
A la hora de plantearse un cambio de este tipo es imprescindible tener en cuenta el tipo de proyecto en el que solemos trabajar. No es lo mismo desarrollar un sitio web colaborativo destinado a un gran nmero de usuarios, como Facebook o Digg, donde el control fino sobre la entrada y salida es crucial para asegurar aspectos como la escalabilidad, cumplimiento de estndares, o accesibilidad, que crear una aplicacin de gestin que utilizarn un grupo relativamente reducido de usuarios desde una intranet corporativa. Para el primer caso, ASP.NET MVC es una buena opcin. La simplicidad de la arquitectura MVC hace que el ciclo de vida de las pginas de este framework sea mucho ms sencillo que el de los Webforms, y la ausencia de automatismos y persistencia de estado aligera en gran medida el peso y complejidad de las pginas, lo cual redundar

muy positivamente en el rendimiento del sistema. Si adems el proyecto requiere o resulta beneficiado por el uso de direcciones URL amigables (por razones de SEO, para presentar un interfaz claro de tipo REST, o cualquier otro motivo), ms an. Un ejemplo de aplicacin real de este tipo es la famosa comunidad StackOverflow. En cambio, el segundo caso, cuando se trata de crear pesadas aplicaciones de gestin con interfaces de usuario complejos y en las que no es especialmente relevante la calidad del cdigo HTML enviado al cliente, ni el peso de stas al ser entornos cerrados y controlados, ASP.NET Webforms sigue siendo la opcin ms razonable. Las facilidades para el desarrollo rpido de aplicaciones (RAD) son mayores utilizando formularios web, aunque sea a cambio de sacrificar aspectos como la separacin de cdigo e interfaz, o la facilidad para realizacin de pruebas unitarias.

8. Puedo convertir mi proyecto ASP.NET Webforms a ASP.NET MVC?


S, pero tardars un buen rato ;-) Al menos que conozca, no existe ninguna herramienta ni siquiera capaz de intentar realizar tal proeza. Hay que tener en cuenta que el cambio de una a otra tecnologa no es una mera traduccin como podra ser convertir una aplicacin VB.NET a C#; se trata de un nuevo marco de trabajo que afecta sobre todo a la presentacin y control de flujo del sistema. Si tienes unas buenas clases de lgica de negocio, bien aisladas de la tecnologa Webforms (como debera ser, por otra parte), probablemente sean los nicos componentes que puedas reutilizar de forma directa, sin grandes cambios. El resto, es decir, todo lo relativo a la interaccin con el usuario, habra que convertirlo de forma manual, y por tanto, probablemente habra que pensarse bien si vale la pena hacerlo.

9. Se puede utilizar ASP.NET Ajax con el framework MVC?


Si nos estamos refiriendo a la posibilidad de utilizar controles de servidor Ajax, como el clebre UpdatePanel o los controles del ASP.NET Ajax Control Toolkit, la respuesta es rotunda: no. De hecho, el modelo MVC no permite el uso de controles de servidor (runat="server"); bueno, o al menos no lo permite de la forma en que venamos hacindolo, pues han dejado de existir aspectos tan fundamentales para ellos como el viewstate o los postbacks. Ahora bien, si la pregunta la generalizamos como se pueden utilizar libreras Ajax con el framework MVC? la respuesta es absolutamente. De hecho, ASP.NET MVC se lleva de fbula con libreras de scripting como las incluidas en el framework ASP.NET 3.5, o con la magnfica jQuery. La limpieza de la filosofa MVC hace posible que sea realmente sencillo realizar desde cliente llamadas a los controladores mediante scripting con objeto de obtener datos, actualizar porciones de contenido de la pgina con el marcado de la vista correspondiente, o, en definitiva, interactuar con el servidor.

En este mismo blog puedes encontrar multitud de ejemplos de integracin de jQuery y ASP.NET MVC, que aunque implementados con las previews del framework (a ver si un da tengo un rato y los voy actualizando!), pueden ayudarte a entender cmo hacerlo. Otro aspecto interesante respecto a jQuery es que esta librera entr a formar parte de la plataforma de desarrollo de Microsoft el pasado mes de septiembre, lo que en la prctica aporta varias ventajas: la primera, que jQuery viene incluido de serie en las plantillas de proyectos ASP.NET MVC; la segunda, que Microsoft se ha esforzado por mejorar la integracin con Visual Studio de esta librera, facilitando archivos que hacen posible el disfrute de intellisense mientras la utilizamos.

10. Se puede utilizar VB.NET con ASP.NET MVC?


Por supuesto. Aunque la mayora de cdigo que se encuentra por la red utiliza C#, probablemente porque es el lenguaje en el que ha sido desarrollado y sobre el que se estn exponiendo ms ejemplos desde las previews ms tempranas, cualquier lenguaje .NET podra ser utilizado sin problema para desarrollar aplicaciones sobre este framework. A nivel de entorno de desarrollo, Visual Basic ofrece el mismo nivel de ayudas y plantillas que C#, pero desconozco si esto es as en otros lenguajes.

11. Puedo usar LINQ desarrollando aplicaciones con ASP.NET MVC framework?
S, de hecho se complementan a la perfeccin. Aunque LINQ como tal slo es un mecanismo de consulta integrado en los lenguajes de programacin, las tecnologas ORM que lo rodean, como LINQ2SQL o Entity Framework son ideales para implementar los componentes propios del Modelo (la M de MVC). En aplicaciones relativamente simples, estas clases podran generarse con los diseadores visuales del entorno de desarrollo, o de forma externa con herramientas como SQLMetal, facilitndonos enormemente el trabajo. Este es un buen momento para comentar que una de las grandes crticas que se estn haciendo a la implementacin del framework ASP.NET MVC es que parece hacer olvidado la M. Si bien el marco de trabajo establece con claridad el alcance y responsabilidades de los controladores y las vistas y dota de herramientas y convenciones especficas a cada una de estas capas, no ocurre lo mismo con el Modelo, que queda totalmente al libre albedro del desarrollador.

12. Qu tipo de tecnologas puedo utilizar en las vistas?


El objetivo de las vistas es componer el interfaz de usuario y los mecanismos de interaccin con el usuario. Lo habitual ser utilizar XHTML, CSS y Javascript, aderezado con bloques de cdigo de servidor que se ejecutar en el momento de renderizar la pgina.

Tambin puedes utilizar la tecnologa Ajax para enviar u obtener informacin desde el servidor, siempre mediante llamadas a acciones definidas en el controlador, que te permitirn crear interfaces ms dinmicos y actuales. Pero sobre todo, nada de utilizar controles de servidor (Label, Button, Dropdowns). Estos debern ser sustituidos por sus elementos XHTML equivalentes, lo que implica que perderemos los automatismos provistos por Webforms para el mantenimiento del estado de los controles.
<for each="var name in names"> <test if="name == 'Jose'"> <p>Yo mismo</p> <else/> <p>Amigo: ${name} </test> </for>

Otra posibilidad interesante que aprovecha y demuestra la flexibilidad de la arquitectura de ASP.NET MVC framework, es la utilizacin de motores de vistas distintos al estndar. Existen multitud de motores ligeros (NHaml, Spark, Brail, NVelocity), cada uno con su propio lenguaje de marcas y convenciones, que permiten la definicin de vistas a partir de plantillas como la que se muestra en el lateral (ejemplo de Spark).

13. Es ASP.NET MVC framework software libre?


He aqu una de las grandes novedades respecto al post que escrib un ao atrs. Por aquellos tiempos era inimaginable que esta pregunta pudiera responderse de forma afirmativa, pero efectivamente, ASP.NET MVC Framework es software libre. A primeros de abril de 2009 se comenz a distribuir oficialmente el cdigo fuente de ASP.NET MVC con licencia MS-PL (Microsoft Public License), un modelo de licencia aprobado por la OSI (Open Source Initiative) que permite el uso del software en aplicaciones comerciales y no comerciales.

You might also like