คุณสมบัติใหม่ใน 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 ตามชื่อที่แนะนำประกอบด้วยส่วนประกอบหลักสามส่วน ซึ่งรวมถึงสิ่งต่อไปนี้:
- Model - นี่คือเลเยอร์ที่แสดงข้อมูลของแอปพลิเคชัน
- มุมมอง - แสดงถึงการนำเสนอหรือเลเยอร์อินเทอร์เฟซผู้ใช้
- 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 ชุดไฟล์คอนฟิกูเรชันใหม่ที่คุณจะสังเกตเห็นมีดังต่อไปนี้:
- Config.json - โดยทั่วไปจะมีการกำหนดค่าแอปพลิเคชัน
- Project.json - ไฟล์นี้มีข้อมูลการพึ่งพาโปรเจ็กต์
- Startup.cs - ไฟล์นี้มีคลาส Startup ซึ่งจะมีเมธอด Configure
- 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 ในบล็อกโพสต์ในอนาคตของฉันที่นี่ ดังนั้นโปรดติดตาม!