[ASP.NET Core MVC] – Tổng quan về ASP.NET Core MVC

0
2719

ASP.NET Core MVC là một “rich framework” cho việc xậy dựng Web APP và APIs sử dụng mô hình Model-View-Controller.

Mô hình MVC là gì?

1. Mô hình MVC là gì?

-Mô hình MVC là một kiến trúc thiết kế của một phần mềm công nghê thông tin, trong đó có cả PHP. Khi một phần mềm sử dụng mô hình này thì nó sẽ phải chia ra thành ba phần chính Model-View-Controller (MVC) với  3 nhiệm vụ khác nhau:

Model: là thành phần chứa tất cả các phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

View: Là phần đảm nhận việc hiển thị thông tin, tương tác với người dùng. Hoặc chúng ta có thể hiểu nôm na đó là phần giao diện của ứng dụng.

Controller: Controller là phần xử lý và điều hướng các hành động của client, từ đó đưa ra các xử lý với database nếu có. Hay nói các khác thì controller là cầu nối giữa view và Model.

Xem thêm: Mô hình MVC là gì?

2. ASP.NET Core MVC là gì?

ASP.NET Core MVC là một framework “nhẹ”, opensource, giúp tối ưu hóa hiệu năng của ứng dụng với  ASP.NET Core .

ASP.NET Core MVC cung cấp các tính năng dựa trên mô hình xây dựng website động cho phép phân chia rõ ràng các khối lệnh. Nó cung cấp cho bạn toàn quyền kiểm soát đánh dấu, hỗ trợ phát triển  với TDD-friendly và sử dụng các tiêu chuẩn web mới nhất.

Tính năng của ASP.NET Core MVC bao gồm:

  • Routing
  • Model binding
  • Model validation
  • Dependency injection
  • Filters
  • Areas
  • Web APIs
  • Testability
  • Razor view engine
  • Strongly typed views
  • Tag Helpers
  • View Components

Routing

Routing sẽ xác định URL và điều khiển thông tin tương ứng với URL mà người dùng web nhập vào. Tất cả các cấu hình Routing của một ứng dụng ASP.NET MVC được lưu trữ trong RouteTable, nó đóng vai trò định tuyến các URL để xác định các lớp xử lý tương ứng khi có request được gửi đến từ người dùng web.

Ví dụ:

routes.MapRoute(name: "Default", template: "{controller=Home}/{action=Index}/{id?}");
[Route("api/[controller]")]
public class ProductsController : Controller
{
  [HttpGet("{id}")]
  public IActionResult GetProduct(int id)
  {
    ...
  }
}

Model binding

Trong ASP.NET Core MVC Model binding chuyển đổi dữ liệu yêu cầu từ phía client (form values, route data, query string parameters, HTTP headers) vào bên trong đối tượng để controller có thể xử lí. Kết quả là Controller của bạn không phải thực hiện công việc tìm ra dữ liệu từ đâu đến. Nó chỉ đơn giản là kiểm tra dữ liệu và tham số từ phương thức action.

public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) { ... }

Model validation

ASP.NET Core MVC  hỗ trợ ràng buộc dữ liệu cho các thuộc tính trong model của bạn, các thuộc tính sẽ được kiểm tra ở client xem có hợp lệ không trước khi giá trị của thuộc tính đó được gửi về server. Cũng như trên server trước khi action của controller gọi.

using System.ComponentModel.DataAnnotations;
public class LoginViewModel
{
    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Display(Name = "Remember me? on sinhvientot.net")]
    public bool RememberMe { get; set; }
}

 

Và model được gọi trong action của controller:

public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    if (ModelState.IsValid)
    {
      // work with the model
    }
    // At this point, something failed, redisplay form
    return View(model);
}

Dependency injection

Trong ASP.NET Core MVC controller có thể gửi yêu cầu cần thiết đến các service thông cấu trúc xây dựng của chúng.

@inject SomeService ServiceName
<!DOCTYPE html>
<html lang="en">
<head>
    <title>@ServiceName.GetTitle</title>
</head>
<body>
    <h1>@ServiceName.GetTitle</h1>
</body>
</html>

Filters

Filters giúp các lập trình viên đóng gói “cross-cutting concerns”. giống như là xử lý ngoại lệ và phân quyền. Filter được kích hoạt để chạy trước và sau các action của controller. Ví dụ về phân quyền [Authorize] được đặt trước action.

[Authorize]
   public class AccountController : Controller
   {

Areas

Khi một website ASP.NET MVC trở nên quá lớn quá và phức tạp,số Controller chắc chắn sẽ tăng lên, với nhiều controller như vậy bạn sẽ thấy chúng có thể thuộc về một nhóm như phần Administrator, phần sản phẩm, phần nhóm sản phẩm… Areas cho phép bạn chia các Controllers,models và views tới các vị trí khác nhau trong solution với cùng một thư mục độc lập.

Web APIs

Ngoài việc là một nền tảng tuyệt vời để xây dựng các trang web. ASP.NET Core MVC hỗ trợ rất nhiều cho việc xây dựng API Web. Bạn có thể xây dựng các dịch vụ tiếp cận nhiều khách hàng bao gồm trình duyệt web và thiết bị di động.

Testability

The framework’s use of interfaces and dependency injection make it well-suited to unit testing

Việc xây dựng các framework’s sử dụng các interface và DI làm cho việc kiểm tra ứng dụng trở nên dễ dàng hơn và framework’s  bao gồm các tính năng (like a TestHost and InMemory provider for Entity Framework) chúng giúp ích cho lập trình viên rất nhiều.

Razor view engine

ASP.NET Core MVC views sử dụng Razor view engine để render các code html đến view.Razor được sử dụng để tự động tạo nội dung web trên máy chủ.

<ul>
  @for (int i = 0; i < 5; i++) {
    <li>List item @i</li>
  }
</ul>

Tag Helpers

Tag Helpers cho phép mã phía máy chủ tham gia vào việc tạo và hiển thị các phần tử HTML trong các tệp razor.

Đây là một số khái niệm cơ bản trong ASP.NET Core MVC cho người mới học cần nắm rõ để có thể hiểu hết bản chất khi xây dựng ứng dụng.

This site uses Akismet to reduce spam. Learn how your comment data is processed.