Skip to content

duongminh318/WebDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

be_min

note

  • 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

Vòng đời ứng dụng ASP.NET Core

1️⃣ Khởi động ứng dụng

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)

Ví dụ Program.cs

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.


2️⃣ Thực thi Middleware Pipeline

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

Ví dụ Middleware Pipeline

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.


3️⃣ Xử lý Controller

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

Ví dụ Controller

[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.


4️⃣ Xử lý phản hồi

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.


5️⃣ Ứng dụng dừng

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

Ví dụ Cleanup khi ứng dụng dừng

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.


Tổng kết

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

🚀 Cần thêm thông tin?

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 & Middleware trong ASP.NET Core

🔹 1. Request Pipeline là gì?

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ý:

  1. Nhận request từ client.
  2. Đi qua Middleware theo thứ tự.
  3. Nếu request hợp lệ, nó sẽ đến Controller xử lý.
  4. Controller trả về response.
  5. Response tiếp tục đi ngược qua Middleware trước khi gửi về client.

🔹 2. Middleware là gì?

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.


🔹 3. Request Pipeline hoạt động như thế nào?

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.

🔸 Ví dụ về Request Pipeline trong Program.cs

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();

🔸 Cách Middleware Hoạt Động

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 đó.


🔹 4. Một số Middleware quan trọng

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.

🔹 5. Tổng Kết

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!

About

Learning Asp dotnet core mvc, api

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors