Un poco de teoría
MVC son las siglas de Model View Controller, o Modelo Vista Controlador en español. Es un patrón de arquitectura de software que se ha vuelto muy común en estos años, pero sus orígenes se remontan a la década del 70. Lo que propone este patrón es la separación de la interfaz de usuario con lógica de negocio y el manejo de los datos. Para esto se divide en 3 componentes:
- Modelo. Es el componente que se encarga de modelar, valga la redundancia, los datos del sistema: acceso y persistencia de la información que maneja el aplicativo.
- Vista. Es el componente que sirve de interfaz hacia los usuarios. Muestra el resultado del procesamiento hecho por el Controlador.
- Controlador. Es el encargado de recibir las peticiones y procesarlas, apoyándose en el Modelo y mostrando los resultados usando la Vista.
Implementación de Microsoft
Hay muchos frameworks para diferentes tecnologías de desarrollo que implementan MVC. Tenemos como ejemplos a Symfony para PHP, Struts para Java, Ruby on Rails para Ruby; entre otros que seguramente has escuchado o conoces.
Con respecto a ASP .NET, la implementación de Microsoft no es la primera, existen otros anteriores como MonoRail o Maverick .NET, por poner sólo un par de ejemplos. Fue en el año 2009 cuando Microsoft lanzó la versión 1.0 de su framework. Desde entonces, le ha dado bastante impulso a esta tecnología y ha sacado sucesivas versiones hasta llegar a la 5.2, lanzada en Julio del 2014.
Es de destacar también que esta tecnología es Open Source, es decir, el código fuente es accesible desde CodePlex, lo que significa que puedes descargarlo y modificarlo a tu gusto, e incluso puedes hacer contribuciones al equipo de desarrollo de Microsoft para que lo incorporaren al proyecto, si ellos lo consideran por supuesto.
ASP .NET MVC y ASP .NET WebForms
Cuando salió MVC, la tecnología existente en el mundo web de DotNet era ASP .NET WebForms. Este acontecimiento significó una revolución y surgieron muchas dudas acerca de cuál tecnología era mejor. En resumen, cada una tiene sus ventajas y desventajas, y depende del escenario en que estés para poder decidirte por una u otra, aunque con ventaja para MVC desde mi punto de vista.
WebForms
Ventajas:
- Es más rápida para desarrollar y más simple, ya que la tecnología oculta el protocolo HTTP (sin estado) emulando el desarrollo de aplicaciones de escritorio, orientado a eventos y con manejo de estado.
- La curva de aprendizaje es pequeña, ya que no se necesita conocer el ciclo de funcionamiento del protocolo HTTP, los comandos GET, POST u otros; además que no es necesario (casi) usar Javascript.
Desventajas:
- La simplificación tiene un costo, ya que las páginas resultantes son bastantes pesadas, debido a la complejidad que se esconde y el manejo de estado que se encapsula en controles ocultos.
- No se tiene control del HTML generado, lo que hace bastante complicado incorporar algo de código cliente (Javascript).
- Debido al code-behind (código de cada página web) es muy complicado que el código contenido en estas páginas sea reutilizable o pueda ser sometido a pruebas (TDD).
MVC
Ventajas:
- Al estar separados los componentes en el proyecto, lo hacen más ordenado, reutilizable e ideal para ejecutar pruebas (TDD) de los procedimientos.
- Al tener un control total del HTML generado, las páginas están más optimizadas, es decir, son más ligeras. Además, son ideales para usar Javascript, en concordancia con las tecnologías actuales donde han tomado gran importancia librerías como Prototype, JQuery, entre otras.
- Posee un excelente sistema de enrutamiento, más simple de recordar y SEO friendly (amigables con el posicionamiento en buscadores).
Desventajas:
- La principal desventaja de esta tecnología es su curva de aprendizaje, especialmente si vienes del mundo Windows Forms o similares.
Te esperamos en la segunda parte del artículo en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.