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
| Tính năng | Mô tả |
|---|---|
| Kestrel | HTTP server đa nền tảng, hiệu năng cao |
| Dependency Injection | Container DI tích hợp sẵn, giảm coupling |
| Environment-based Configuration | Cấu hình khác nhau theo môi trường (dev, staging, prod) |
| Logging & Metrics | Ghi log phong phú, tracing và runtime metrics |
| Blazor | UI web tương tác bằng C# — không cần JavaScript |
| Client-side Integration | Tích hợp liền mạch với Angular, React, Vue, Bootstrap |
| Minimal APIs | Xây dựng API nhanh với code và cấu hình tối thiểu |
| SignalR | Tính năng web thời gian thực (real-time) |
| gRPC | Dịch vụ RPC hiệu năng cao |
| Security | Authentication, authorization và data protection tích hợp sẵn |
| Testing | Dễ dàng viết unit test và integration test |
| Tooling | Năng suất cao với Visual Studio và VS Code |
Các cách xây dựng Web UI trong ASP.NET Core
Tại sao chọn ASP.NET Core?
| Lý do | Mô tả |
|---|---|
| Unified Framework | Framework hoàn chỉnh, tích hợp đầy đủ với mọi thành phần production-ready |
| Full Stack Productivity | Team có thể làm full-stack từ frontend đến backend chỉ với một framework |
| Secure by Design | Authentication, authorization, data protection tích hợp sẵn |
| Cloud-ready | Triển khai dễ dàng lên datacenter riêng hoặc bất kỳ cloud nào |
| Performance & Scalability | Hiệu năng hàng đầu ngành, chịu tải cực cao |
| Trusted & Mature | Đã được chứng minh ở quy mô lớn: Bing, Xbox, Microsoft 365, Azure |
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, Views và Controllers.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ụng và business 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.| Loại Filter | Thứ tự | Mục đích |
|---|---|---|
| Authorization | 1 | Kiểm tra quyền truy cập |
| Resource | 2 | Chạy trước model binding |
| Action | 3 | Trước/sau action method |
| Exception | 4 | Xử lý exception |
| Result | 5 | Trước/sau ActionResult |
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ú.Link đến Controller Action
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 interfaces và dependency 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ứcSetCompatibilityVersion 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
| Khía cạnh | Chi tiết |
|---|---|
| Pattern | Model-View-Controller (MVC) |
| Platform | Đa nền tảng, Mã nguồn mở |
| Runtime | .NET 10.0 |
| UI Engine | Razor View Engine |
| Routing | Convention-based + Attribute-based |
| Validation | Data Annotations (client + server) |
| DI | Container tích hợp sẵn |
| Web APIs | Hỗ trợ đầy đủ (JSON/XML, CORS) |
| Testing | TDD-friendly, DI + InMemory |
| Target | Enterprise Web Apps & APIs |