Gerardo Contijoch

Experiencias del día a día trabajando con .NET – ASP.NET, C#, ASP.NET MVC y demas…

Aprender ASP.NET MVC

Posted by Gerardo Contijoch en abril 25, 2009

Hace poco surgió en la blogósfera, una vez mas, la discusión sobre si ASP.NET MVC es mejor o peor que ASP.NET WebForms y si vale la pena aprender a usarlo. No es la primera vez que hay una discusión de este tipo y no será la última.

Esta vez quisiera aportar mi granito de arena a la discusión y para ello les voy a contar una breve historia personal.

Comencé a trabajar con WebForms hace unos 6 años. Esa fue mi primer experiencia Web, nunca antes había trabajado mas que con HTML puro. Como la mayoría en ese momento (imagino yo), empecé con los tutoriales de Microsoft y con algún Starter Kit. Luego llegó el programa Desarrollador 5 Estrellas de Microsoft, al cual seguí. Y no olvidemos los blogs y sites como Code Project o 4 Guys From Rolla, de los cuales uno puede aprender muchísimo. Sin embargo me resulto muy complicado comenzar a trabajar. Y no era que me faltara dominio del manejo de objetos o falta de habilidades para entender conceptos de programación, ya que en cualquier otro tipo de proyectos no tenía ningún problema. Llegó el punto en que llegué a detestar el desarrollo web. No quería saber nada de la Web, ¡no entendía como había gente que le gustara! Era terriblemente complicado para mi trabajar con conceptos como controles de usuario. Entendía que de alguna manera un objeto ‘TextBox’ terminaba siendo un ‘<input>’ del lado del cliente. Entendía que el ViewState ayudaba a que no se pierdan los valores de los controles. Entendía la diferencia entre procesamiento del lado del cliente y procesamiento del lado del servidor. Sin embargo no entendía como sucedía todo eso y ese era mi problema (y es el de muchos otros). ASP.NET hace un excelente trabajo ocultándole al usuario la verdadera naturaleza de la web y del desarrollo web. ¡No fue hasta un par de años después de comenzar a trabajar con ASP.NET que entendí que era POST y GET! Es increíble, pero sí, hice desarrollo web sin saber lo que era POST y GET (entre muchas otras cosas, por supuesto). Es como conducir un tren sin saber que tiene que ir sobre rieles, el tren va derecho sin que uno haga nada, pero uno no sabe porque es así.

Afortunadamente me topé con el blog de InfinitiesLoop y su famosísimo post Truly Understanding ViewState. Créanme que no estoy exagerando cuando les digo que ese post cambio para siempre mi forma de ver ASP.NET. Fue un click, un instante en que cambió todo. Desde ese momento dejé creer en la magia de ASP.NET y comencé a buscar el porqué y el cómo de todo lo que sucedía en una página. Y fue durante esa búsqueda en la que aprendí que era realmente el desarrollo web. No podía creer todas las ‘mentiras’ (por llamarlas de alguna manera) que había aprendido de ASP.NET. Ojo, ASP.NET no es que sea malo por eso, pero el camino natural de aprendizaje de ASP.NET lo lleva a uno a pensar en terminos de ‘Textboxes’, ‘UpdatePanels’ y propiedades que ‘mágicamente’ persisten en el tiempo en un entorno ‘stateless’ (sin estado) en vez de en posts, forms y requests asincrónicos, que es lo que realmente uno necesita dominar.

¿A qué viene todo esto? Sigan leyendo.

Yo comencé a jugar con ASP.NET MVC desde la Preview 3 (ya hace casi un año) y desde el primer momento me atrapó. No había controles de servidor que me abstraigan de cosas que en realidad no debería abstraerme. No había ViewState, ya no era necesario preocuparme por que guardaba y que no guardaba ahí ni por el tamaño de este. No había más misteriosos scritps que eran inyectados en las páginas sin que lo sepamos. No tenia que preocuparme por decidir si realmente me convenía manejar un evento de un campo de texto en el cliente o del lado del servidor. No existía mas el ciclo de vida de las paginas y sus controles (vean la comparación). Era un enfoque totalmente diferente, en donde el desarrollo web solo se limita a las vistas.

Como podrán notar, tengo preferencia por ASP.NET MVC frente al desarrollo clásico con WebForms, pero eso no significa que no siga trabajando con ellos. Lo sigo haciendo, pero ahora, a diferencia de hace algunos años, se lo que hago, se los pros y los contras de usar o no usar un WebControl, se cuando conviene escribir un HttpHandler en vez de una página y se que consecuencias puede traerme el deshabilitar el ViewState para una página. Ahora tengo más control sobre lo que hago y cómo lo hago porque lo entiendo.

De todos modos prefiero ASP.NET MVC por ser mucho mas sencillo de trabajar. Es más modular (puedo hacer un site entero sin haber escrito una línea de código de lógica de negocios o haber creado las tablas en una base de datos), más fácil de testear (la forma en que esta diseñado lo permiten), es totalmente extensible o personalizable (se puede inyectar código en casi cualquier parte de la cadena de procesamiento de un request), los sites tienden a ser mas livianos (no hay mas ViewState o scripts inyectados por defecto, ni hay que renderizar nada, todo es puro html), etc. Parte de esto se debe a la aplicación del patrón MVC, y parte a la forma en que fue implementado por Microsoft.

