ASP.NET Core là gì?

ASP.NET Core là một framework đa nền tảng (cross-platform), hiệu năng cao, mã nguồn mở để xây dựng ứng dụng web hiện đại sử dụng .NET. Framework được thiết kế cho phát triển ứng dụng quy mô lớn và có thể xử lý bất kỳ khối lượng công việc nào, phù hợp cho các ứng dụng cấp doanh nghiệp.

Các tính năng chính

Các cách xây dựng Web UI trong ASP.NET Core


Tại sao chọn ASP.NET Core?


Mô hình MVC

Mô hình kiến trúc Model-View-Controller (MVC) phân tách ứng dụng thành 3 nhóm thành phần chính: Models, ViewsControllers.

Kiến trúc MVC

Lưu ý: View và Controller đều phụ thuộc vào Model. Tuy nhiên, Model không phụ thuộc vào View hay Controller. Nhờ đó, Model có thể được xây dựng và kiểm thử độc lập với phần trình bày trực quan.

Trách nhiệm của Model

Model đại diện cho trạng thái ứng dụngbusiness logic. Business logic nên được đóng gói trong model, cùng với logic persistence.

Trách nhiệm của View

View chịu trách nhiệm trình bày nội dung qua giao diện người dùng. Views sử dụng Razor view engine để nhúng code C# vào HTML. Views nên chứa logic tối thiểu — chỉ logic liên quan đến trình bày.

Trách nhiệm của Controller

Controller xử lý tương tác người dùng, làm việc với Model và chọn View để render. Controller là điểm vào đầu tiên, chịu trách nhiệm chọn Model và View phù hợp.
Mẹo: Nếu các controller action thường xuyên thực hiện các thao tác giống nhau, hãy chuyển chúng thành filters.

Các tính năng của ASP.NET Core MVC

Routing

ASP.NET Core MVC được xây dựng trên nền ASP.NET Core’s routing — một thành phần ánh xạ URL mạnh mẽ, hỗ trợ SEO và tạo URL thân thiện.

Convention-based Routing

Attribute Routing


Model Binding

Model binding tự động chuyển đổi dữ liệu request (form values, route data, query string parameters, HTTP headers) thành objects mà controller có thể xử lý.

Model Validation

ASP.NET Core MVC hỗ trợ validation thông qua data annotation attributes. Validation chạy cả client side (trước khi post) lẫn server side (trước khi gọi action).

Dependency Injection

ASP.NET Core có hỗ trợ DI tích hợp sẵn. Trong ASP.NET Core MVC, các controller có thể yêu cầu services thông qua constructor.

Trong Controller

Trong View (dùng @inject)


Filters

Filters giúp đóng gói các cross-cutting concerns như xử lý exception hoặc authorization. Chúng cho phép chạy logic tùy chỉnh trước/sau action methods.

Areas

Areas cho phép chia ứng dụng ASP.NET Core MVC lớn thành các nhóm chức năng nhỏ hơn.

Web APIs

Bên cạnh việc xây dựng website, ASP.NET Core MVC còn hỗ trợ tốt việc xây dựng Web APIs phục vụ nhiều loại client khác nhau.
  • Content Negotiation: Tự động định dạng JSON hoặc XML
  • Custom Formatters: Thêm hỗ trợ format tùy chỉnh
  • HATEOAS: Tạo link cho hypermedia
  • CORS: Chia sẻ API cho nhiều ứng dụng web

Razor View Engine

Razor là ngôn ngữ template nhỏ gọn, giàu tính diễn đạt để định nghĩa views bằng code C# nhúng.

Strongly Typed Views

Razor views có thể strongly typed dựa trên model. Controller truyền strongly typed model cho views, kích hoạt type checking và hỗ trợ IntelliSense.

Tag Helpers

Tag Helpers cho phép code phía server tham gia tạo và render các phần tử HTML. Chúng mang lại trải nghiệm HTML-friendly cùng IntelliSense phong phú.

Tải Script theo môi trường


View Components

View Components cho phép đóng gói logic rendering và tái sử dụng trong toàn bộ ứng dụng. Giống partial views nhưng có logic đi kèm.

Testability

Việc sử dụng interfacesdependency injection khiến framework này rất phù hợp cho unit testing, và framework còn cung cấp thêm các tính năng (như TestHost và InMemory provider cho Entity Framework) giúp integration tests nhanh và dễ dàng.

Compatibility Version

Phương thức SetCompatibilityVersion cho phép app opt-in hoặc opt-out các thay đổi breaking behavior được giới thiệu từ ASP.NET Core MVC 2.1 trở lên.

Bắt đầu

Yêu cầu

  • .NET SDK 10.0+
  • Visual Studio 2022 / VS Code / CLI

Tạo project MVC mới

Cấu trúc project

Program.cs mẫu (.NET 10)


Tóm tắt


Tài liệu tham khảo