Neue Funktionen in MVC 6

Das Model View Controller-Muster ist eines der beliebtesten Entwurfsmuster, mit denen Sie Anwendungen erstellen können, die einfacher zu testen und zu warten sind. Das Model View Controller-Framework (allgemein als MVC bekannt) erleichtert die Testbarkeit und die Wiederverwendung von Code. Das ASP.Net MVC-Framework basiert auf der ASP.Net-Laufzeit und folgt dem MVC-Entwurfsmuster. In diesem Beitrag werde ich das Entwurfsmuster des Model View Controllers untersuchen und auch einen Überblick über die neuen Funktionen in ASP.Net MVC 6 geben.

Das Designmuster des Model View Controllers besteht, wie der Name schon sagt, aus drei Hauptkomponenten. Dazu gehören die folgenden:

  1. Modell - Dies ist die Ebene, die die Daten der Anwendung darstellt
  2. Ansicht - Dies repräsentiert die Präsentation oder die Benutzeroberfläche
  3. Controller - Diese Schicht enthält normalerweise die Geschäftslogik Ihrer Anwendung

Mit dem Entwurfsmuster des Model View Controllers können Sie die Bedenken eingrenzen und den Code Ihrer Anwendung einfacher testen und warten.

Die neueste Version dieses Frameworks ist MVC 6. Mit MVC 6 wurde die Abhängigkeit von System.Web.dll beseitigt. Im Gegensatz zu System.Web.Mvc, das Sie in den vorherigen Versionen verwendet haben, müssen Sie den Namespace Microsoft.AspNet.Mvc einschließen des ASP.Net MVC-Frameworks. Die Abhängigkeit von System.Web wurde entfernt, da es sehr teuer war - MVC 6 bietet Ihnen ein viel schlankeres Framework, eine schnellere Startzeit und einen geringeren Ressourcenverbrauch.

Das MVC 6-Framework wurde für die Cloud entwickelt und ist Teil der Cloud-optimierten ASP.Net 5-Laufzeit, die wiederum als Teil von Visual Studio 2015 verfügbar wäre. Der Vorteil eines Cloud-optimierten Frameworks besteht darin, dass Sie unterschiedliche Funktionen haben können Versionen der CLR befinden sich nebeneinander für verschiedene Websites, die in der Cloud ausgeführt werden. Mit ASP.Net 5 wurden die MVC- und Web-API-Frameworks zu einem einzigen Programmiermodell zusammengefasst. MVC, Web-API und die ASP.Net-Laufzeit werden nun zu einem einheitlichen Programmiermodell zusammengeführt. MVC 6 ist hostunabhängig - abgesehen davon, dass es auf IIS gehostet werden kann, kann es auch selbst gehostet werden. MVC 6 bietet auch Unterstützung für die OWIN-Abstraktion und enthält Web-API und Webseiten, um die Überlappung zwischen diesen drei Frameworks zu beseitigen.

Die Abhängigkeitsinjektion (auch als Inversion of Control bezeichnet) ist ein Software-Entwurfsmuster, mit dem lose gekoppelte, testbare und wiederverwendbare Objekte in Ihrer Anwendung implementiert werden. Sie können die IServiceProvider-Schnittstelle nutzen, um Ihren benutzerdefinierten Abhängigkeitsinjektionscontainer hinzuzufügen. Diese Schnittstelle bietet eine Abstraktionsebene über die tatsächliche Implementierung des Abhängigkeitsinjektionscontainers. Beachten Sie, dass Sie einen Standard-Abhängigkeitsinjektionscontainer mit eingeschränkter Funktionalität haben. Sie können diesen Standard-Abhängigkeitsinjektionscontainer verwenden, wenn Sie eingeschränkte Funktionen benötigen. Wenn Sie zusätzliche Funktionen benötigen, können Sie Ihren eigenen Abhängigkeitsinjektionscontainer erstellen und über die IServiceProvider-Schnittstelle den von Ihnen erstellten benutzerdefinierten Abhängigkeitsinjektionscontainer hinzufügen.

Im Gegensatz zu seinen früheren Kollegen unterstützt MVC 6 ein umgebungsbasiertes Konfigurationssystem - die Bereitstellung von MVC 6-Anwendungen in der Cloud ist jetzt einfach. Wenn Sie ein neues MVC 6-Projekt in Visual Studio erstellen, umfassen die neuen Konfigurationsdateien, die Sie beobachten würden, Folgendes:

  1. Config.json - Dies enthält normalerweise die Anwendungskonfiguration
  2. Project.json - Diese Datei enthält die Projektabhängigkeitsinformationen
  3. Startup.cs - Diese Datei enthält die Startup-Klasse, die wiederum eine Configure-Methode enthält
  4. Global.json - Diese Datei enthält Informationen zu den Projektreferenzen

Nachdem Sie ein MVC 6-Projekt in Visual Studio erstellt haben, sieht die Datei Startup.cs folgendermaßen aus:

mit Microsoft.Owin;

mit Owin;

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

Namespace

{

    öffentliche Teilklasse Startup

    {

        public void Configuration (IAppBuilder-App)

        {

        }}

    }}

}}

Das folgende Codeausschnitt zeigt, wie eine typische Konfigurationsmethode der Startup-Klasse aussieht.

public void Configure (IApplicationBuilder-App)      

    {   

       var configuration = new Configuration (). AddJsonFile ("config.json"). AddEnvironmentVariables ();

    }}

Beachten Sie den IApplicationBuilder-Parameter (dieser Parameter wird vom Host beim Starten der Anwendung übergeben) in der Configure-Methode. Eine Instanz der Konfigurationsklasse wird erstellt und die Konfigurationsquellen werden übergeben. Sie können eine beliebige Anzahl von Konfigurationsquellen haben - jede Konfigurationsquelle ist einem Konfigurationswertanbieter zugeordnet. Dieser Ansatz erleichtert das nahtlose Verschieben Ihrer Anwendung in die Cloud, falls erforderlich.

Sie können auch die ConfigureServices-Methode verwenden, um dem Service-Container Entity Framework-Services hinzuzufügen. Das folgende Codefragment zeigt, wie eine typische ConfigureServices-Methode aussehen würde.

public void ConfigureServices (IServiceCollection-Dienste)

        {

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

          services.AddMvc ();

          // Anderer Code

        }}

Sie können die Routeninformationen auch mithilfe der UseMvc-Erweiterungsmethode angeben, wie im folgenden Codeausschnitt gezeigt.

            {

                route.MapRoute (

                    Name: "Standard",

                    Vorlage: "{controller} / {action} / {id}",

                    Standardeinstellungen: new {controller = "", action = "Index"});

Beachten Sie, dass AddEntityFramework () und AddMvc () Erweiterungsmethoden sind, die in der IServiceCollection-Schnittstelle definiert sind.

Ich werde in meinen zukünftigen Blog-Beiträgen hier weitere Artikel zu MVC 6 schreiben. Also bleibt gespannt!