- asp .net core là gì
- giới thiệu về asp .net core
- gom asp .net mvc với asp .net web api lại là 1 file
- 1 controller có thể trả về view hoặc json
Khi một ứng dụng ASP.NET Core khởi động, nó thực hiện các bước sau:
- Tạo
WebApplicationBuilder(Cấu hình dịch vụ & tải cấu hình) - Đăng ký dịch vụ vào DI (Dependency Injection)
- Cấu hình Middleware Pipeline
- Khởi động ứng dụng (Build & Run)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
app.Run();⚡ Giai đoạn này chỉ chạy một lần khi ứng dụng khởi động.
Mỗi yêu cầu sẽ đi qua pipeline Middleware trước khi đến Controller.
- Middleware xử lý yêu cầu theo thứ tự
- Middleware có thể sửa đổi hoặc chặn yêu cầu
- Nếu không có Middleware xử lý yêu cầu, nó sẽ được chuyển đến Controller
var app = builder.Build();
app.Use(async (context, next) =>
{
Console.WriteLine("Middleware 1: Logging");
await next();
});
app.Use(async (context, next) =>
{
Console.WriteLine("Middleware 2: Authentication");
await next();
});
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
app.Run();⚡ Xảy ra với mỗi yêu cầu.
Nếu Middleware không xử lý yêu cầu, nó sẽ được chuyển đến Controller.
- Middleware định tuyến xác định Controller & Action cần gọi
- Controller thực thi logic, truy vấn cơ sở dữ liệu và tạo phản hồi
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
[HttpGet("hello")]
public IActionResult SayHello()
{
return Ok("Hello from Controller!");
}
}⚡ Xảy ra khi yêu cầu đến Controller.
Sau khi Controller tạo phản hồi, nó sẽ đi ngược lại qua Middleware trước khi đến client.
- Middleware có thể chỉnh sửa phản hồi trước khi gửi về client
- Static File Middleware có thể trả về file
.html,.css,.js - Phản hồi cuối cùng được gửi về client
⚡ Xảy ra với mỗi yêu cầu.
Khi ứng dụng dừng (do tắt server hoặc lỗi), ASP.NET Core thực hiện các bước cleanup:
- Giải phóng tài nguyên (kết nối cơ sở dữ liệu, file handle, v.v.)
- Gọi sự kiện
IHostApplicationLifetime - Ghi log lỗi nếu cần thiết
var app = builder.Build();
var lifetime = app.Services.GetRequiredService<IHostApplicationLifetime>();
lifetime.ApplicationStopping.Register(() =>
{
Console.WriteLine("Ứng dụng đang dừng...");
});
app.Run();⚡ Xảy ra một lần khi ứng dụng dừng.
| Giai đoạn | Mô tả |
|---|---|
| 1️⃣ Khởi động | Cấu hình dịch vụ, Middleware, Controller |
| 2️⃣ Middleware | Xử lý yêu cầu, logging, xác thực |
| 3️⃣ Controller | Xử lý yêu cầu, truy vấn cơ sở dữ liệu, tạo phản hồi |
| 4️⃣ Phản hồi | Chỉnh sửa phản hồi, gửi về client |
| 5️⃣ Dừng ứng dụng | Giải phóng tài nguyên, ghi log lỗi |
Nếu bạn cần tìm hiểu sâu hơn, hãy xem tài liệu chính thức của ASP.NET Core!
- Request Pipeline
- Middleware
Request Pipeline (đường dẫn xử lý yêu cầu) trong ASP.NET Core là một chuỗi các Middleware được thực thi theo thứ tự để xử lý HTTP request và response.
📌 Quá trình xử lý:
- Nhận request từ client.
- Đi qua Middleware theo thứ tự.
- Nếu request hợp lệ, nó sẽ đến Controller xử lý.
- Controller trả về response.
- Response tiếp tục đi ngược qua Middleware trước khi gửi về client.
Middleware là các thành phần phần mềm trung gian giúp: ✔ Xử lý request trước khi đến Controller. ✔ Xử lý response trước khi trả về Client. ✔ Có thể chặn request hoặc tiếp tục chuyển đến Middleware tiếp theo.
Khi request đi vào ứng dụng ASP.NET Core, nó sẽ đi qua chuỗi Middleware trước khi đến Controller. Sau khi Controller xử lý, response sẽ quay ngược qua Middleware rồi trả về client.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Middleware 1: Logging (Ghi log)
app.Use(async (context, next) =>
{
Console.WriteLine("Middleware 1: Logging Request");
await next();
Console.WriteLine("Middleware 1: Logging Response");
});
// Middleware 2: Xác thực
app.Use(async (context, next) =>
{
Console.WriteLine("Middleware 2: Authentication");
await next();
});
// Middleware 3: Kiểm tra quyền truy cập
app.Use(async (context, next) =>
{
Console.WriteLine("Middleware 3: Authorization");
await next();
});
// Middleware xử lý Routing
app.UseRouting();
// Middleware xử lý Controller
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.Run();1️⃣ Middleware 1: Ghi log request, gọi next(), sau đó ghi log response.
2️⃣ Middleware 2: Kiểm tra xác thực, nếu hợp lệ gọi next().
3️⃣ Middleware 3: Kiểm tra quyền truy cập, nếu hợp lệ gọi next().
4️⃣ Middleware 4 (UseRouting): Xác định route phù hợp.
5️⃣ Middleware 5 (UseEndpoints): Gửi request đến Controller tương ứng.
❗ Lưu ý: Nếu một middleware không gọi next(), request sẽ bị chặn ngay tại đó.
| Middleware | Mô tả |
|---|---|
UseRouting() |
Xác định route để chuyển request đến Controller phù hợp. |
UseEndpoints() |
Gửi request đến Controller hoặc các endpoint API. |
UseAuthentication() |
Xác thực danh tính người dùng. |
UseAuthorization() |
Kiểm tra quyền truy cập của người dùng. |
UseStaticFiles() |
Trả về các file tĩnh như .html, .css, .js, v.v. |
UseExceptionHandler() |
Xử lý lỗi toàn cục cho ứng dụng. |
UseCors() |
Cho phép hoặc chặn request từ các nguồn gốc khác nhau. |
✅ Request Pipeline là chuỗi các Middleware giúp xử lý yêu cầu HTTP từ lúc vào đến lúc phản hồi. ✅ Middleware có thể chặn, sửa đổi hoặc chuyển tiếp request. ✅ Thứ tự Middleware rất quan trọng, nếu Middleware xử lý không đúng chỗ có thể gây lỗi hoặc ảnh hưởng đến hiệu suất ứng dụng.
🚀 Nếu bạn cần tìm hiểu sâu hơn, hãy xem tài liệu chính thức của ASP.NET Core!