คุณสมบัติใหม่ใน MVC 6

รูปแบบ Model View Controller เป็นหนึ่งในรูปแบบการออกแบบยอดนิยมที่ช่วยให้คุณสร้างแอปพลิเคชันที่ง่ายต่อการทดสอบและบำรุงรักษา เฟรมเวิร์ก Model View Controller (เรียกโดยทั่วไปว่า MVC) ช่วยให้สามารถทดสอบได้ง่ายขึ้นและใช้โค้ดซ้ำได้ เฟรมเวิร์ก ASP.Net MVC ถูกสร้างขึ้นบนรันไทม์ ASP.Net และเป็นไปตามรูปแบบการออกแบบ MVC ในโพสต์นี้ฉันจะตรวจสอบรูปแบบการออกแบบ Model View Controller และนำเสนอภาพรวมของคุณสมบัติใหม่ใน ASP.Net MVC 6

รูปแบบการออกแบบ Model View Controller ตามชื่อที่แนะนำประกอบด้วยส่วนประกอบหลักสามส่วน ซึ่งรวมถึงสิ่งต่อไปนี้:

  1. Model - นี่คือเลเยอร์ที่แสดงข้อมูลของแอปพลิเคชัน
  2. มุมมอง - แสดงถึงการนำเสนอหรือเลเยอร์อินเทอร์เฟซผู้ใช้
  3. Controller - โดยทั่วไปเลเยอร์นี้จะมีตรรกะทางธุรกิจของแอปพลิเคชันของคุณ

รูปแบบการออกแบบ Model View Controller ช่วยให้คุณแยกข้อกังวลและทำให้โค้ดของแอปพลิเคชันของคุณทดสอบและบำรุงรักษาได้ง่ายขึ้น

เวอร์ชันล่าสุดของเฟรมเวิร์กนี้คือ MVC 6 ด้วย MVC 6 การพึ่งพา System.Web.dll ได้ถูกตัดออกคุณจะต้องรวมเนมสเปซ Microsoft.AspNet.Mvc ซึ่งแตกต่างจาก System.Web.Mvc ที่คุณทำในเวอร์ชันก่อนหน้า ของ ASP.Net MVC framework การพึ่งพา System.Web ถูกลบออกเนื่องจากมีราคาแพงมาก - MVC 6 ให้กรอบงานที่เล็กลงมากเวลาเริ่มต้นทำงานเร็วขึ้นและลดการใช้ทรัพยากร

เฟรมเวิร์ก MVC 6 ได้รับการออกแบบมาสำหรับระบบคลาวด์และรวมเข้าเป็นส่วนหนึ่งของรันไทม์ ASP.Net 5 ที่ปรับให้เหมาะสมกับระบบคลาวด์ซึ่งจะพร้อมใช้งานเป็นส่วนหนึ่งของ Visual Studio 2015 ข้อดีของการมีกรอบงานที่ปรับให้เหมาะสมกับระบบคลาวด์คือคุณสามารถมี เวอร์ชันของ CLR อยู่เคียงข้างกันสำหรับเว็บไซต์ต่างๆที่ทำงานในระบบคลาวด์ ด้วย ASP.Net 5 เฟรมเวิร์ก MVC และ Web API ได้รวมเข้าด้วยกันเป็นรูปแบบการเขียนโปรแกรมเดียว ดังนั้น MVC, Web API และรันไทม์ ASP.Net จึงถูกรวมเข้าด้วยกันเป็นรูปแบบการเขียนโปรแกรมแบบรวมเดียว MVC 6 เป็นโฮสต์ที่ไม่เชื่อเรื่องพระเจ้า - นอกเหนือจากความสามารถในการโฮสต์บน IIS แล้วยังสามารถโฮสต์ด้วยตนเองได้อีกด้วย MVC 6 ยังให้การสนับสนุน OWIN Abstraction และรวมถึง Web API และเว็บเพจเพื่อขจัดความทับซ้อนระหว่างกรอบงานทั้งสามนี้

Dependency injection (หรือเรียกอีกอย่างว่า Inversion of Control) เป็นรูปแบบการออกแบบซอฟต์แวร์ที่ใช้ในการปรับใช้อ็อบเจ็กต์คู่แบบหลวม ๆ ทดสอบได้และใช้ซ้ำได้ในแอปพลิเคชันของคุณ คุณสามารถใช้ประโยชน์จากอินเทอร์เฟซ IServiceProvider เพื่อเพิ่มคอนเทนเนอร์การแทรกการอ้างอิงที่กำหนดเองของคุณ อินเทอร์เฟซนี้ให้ระดับของนามธรรมเหนือการใช้งานคอนเทนเนอร์ฉีดพึ่งพาจริง โปรดทราบว่าคุณมีคอนเทนเนอร์การฉีดแบบพึ่งพาเริ่มต้น แต่มีฟังก์ชันการทำงานที่ จำกัด คุณสามารถใช้คอนเทนเนอร์การฉีดพึ่งพาเริ่มต้นนี้ได้หากคุณต้องการฟังก์ชันที่ จำกัด หากคุณต้องการฟังก์ชั่นเพิ่มเติมคุณสามารถสร้าง Dependency Injection Container ของคุณเองและใช้อินเทอร์เฟซ IServiceProvider เพื่อเพิ่มคอนเทนเนอร์การฉีดพึ่งพาที่คุณสร้าง

MVC 6 ซึ่งแตกต่างจากรุ่นก่อนหน้านี้รองรับระบบการกำหนดค่าตามสภาพแวดล้อม - การปรับใช้แอปพลิเคชัน MVC 6 ในระบบคลาวด์เป็นเรื่องง่าย เมื่อคุณสร้างโครงการ MVC 6 ใหม่ใน Visual Studio ชุดไฟล์คอนฟิกูเรชันใหม่ที่คุณจะสังเกตเห็นมีดังต่อไปนี้:

  1. Config.json - โดยทั่วไปจะมีการกำหนดค่าแอปพลิเคชัน
  2. Project.json - ไฟล์นี้มีข้อมูลการพึ่งพาโปรเจ็กต์
  3. Startup.cs - ไฟล์นี้มีคลาส Startup ซึ่งจะมีเมธอด Configure
  4. Global.json - ไฟล์นี้มีข้อมูลเกี่ยวกับการอ้างอิงโครงการ

หลังจากคุณสร้างโครงการ MVC 6 ใน Visual Studio ไฟล์ Startup.cs จะมีลักษณะดังนี้:

ใช้ Microsoft.Owin;

ใช้ Owin;

[แอสเซมบลี: OwinStartupAttribute (typeof (.Startup))]

เนมสเปซ

{

    การเริ่มต้นคลาสบางส่วนสาธารณะ

    {

        การกำหนดค่าโมฆะสาธารณะ (แอป IAppBuilder)

        {

        }

    }

}

ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าเมธอด Config ทั่วไปของคลาส Startup มีลักษณะอย่างไร

โมฆะสาธารณะกำหนดค่า (แอป IApplicationBuilder)      

    {   

       var configuration = คอนฟิกูเรชันใหม่ (). AddJsonFile ("config.json"). AddEnvironmentVariables ();

    }

สังเกตพารามิเตอร์ IApplicationBuilder (พารามิเตอร์นี้ถูกส่งผ่านโดยโฮสต์เมื่อแอ็พพลิเคชันเริ่มทำงาน) ในวิธี Configure มีการสร้างอินสแตนซ์ของคลาส Configuration และส่งผ่านแหล่งที่มาของคอนฟิกูเรชัน คุณสามารถมีแหล่งที่มาของคอนฟิกูเรชันจำนวนเท่าใดก็ได้ - แต่ละแหล่งคอนฟิกูเรชันเชื่อมโยงกับผู้ให้บริการค่าคอนฟิกูเรชัน วิธีนี้ช่วยอำนวยความสะดวกในการย้ายแอปพลิเคชันของคุณไปยังระบบคลาวด์หากจำเป็นอย่างราบรื่น

คุณยังสามารถใช้เมธอด ConfigureServices เพื่อเพิ่มบริการ Entity Framework ไปยังที่เก็บบริการ ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าเมธอด ConfigureServices ทั่วไปจะมีลักษณะอย่างไร

โมฆะสาธารณะ ConfigureServices (บริการ IServiceCollection)

        {

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

          services.AddMvc ();

          // รหัสอื่น ๆ

        }

คุณยังสามารถระบุข้อมูลเส้นทางโดยใช้วิธีการขยาย UseMvc ดังที่แสดงในข้อมูลโค้ดด้านล่าง

            {

                เส้นทาง MapRoute (

                    ชื่อ: "ค่าเริ่มต้น",

                    เทมเพลต: "{controller} / {action} / {id}",

                    ค่าเริ่มต้น: new {controller = "", action = "Index"});

โปรดสังเกตว่า AddEntityFramework () และ AddMvc () เป็นเมธอดส่วนขยายที่กำหนดไว้ในอินเตอร์เฟส IServiceCollection

ฉันจะเขียนบทความเพิ่มเติมเกี่ยวกับ MVC 6 ในบล็อกโพสต์ในอนาคตของฉันที่นี่ ดังนั้นโปรดติดตาม!