Mục lục bài viết
Request Life Cycle trong ASP.NET Core
- Trung Nguyen
04/03/2021
6 min read
Requets life cycle ( vòng đời request ) trong ASP.NET Core MVC là một chuỗi những sự kiện, quá trình hoặc những thành phần tương tác với nhau để giải quyết và xử lý HTTP request và trả về response cho client .
Bây giờ chúng ta sẽ tìm hiểu chi tiết các thành phần có trong biểu đồ trên.
Bạn đang đọc: Request Life Cycle trong ASP.NET Core
Tìm hiểu một số khái niệm
Request Pipeline là gì?
Request Pipeline ( đường ống request ) là chính sách được mở màn từ khi request được giải quyết và xử lý tới khi trả về một response. Request đến từ trình duyệt đi qua request pipeline và quay trở lại khi giải quyết và xử lý xong để trả về response cho client. Các thành phần đơn lẻ tạo nên request pipeline này được gọi là middleware .
Middleware là gì?
Middleware là thành phần tạo thành request pipeline để giải quyết và xử lý request và tạo ra response phản hồi lại client. Mỗi một middleware thao tác với những request nhận được từ middleware trước nó. Nó cũng hoàn toàn có thể quyết định hành động gọi middleware tiếp theo trong pipeline hoặc trả về response cho middleware ngay trước nó .
Routing
Routing là một middleware được tiến hành trong MVC framework. Routing middleware quyết định hành động cách một request được gửi đến hoàn toàn có thể được ánh xạ tới Controller và Action Method nào nhờ sự trợ giúp của những thông số kỹ thuật tuyến .
Khởi tạo Controller
Ở quá trình này của request lifecycle trong ASP.NET MVC Core, quy trình khởi tạo và thực thi Controller diễn ra. Controller có nghĩa vụ và trách nhiệm giải quyết và xử lý những request được gửi đến. Controller lựa chọn Action Method thích hợp trên cơ sở những mẫu định tuyến được phân phối .
Thực thi Action Method
Sau khi Controller được khởi tạo, Action Method được thực thi và trả về Result ( tác dụng ) .
Thực thi Result
Trong quá trình này của request lifecycle trong ASP.NET MVC Core, Result tức là response được tạo cho request HTTP bắt đầu, sẽ được thực thi. Nếu Action Method trả về có dạng ViewResult, MVC view engine sẽ render và trả về phản hồi HTML. Nếu tác dụng không phải là ViewResult thì Action Method sẽ tạo ra phản hồi của riêng nó .Bây giờ, tất cả chúng ta sẽ bàn luận ngắn gọn về từng tiến trình :
Middleware
Middleware là thành phần được tích hợp để tạo thành một request pipeline để giải quyết và xử lý bất kể nhu yếu nào đến .Bất cứ khi nào một nhu yếu mới đến, nó sẽ được chuyển đến middleware tiên phong. Sau đó, middleware quyết định hành động tạo response sau khi giải quyết và xử lý request gửi đến hay chuyển nó cho middleware tiếp theo. Sau khi request được giải quyết và xử lý, response được gửi lại với những middleware này .Bây giờ, tất cả chúng ta sẽ tạo một middleware đơn thuần trả về text bằng cách tạo lớp ContentComponent. cs như sau .
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
namespace WebApplication
{
public class ContentComponent
{
private RequestDelegate nextComponent;
public ContentComponent(RequestDelegate nextMiddleware) => nextComponent = nextMiddleware;
public async Task Invoke(HttpContext httpContext)
{
if (httpContext.Request.Path.ToString().ToLower() == "/edit")
{
await httpContext.Response.WriteAsync("This is edit URL component", Encoding.UTF8);
}
else
{
await nextComponent.Invoke(httpContext);
}
}
}
}
Middleware ContentComponent này định nghĩa một phương pháp khởi tạo và bên trong phương pháp khởi tạo đó nhận đối tượng người tiêu dùng RequestDelegate. Đối tượng RequestDelegate này đại diện thay mặt cho thành phần ứng dụng trung gian tiếp theo .Middleware ContentComponent cũng định nghĩa một phương pháp Invoke. Khi ứng dụng ASP.NET Core nhận được một request đến, phương pháp Invoke sẽ được gọi .Đối số HttpContext của phương pháp Invoke cung ứng thông tin về HTTP request và response được tạo sẽ được gửi lại cho client .
Phương thức Invoke của lớp ContentComponent kiểm tra xem request đến có được gửi đến URL /edit
hay không. Nếu request được gửi đến URL /edit
thì sẽ trả về response là This is edit URL component
.
Routing
Routing là một middleware được triển khai trong MVC framework. Trong ASP.NET Core, hệ thống định tuyến được sử dụng để xử lý các URL.
Routing middleware quyết định hành động cách một nhu yếu đến hoàn toàn có thể được ánh xạ tới Controller và những Action Method, với sự trợ giúp của thông số kỹ thuật định tuyến .Routing liên kết Middleware và MVC framework bằng cách ánh xạ request đến với những Action Method của Controller .Trong một ứng dụng đơn cử, MVC ĐK một hoặc nhiều tuyến đường bằng cách sử dụng phương pháp MapRoute (. NET Core version 2. x trở lại trước ) hoặc MapControllerRoute (. NET Core version 3. x hoặc mới hơn ) .
Routing Pipeline
Trong ASP.NET Core, routing ánh xạ một request đến lớp RouteHandler, sau đó được chuyển dưới dạng tập hợp những tuyến đến Routing Middleware .Routing Middleware thực thi MVC RouteHandler cho mỗi tuyến. Nếu một Controller và Action Method tương thích được tìm thấy trên một tuyến đơn cử, thì tài liệu được nhu yếu sẽ được chuyển tiếp đến phần còn lại của MVC Framework sẽ tạo ra phản hồi. Có hai loại routing có sẵn trong MVC là :
Cấu hình Routing
Loại định tuyến này sử dụng những mẫu định tuyến của ứng dụng để khớp một URL với những Action Method của Controller .Phương pháp thông số kỹ thuật routing được tiến hành bên trong file Startup. cs. Trong Startup. cs, phương pháp UseEndpoints ( ) ĐK những tuyến đang được cung ứng cho nó dưới dạng tham số bên trong phương pháp MapControllerRoute .
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
//....
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
//....
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
Routing Attribute
Loại định tuyến này được thực thi trải qua RouteAttribute và được sử dụng trực tiếp cho Controller hoặc Action Method đơn cử .RoutingAttribute được định nghĩa bên trên một Action Method trong Controller như sau :
public class AuthenController : Controller
{
[Route("/login")]
public IActionResult Login(string returnUrl = null)
{
SetTitle("Đăng nhập");
if (User.Identity.IsAuthenticated)
{
return LocalRedirect(returnUrl ?? "/admin");
}
ViewData["ReturnUrl"] = returnUrl;
return View();
}
}
Khởi tạo Controller
Ở quy trình tiến độ này, quy trình khởi tạo và thực thi Controller diễn ra. Controller chịu nghĩa vụ và trách nhiệm giải quyết và xử lý những request đến được triển khai bằng cách ánh xạ nhu yếu tới Action Method thích hợp .Bộ điều khiển và tinh chỉnh lựa chọn Action Method thích hợp ( để trả về response ) trên cơ sở những mẫu định tuyến được phân phối .MVC RouteHandler chịu nghĩa vụ và trách nhiệm chọn một action method ở dạng action descriptor. Sau đó, RouteHandler chuyển action descriptor vào trình thực thi Controller Action Invoker .
Lớp Controller Factory
tạo ra thể hiện của controller để thực thi action method. Lớp Controller Factory
phụ thuộc vào Controller Activator
để khởi tạo controller.
Sau khi action method được chọn, bộc lộ của controller sẽ thực thi action method giải quyết và xử lý nhu yếu. Thể hiện của controller cung ứng 1 số ít tính năng như action method, action filter và action result .
Trình kích hoạt sử dụng thuộc tính thông tin kiểu controller trên action descriptor để khởi tạo controller theo tên. Khi controller được tạo, phần còn lại của đường dẫn thực thi action method có thể thực thi.
Controller Factory
là thành phần chịu trách nhiệm tạo thể hiện của controller. Controller Factory
triển khai từ interface IControllerFactory. Interface này chứa hai phương thức được gọi là CreateController và ReleaseController.
Quy trình thực thi Action Method
Nếu Comdy hữu ích và giúp bạn tiết kiệm thời gian làm việc
Bạn hoàn toàn có thể vui mắt đưa Comdy vào whitelist của trình chặn quảng cáo ❤ ️ để tương hỗ chúng tôi trong việc trả tiền cho dịch vụ tàng trữ web để duy trì hoạt động giải trí của website .
Source: https://bem2.vn
Category: Ứng dụng hay