En estos días, se preguntó en una lista del MUG sobre recursos para aprender ASP.NET MVC. Yo aprendí de a poco, a lo largo de los años, así que sé exactamente cómo sumergirse rápidamente en el tema. Pero puedo escribir y mencionar algunos pasos y recursos.
Primero, hay que comprender que MVC viene de Model View Controller. Y en el caso de ASP.NET MVC, está claramente implementado. En lugar de tener páginas Web Form, con una parte visible de diseño y una parte de código con eventos de ida y vuelta, el esquema de ASP.NET MVC es distinto.
Cuando un usuario pide una página como /customer, el código de ASP.NET MVC rutea (de hecho, hay un ruteador) ese pedido a un método de una clase controladora. Por ejemplo, al método Index dentro de CustomerController. Luego, ese método tiene que devolver información sobre la vista que hay que mostrar. Las vistas se programan en general como HTML con código embebido, de distintas “engines”, la más popular es Razor. Una vista es algo parecido (sólo parecido) al ASP clásico de los noventas. Pero cada vista recibe lo que se llama un modelo: por ejemplo, la vista de listado de clientes podría recibir un IList<Customer> como modelo (accesible desde la propiedad de la vista Model) y podría iterar sobre el modelo para producir un resultado.
Pero es mejor tener código de ejemplo, ver el resultado de una charla que dí en el MUG:
https://github.com/ajlopez/TddRocks/tree/master/Consorcios
Donde se hicieron algunas páginas, y la lógica del dominio (simple) está en un proyecto de clases aparte. Vean que también puse tests. De hecho, la charla fue sobre cómo programar ASP.NET MVC usando TDD (Test-Driven Development). Ver mis posts sobre TDD. Por ejemplo la serie Escribiendo una Aplicación (ASP.NET MVC) usando TDD
Ver también el video que explica paso a paso el proceso, gracias a la gente de AltNet Hispano
Desarrollando una aplicación con TDD desde cero
No recuerdo dónde quedó el código de esa reunión, debe ser
https://github.com/ajlopez/TddRocks/tree/master/TddApp o
https://github.com/ajlopez/TddAppAspNetMvc
Tal vez es demasiado empezar con TDD en un tema nuevo, pero les recomiendo que una vez comienzen a dominar ASP.NET MVC, pasen a trabajar de esa manera. Puede comenzar top-down (con las vistas y primeros modelos de vistas, sin tener la lógica de negocio y el modelo de negocio), o pueden comenzar por “el medio”, armando con TDD todo el proyecto de clases donde resida la lógica y modelo de negocio.
Otro tema es el lenguaje: prácticamente todos están programando en C#. Si están con VB.NET, puede ser una buena oportunidad para cambiar de lenguaje. No es difícil, los conceptos y clases de .NET son los mismos.
ASP.NET MVC fue evolucionando. Ultimamente, tuvimos ASP.NET MVC 3, 4 y ahora 5. Lamentablemente, no son simples librerías, sino que dependen del framework .NET, y para las últimas versiones de MVC tienen que usar las últimas versiones de Visual Studio. Yo aconsejaría Visual Studio 2010 (no sé por qué, algún genio de Microsoft quitó los botones y funcionalidad de tests que había en VS 2008 y VS 2010, y en el VS 2012 hay un test explorer; por lo menos para mí, que sigo el flujo de trabajo de TDD, es bastante molesto; veré si puedo acostumbrarme). Si tienen VS 2010, iría directamente a ASP.NET MVC 4. Si tiene VS 2012, lo mismo (pero podría intentar instalar el MVC 5 si quieren). Me temo que las vistas generadas varían de versión a versión.
No hace falta, pero si quieren tener un panorama más amplio de la interfaz, pueden leer:
Hay una explicación más detallada de lo que es ASP.NET MVC, para los que se inician en el tema, en:
An Absolute Beginner’s Tutorial on ASP.NET MVC for Web Forms Developers
No lo necesitan tanto al principio, pero si quieren ver más detalles de routing:
Routing in ASP.NET MVC 3 Tutorial
Tienen varios recursos en el sitio de Microsoft:
Por ejemplo:
ASP.NET MVC Overview
Learn about the differences between ASP.NET MVC application and ASP.NET Web Forms applications. Learn how to decide when to build an ASP.NET MVC application.
Hay un buen listado de recursos en
Si tienen VS 2012, pueden intentar hacer:
ASP.NET MVC Facebook Birthday App
Bien, hay de todo, como en botica. Bastante por hoy. Aprendan MVC (que en el ambiente web ha prendido como patrón, antes que en .NET, en Python y Ruby). Algunos enlaces más, en “potpourri”:
https://delicious.com/ajlopez/aspnetmvc
https://delicious.com/ajlopez/aspnetmvc,tutorial
https://delicious.com/ajlopez/aspnetmvc4
https://delicious.com/ajlopez/aspnetmvc5
https://delicious.com/ajlopez/mvc
https://delicious.com/ajlopez/mvc,computerhistory (interesante para ver de dónde viene MVC, que no nació para la web)
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez