iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
自我挑戰組

用 30 天和 ASP.NET Core 打造一個活動報名管理系統系列 第 12

ASP.NET Core - 活動報名管理系統:Day12 Life Cycle 生命週期

  • 分享至 

  • xImage
  •  

前言

如果能理解當一個 Http Request 傳到系統時,該 Request 是如何在系統的生命週期中流竄的,那在開發或是在系統分析與設計時,更可以了解甚麼功能該放在甚麼地方,Debug 時也能更清楚問題發生在哪裡。

今天的內容就來 Run 一下 ASP.NET Core 的生命週期是怎麼跑的。

ASP.NET Core Request Life Cycle

這裡一一來說明每個框框負責的內容是甚麼:

Middleware

Middleware 中文譯為中介軟體。

系統收到 Request 時,由多個 Middleware 組成的 Pipeline 進行一連串的處理,而 Pipeline 是「先進後出」的處理順序,如下圖:

目前 Pipeline 中有 3 個 Middleware,Request 會從第 1 個依序送到第 3 個 Middleware。

而傳到第 3 個後,會再回傳到第 2 個,直至最初的 Middleware,回傳期間,可選擇加入其他邏輯執行或是不執行任何事情,所以 Middleware 的順序安排是很重要的。

e.g. 身分權限、驗證功能都可以放在 Middleware,讓 Response 都經過權限、身分判斷後才可進到主程式。

Routing

路由,也是一種 Middleware,負責將 Response 對應到預設的路由或是到 Controller 與 Action。

在 .NET 5 中,路由在 Startup.cs 中可以設定(app.UseEndpoints),並且要注意到,路由的 Code 也是有順序性的,若是先執行了,後續規則就不會執行:

Controller Initialization

初始化與執行 Controller,將負責把接收到的 Request,判斷該丟去哪一個 Action。

Action Method Execution

Controller 將 Response 丟到 Action 後,執行該 Action 的內容,並 Return View 或是其他格式的內容到瀏覽器。

Result Execution

呈 Action Method Execution,在將 Response 丟到瀏覽器前,會先判斷要丟的是 View 還是非 View 內容(e.g. Json)等。

Reference

ASP.NET Core MVC Request Life Cycle

[鐵人賽Day04] - 淺談Middleware

ASP.NET Core 基礎 - Middleware

[鐵人賽 Day07] ASP.NET Core 2 系列 - 路由 (Routing)


上一篇
ASP.NET Core - 活動報名管理系統:Day11 Dependency Injection
下一篇
活動報名管理系統:Day13 ViewModel, AutoMapper
系列文
用 30 天和 ASP.NET Core 打造一個活動報名管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言