¿Porqué aprender ASP.NET MVC?

Rob Connery menciona algunas cuestiones por las que él considera que uno debería aprender ASP.NET MVC y no puedo estar más de acuerdo con él. Sobre todo por la anteúltima: Aprender nuevos conceptos. Usando este framework uno puede aprender nuevos patrones y principios de diseño (Model-View-Controller, Repository, Dependency Injection, Inversion of control, Factory, Template, etc ), mejorar nuestras habilidades con javascript (lo más probable es que querramos darle cierta interactividad a nuestro site, y para eso usamos javascript), conocer nuevas herramientas o librerías (para javascript lo más común es usar jQuery o prototype, para IoC podemos usar un framework como Castle MicroKernel, para el acceso a datos es común ver implementaciones hechas con Linq, NHibernate y Entity Framework), y por sobre todas las cosas, ser mejores desarrolladores y estar mejor preparados para el futuro al conocer las distintas opciones que tenemos para trabajar.

[Update: Aclaro que con WebForms uno también puede aprender patrones, usar javascript, librerías, etc, pero como mencioné anteriormente, el camino natural de aprendizaje con WebForms no hace evidente todas esas cuestiones, mientras que con ASP.NET MVC, sí.]

Con todo esto no quiero decir que ASP.NET MVC les va a solucionar todos los problemas, y que deban abandonar los WebForms, para nada, pero creo que puede llegar a ser un aporte muy interesante en la carrera de un desarrollador web.

Recursos

Hay muchos recursos para aprender ASP.NET MVC, pero la mayoría esta en inglés. Entre los más recomendables se encuentran:

[Update: Se agregaron links a blogs en español sobre ASP.NET MVC.]

De ahora en adelante voy a tratar de postear más contenido relacionado a ASP.NET MVC ya que es un tema que me interesa muchísimo y hay muy poco material en español. Si les interesa y tienen alguna sugerencia o duda sobre el tema, no duden en hacerla.

¡Nos vemos en el próximo post

Publicado originalmente en https://gerardocontijoch.wordpress.com.

4 comentarios to “Aprender ASP.NET MVC”

  1. mafioso710 said

    Ok, todo eso que dices me parece genial, yo también pasé por lo mismo cuando comencé con esto de la Web me creia un maestro porque conocía ASP.NET pero sin embargo cuando me topé con PHP me di cuenta que no sabia un comino de lo mas basico sobre HTML como GET y POST asi como en el ejemplo que vos indicas.

    Te dire que a veces esa es una razon por la que me da un poco de temor al ver tanto adelanto tecnologico de parte de Microsoft con su Visual Studio, si por mi fuera yo seguiria programando con su version 2003 pero por ejemplo ya esta por salir la version 2010 y practicamente todo lo hace de forma automatica ocultando todo al desarrollador que acostumbra hacer sus aplicaciones a punta de Clicks y Wizards.

    Queria preguntarte donde puedo conseguir mas material del MVC para ASP.NET de preferencia en español.

  2. Es bastante complicado seguir todos los avances tecnológicos con el ritmo que llevan, a mi me pasa lo mismo. En mi caso particular, yo casi pasé de largo la versión 2005 de Visual Studio, trabajé mucho en proyectos con la versión 2003 y para cuando tuve la posibilidad de comenzar a trabajar con el Fx 2.0, ya faltaban meses para la salida de VS2008. Ahora solo trabajo con VS2008, pero sinceramente, no estoy seguro de que me vaya a pasar a VS2010 tan pronto. Se que tiene cosas muy interesantes como las nuevas vistas para trabajar con multi-threading, e imagino que habrán mejorado aún mas el editor web y el de Xaml (en la versión 2008 no se puede editar un documento Xaml desde la vista diseño por ejemplo), pero todavía no me convence.

    Mi técnica es tratar de avanzar sobre ciertas tecnologías en particular, e ignorar al resto. Por ejemplo, desde las primeras Previews me interesé por ASP.NET MVC, pero nunca le presté atención a cualquier cuestión relacionada con Entity Framework; para trabajar con javascript decidí que iba a ser más practico interiorizarme en jQuery y deje de lado cualquier otro framework javascript. Se que eso tiene sus desventajas, pero creo que puedo aprovechar mucho mejor mi tiempo especializándome en pocas cosas.

    Con respecto a tu pregunta, te sugiero los siguiente blogs (los pocos en español que yo conozco, la mayoría lo leo en inglés):
    http://www.variablenotfound.com/
    http://vhspiceros.blogspot.com/
    http://leomicheloni.blogspot.com/
    http://devlixir.com/
    y por supuesto, https://gerardocontijoch.wordpress.com :P

  3. cugartemendia said

    Hola, yo estoy hace unos leyendo de todos lados este tema, pero no logro entender como se comunican los datos que maneja jquery con los controler.

    Podras darme una ayudita.

  4. fernando said

    Cugartemendia mira este sitio: http://www.arturi.eu/introduccion-a-asp-net-mvc/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: