En este artículo pretendemos abordar las ventajas que suponen utilizar el patrón de arquitectura MVC en nuestras aplicaciones ASP .NET, y a su vez, sus desventajas, destacando cuando no es óptimo recurrir a esta solución.

Para aquellos que anden completamente desentendidos del tema, daremos un par de definiciones que os pondrán en materia rápidamente.

Patrón de arquitectura

Expresa un esquema de organización estructural para una aplicación, teniendo así un nivel de abstracción alto.

MVC

Patrón de arquitectura que separa los datos de la aplicación, la interfaz de usuario y la lógica de control en tres componentes distintos, modelo-vista-controlador.

 

¿Por qué MVC?

Probablemente hayas llegado a este post porque quieres informarte o aclarar tus dudas sobre si vale la pena incorporar MVC a tu aplicación ASP .NET, o también es posible que conozcas el patrón MVC porque lo hayas usado en otro lenguaje, como puede ser Java o PHP, y te interese saber si funciona igual en .NET, de cualquier forma, las ventajas de utilizarlo en un lenguaje u otro son prácticamente las mismas.

Entonces, ¿Cuáles son las ventajas de utilizarlo en ASP .NET?

La primera de todas y por ello más importante, es la facilidad que nos aporta a nosotros, como desarrolladores que somos, administrar una aplicación web compleja teniéndola dividida en tres pilares fundamentales (modelo, vista, controlador, como ya comentamos antes).

La segunda ventaja es el uso de un “FrontController” que procesa todas las solicitudes a nuestra aplicación. Esto permite diseñar una infraestructura con un sistema de enrutamiento avanzado.

Otra ventaja también muy importante es su funcionamiento para aplicaciones web en las que trabajan grandes equipos formados por desarrolladores y diseñadores. Al tener la vista completamente separada de la lógica, unos no “interfieren” en las tareas de los otros.

Frente a los WebForms (mas adelante hablaremos de ellos) MVC tiene un par de ventajas, la primera de ellas es que no utiliza formularios de servidor con lo cual el desarrollador tiene mucho mayor control sobre la aplicación, la otra ventaja es que tampoco utiliza los “ViewState”, consiguiendo así ahorrar notablemente en el ancho de banda consumido.

 

¿Cuándo debo usarlo?

Por lo general, este patrón de arquitectura se puede adaptar prácticamente a cualquier tipo de aplicación, lo podríamos incorporar desde en una tienda e-commerce, una ERP, o incluso una red social, hasta una API. Pero siempre hay excepciones.  Si por ejemplo deseásemos hacer una SPA o un cliente de una API, en el cual toda o casi toda la lógica de la aplicación estuviese en la parte del front-end controlada por un framework de JavaScript como podría ser AngularJS, BackBone o Ember, dejaría de tener sentido utilizar MVC en la parte de back-end.

Con lo cual, utiliza MVC si:

-Estas familiarizado con MVC. Si ocurre al contrario y afecta negativamente a tu productividad, deberías buscar otra opción.

-Quieres un absoluto control sobre el HTML que va a ser renderizado en el navegador y no es un problema el tiempo que tengas que dedicar en crear las vistas.

-Necesitas crear test unitarios eficientes para la interfaz de usuario.

-Deseas tener un control total sobre como las URLs serán formateadas.

 

¿Existen alternativas?

En ASP .NET contamos con dos alternativas a utilizar MVC, podemos usar los WebForms u optar por los WebPages.

Algunas de las principales características de los WebForms son los “ViewState”, que es la capacidad de persistir el estado de la página web entre peticiones HTTP. Estos usan un patrón “PageController” en el cual se agrega la funcionalidad a las páginas individualmente. En general los WebForm son menos complejos y requieren menos código en comparación con MVC.

Por otro lado, tenemos los WebPages, este modelo de programación fue creado para aquellos programadores nuevos y sin experiencia ya que la curva de aprendizaje es mucho menor en comparación a MVC y los WebForms. Se construye con sintaxis Razor (MVC la incorpora en sus vistas) integrada completamente con el HTML en archivos de formato .cshtml, muy parecido a como ocurre con PHP.

Francisco López Sánchez

Alumno de Microsoft MCSD Web Applications + SharePoint Apps 2015-2016

Coordinador del Tech Club Tajamar