Nuevas funciones en MVC 6

El patrón Model View Controller es uno de los patrones de diseño más populares que le ayuda a crear aplicaciones que son más fáciles de probar y mantener. El marco Model View Controller (comúnmente conocido como MVC) promueve una capacidad de prueba y una reutilización de código más fáciles. El marco ASP.Net MVC se basa en el tiempo de ejecución de ASP.Net y sigue el patrón de diseño MVC. En esta publicación, examinaré el patrón de diseño del controlador de vista de modelo y también presentaré una descripción general de las nuevas características en ASP.Net MVC 6.

El patrón de diseño del controlador de vista de modelo, como su nombre indica, consta de tres componentes principales. Estos incluyen los siguientes:

  1. Modelo: esta es la capa que representa los datos de la aplicación
  2. Vista: representa la presentación o la capa de la interfaz de usuario.
  3. Controlador: esta capa generalmente contiene la lógica comercial de su aplicación

El patrón de diseño Model View Controller le permite aislar las preocupaciones y hace que el código de su aplicación sea más fácil de probar y mantener.

La última versión de este marco es MVC 6. Con MVC 6 se ha eliminado la dependencia de System.Web.dll; deberá incluir el espacio de nombres Microsoft.AspNet.Mvc a diferencia de System.Web.Mvc que hizo en las versiones anteriores del marco ASP.Net MVC. La dependencia de System.Web se eliminó porque era muy costosa: MVC 6 le proporciona un marco mucho más ágil, un tiempo de inicio más rápido y un menor consumo de recursos.

El marco MVC 6 está diseñado para la nube y se incorpora como parte del tiempo de ejecución ASP.Net 5 optimizado para la nube, que a su vez estaría disponible como parte de Visual Studio 2015. La ventaja de tener un marco optimizado para la nube es que puede tener diferentes las versiones de CLR residen una al lado de la otra para diferentes sitios web que se ejecutan en la nube. Con ASP.Net 5, los marcos MVC y Web API se han unificado en un solo modelo de programación. Entonces, MVC, Web API y el tiempo de ejecución de ASP.Net ahora están todos fusionados en un modelo de programación unificado. MVC 6 es independiente del host; además de tener la capacidad de hospedarse en IIS, también puede ser autohospedado. MVC 6 también proporciona soporte para la abstracción OWIN e incluye Web API y Web Pages para eliminar la superposición entre estos tres marcos.

La inyección de dependencia (también conocida como inversión de control) es un patrón de diseño de software que se utiliza para implementar objetos poco acoplados, probables y reutilizables en su aplicación. Puede aprovechar la interfaz IServiceProvider para agregar su contenedor de inyección de dependencia personalizado. Esta interfaz proporciona un nivel de abstracción sobre la implementación real del contenedor de inyección de dependencia. Tenga en cuenta que tiene un contenedor de inyección de dependencia predeterminado pero con una funcionalidad limitada. Puede utilizar este contenedor de inyección de dependencia predeterminado si necesita una funcionalidad limitada. Si necesita una funcionalidad adicional, puede crear su propio contenedor de inyección de dependencia y usar la interfaz IServiceProvider para agregar el contenedor de inyección de dependencia personalizado que ha creado.

A diferencia de sus contrapartes anteriores, MVC 6 admite un sistema de configuración basado en el entorno: implementar aplicaciones MVC 6 en la nube ahora es simple. Cuando crea un nuevo proyecto MVC 6 en Visual Studio, el nuevo conjunto de archivos de configuración que observaría incluye lo siguiente:

  1. Config.json: normalmente contiene la configuración de la aplicación
  2. Project.json: este archivo contiene la información de dependencia del proyecto
  3. Startup.cs: este archivo contiene la clase Startup que a su vez contiene un método Configure
  4. Global.json: este archivo contiene información sobre las referencias del proyecto

Después de crear un proyecto MVC 6 en Visual Studio, el archivo Startup.cs se ve así:

utilizando Microsoft.Owin;

usando Owin;

[ensamblado: OwinStartupAttribute (typeof (.Startup))]

espacio de nombres

{

    Inicio de clase parcial pública

    {

        Configuración de vacío público (aplicación IAppBuilder)

        {

        }

    }

}

El siguiente fragmento de código ilustra cómo se ve un método de configuración típico de la clase Startup.

Configure public void (aplicación IApplicationBuilder)      

    {   

       var configuración = nueva Configuración (). AddJsonFile ("config.json"). AddEnvironmentVariables ();

    }

Tenga en cuenta el parámetro IApplicationBuilder (este parámetro lo pasa el host cuando se inicia la aplicación) en el método Configure. Se crea una instancia de la clase de configuración y se pasan las fuentes de configuración. Puede tener cualquier número de fuentes de configuración: cada fuente de configuración está asociada con un proveedor de valores de configuración. Este enfoque facilita el traslado de su aplicación a la nube si es necesario, sin problemas.

También puede usar el método ConfigureServices para agregar servicios de Entity Framework al contenedor de servicios. El siguiente fragmento de código muestra cómo se vería un método ConfigureServices típico.

public void ConfigureServices (servicios IServiceCollection)

        {

          services.AddEntityFramework (). AddSqlServer (). AddDbContext ();

          services.AddMvc ();

          // Otro código

        }

También puede especificar la información de la ruta utilizando el método de extensión UseMvc como se muestra en el fragmento de código a continuación.

            {

                rutas.MapRoute (

                    nombre: "predeterminado",

                    plantilla: "{controlador} / {acción} / {id}",

                    valores predeterminados: nuevo {controlador = "", acción = "Índice"});

Tenga en cuenta que AddEntityFramework () y AddMvc () son métodos de extensión definidos en la interfaz IServiceCollection.

Escribiré más artículos sobre MVC 6 en mis futuras publicaciones de blog aquí. ¡Así que estad atentos!