Request Life Cycle trong ASP.NET Core

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 .Request Life Cycle trong ASP.NET Core

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.

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 :

Xem thêm  ‎Evernote

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.

Xem thêm  Hướng dẫn sử dụng giả lập Android không cần cài đặt phần mềm

Xem thêm: CHUYÊN ĐỀ: Ứng dụng công nghệ thông tin trong dạy học Toán : Trường THCS Quảng Long

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

ASP.NET Core MVC Routing PipelineTrong 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 .Khởi tạo ControllerMVC 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 .

Xem thêm  Gương cầu lõm – Wikipedia tiếng Việt

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 .

5/5 - (1 bình chọn)

Bài viết liên quan

Để lại ý kiến của bạn:

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *