Últimas novedades en MVC 6

Hace aproximadamente un año mi compañero, Robert Bermejo, nos hablaba de vNext (ahora ASP.NET 5) y nos enumeraba las diferentes novedades que incluiría la nueva versión del .NET. Hoy quiero entrar en detalle sobre una de esas novedades. Hoy hablaré de MVC 6.

Antes de todo me gustaría citar a Wikipedia para definir que es el MVC (modelo – vista –controlador):

“El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

“Aunque originalmente MVC fue desarrollado para aplicaciones de escritorio, ha sido ampliamente adaptado como arquitectura para diseñar e implementar aplicaciones web en los principales lenguajes de programación.

Por lo tanto, y sin querer parecer redundante, el MVC se compone principalmente de tres componentes que son:

  • Modelo: Es la capa que representa los datos de la aplicación.
  • Vista: Representa la capa de presentación del usuario (lo que se ve).
  • Controlador: Es la capa que contiene toda la lógica de la aplicación.

En general, cuando recibimos una actualización, normalmente esperamos pequeños cambios o modificaciones que mejoran lo que tenemos actualmente y que no alteran el funcionamiento habitual del producto. En este caso no ha sido así. MVC 6 forma parte de la nueva versión de ASP.NET la cual ha sufrido grandes cambios que afectan directamente al funcionamiento actual del MVC. Es tan grande el salto que ha dado la nueva versión del .NET que MVC 6 no es compatible con su antecesor pero si que se puede migrar de una versión a otra.

A continuación me gustaría relatar alguno de los cambios más significativos de esta nueva versión:

  • MVC ahora es mucho más. En la actual versión de ASP.Net tenemos diferentes frameworks definidos: MVC, WebAPI y WebPages. Cada uno deframeworks MVC6 estos se diseñó para un propósito concreto pero conceptualmente se parecen mucho. Por ejemplo, MVC y WebAPI comparten muchos componentes: controladores, acciones, enrutamiento, filtros… pero cada uno de ellos se define en librerías separadas. Un ejemplo muy claro es el de los controladores. La finalidad es la misma, gestionar las peticiones http. Pero en vez de heredar de la misma clase, cada uno hereda de la suya particular. El controlador de WebAPI hereda de “ApiController” y el controlador de MVC hereda de “Controller”. Por otro lado, WebPages y MVC. Los dos utilizan “HTML Helpers” pero en vez de usar los mismos, cada uno tiene los suyos particulares. Los de WebPages están en Web.WebPages.Html y los de MVC en System.Web.Mvc… Con el enrutamiento sucede lo mismo. MVC y WebAPI necesitan saber cómo en rutar las llamadas que procesan pero cada uno tiene su forma particular de configurarse. Tenemos conceptos e ideas muy parecidas pero muy separadas entre si. MVC 6 es la suma de todas ellas consiguiendo unificar componentes y simplificando su arquitectura. Por ejemplo, para MVC y WebAPI tendremos controladores, rutas y modelos de mapeo unificados por lo que podremos, con un único controlador, devolver tanto vistas para MVC como respuestas WebAPI en función de la petición Http.
  • Desaparecen las “partial views” y se substituyen por ViewComponents. Estos son muy parecidos a las “partial views” pero mucho más poderosos. Se componen de una clase, que funciona como un mini-controlador y de una vista asignada a esa clase que se renderizará a modo de “partial view”. Por otro lado nos permitirán obtener los datos desde una base de datos y ser ejecutados asíncronamente.
  • Aparece el concepto de Tag Helper substituyendo a los actuales Html Helpers. Los Tag Helpers son, aparentemente, elementos html que harán mucho más amigable el trabajo de un diseñador web. Por ejemplo, si quisiéramos hacer un formulario donde introducir nuestro e-mail tendríamos:

-En la actual versión de MVC, el siguiente código:

código MVC6-Por otro lado, en MVC 6, el código sería:

código MVC6_2

Podemos observar que han desaparecido elementos como @Html.BeginFrom, @Html.LabelFor, @Html.TextBoxFor tan habituales en el actual MVC para dejar paso a los típicos tags html: <form>, <label>, <input> con un pequeño atributo (asp-controller, asp-action, asp-for) que hacen que la vista sea mucho más amigable, a los ojos de un diseñador web, para finalmente obtener el mismo resultado:

ASP.NET

  • Se ha eliminado la dependencia de la librería System.Web.dll, MVC deja de estar acoplado al ASP.Net y pasa a ser un módulo de éste siguiendo la línea que nos mostró la última versión de WebAPI. De este modo también conseguimos reducir el consumo de memoria en cada petición causado por el objeto HttpContext bajando de 30k por petición a uno de 2k por petición.
  • Ya no es necesario utilizar IIS para alojar nuestras aplicaciones, aunque podemos seguir haciéndolo. Con la nueva versión de MVC podemos hacer que nuestro sitio web tenga de host una aplicación de consola sin depender de IIS.
  • Ligado con el punto anterior, si ya no es necesario utilizar IIS para alojar nuestras aplicaciones, necesitaremos algo que se comunique con el servidor y nuestra aplicación .NET. Para este cometido MVC 6 viene con soporte para OWIN (Open Web Interface for .NET) y así hacer frente a escenarios “híbridos” donde nuestro servidor web sea, por ejemplo, un Linux con apache.
  • Se ha añadido un contenedor de inyección dedependencias por defecto. Éste nos provee de una funcionalidad mínima que podremos cambiar fácilmente haciendo que nuestro contenedor de inyección de dependencias preferido implemente la interfaz IServiceProvider, que es la que utiliza el contenedor por defecto.
  • Cambia la estructura y tipo de archivos de los proyectos MVC. Dejamos atrás los xml de configuración para pasar a utilizar archivos json. Ahora encontramos lo siguientes archivos de configuración:
    • json: Contiene la configuración de la aplicación
    • json: Contiene información sobre las dependencias del proyecto
    • cs: Clase donde se encuentra el método “configure”.
    • json: Contiene información sobre las referencias del proyecto.

Son muchos los cambios que han llegado con la nueva versión de .Net y me gustaría animaros a descargaros Visual Studio 2015 y a empezar a “jugar” con lo nuevo que nos trae ASP.Net 5 y MVC 6.

Si quieres saber más sobre las Soluciones de Microsoft de Sogeti, puedes visitar nuestra página.


Marçal Montserrat

Software Engineer and Team Lead| Soluciones Microsoft | SOGETI ESPAÑA

One thought

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