Trong ASP.NET Core, sự khác biệt giữa IActionFilter và IAsyncActionFilter là gì và khi nào bạn nên ưu tiên sử dụng phiên bản Async?
Phân tích cơ chế
- IActionFilter: Cung cấp các phương thức đồng bộ
OnActionExecutingvàOnActionExecuted. Nó phù hợp với các tác vụ xử lý nhanh, không liên quan đến I/O. - IAsyncActionFilter: Cung cấp phương thức
OnActionExecutionAsync. Đây là tiêu chuẩn hiện đại trong .NET Core.
Tại sao nên dùng Async?
- Khi filter cần thực hiện các tác vụ I/O như truy vấn Database, gọi API bên thứ ba hoặc ghi log vào hệ thống tập trung.
- Sử dụng
Asyncgiúp giải phóng Thread từ Thread Pool trong khi chờ đợi kết quả I/O, từ đó tăng khả năng phục vụ (Scalability) của ứng dụng.
Ví dụ code
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
// Logic trước khi thực thi Action
await next(); // Gọi Action tiếp theo
// Logic sau khi thực thi Action
}
Lưu ý: Luôn ưu tiên IAsyncActionFilter để tránh hiện tượng Thread Starvation trong các ứng dụng Enterprise.
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi net core liên quan cùng chủ đề
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Dependency Injection container trong dự án Net core? Entry
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Cross-platform builds trong dự án Net core? Entry
- Làm thế nào để quản lý cấu hình (Configuration) trong ASP.NET Core một cách bảo mật, tránh việc lộ các thông tin nhạy cảm như Connection String hoặc API Key trong Source Code? Junior
- Tại sao việc sử dụng trực tiếp các Entity Framework Core Model (Database Entities) làm Data Transfer Object (DTO) trong các API Response lại là một rủi ro bảo mật và kiến trúc? Junior
- Trong ASP.NET Core, cơ chế Background Tasks được thực hiện như thế nào và sự khác biệt giữa IHostedService và BackgroundService là gì? Junior


