這篇文章中,我將帶領大家一起詳細學習:ASP.NET Core Middleware Components.這篇文章中,我將詳細討論下麵幾個問題:什麼是ASP.NET Core 中的中間件組件?ASP.NET Core應用程式中,在哪裡來使用中間件組件?怎樣來配置ASP.NET Core 應用程式中... ...
這篇文章中,我將帶領大家一起詳細學習:ASP.NET Core Middleware Components.這篇文章中,我將詳細討論下麵幾個問題:
- 什麼是ASP.NET Core 中的中間件組件?
- ASP.NET Core應用程式中,在哪裡來使用中間件組件?
- 怎樣來配置ASP.NET Core 應用程式中的中間件組件?
- 使用中間件組件的例子有哪些?
- ASP.NET Core應用程式中,中間件組件執行的順序是?
什麼是ASP.NET Core中間件組件?
ASP.NET Core中間件組件就是組裝到應用程式中,處理HTTP請求和響應的軟體組件(C# Classes)。每一個中間件組件執行下麵的任務:
- 選擇是否將HTTP請求傳遞給管道中的下一個組件
- 可以在管道中的下一個組件之前和之後執行工作
在ASP.NET Core中,已經有很多中間件組件,你可以直接拿去使用了。如果你願意,還可以創建自己的中間件組件。你需要特別記住的一點就是:在ASP.NET Core 中一個中間件組件只做一個特定的事情。
在ASP.NET Core應用程式中,我們在哪裡使用中間件組件呢?
下麵是一些在ASP.NET Core應用程式中使用中間件組件的例子:
- 我們可能有一個中間件組件,用於用戶身份驗證
- 另外的中間件組件,用來記錄請求和響應
- 同樣,我們還有中間件組件用來處理異常
- 我們可能有中間件組件,來處理靜態文件,例如:images、javascript、或者css文件等等
- 可能還有一個中間件組件,用來授權用戶可以訪問特定的資源
中間件組件是我們在ASP.NET Core中用來處理請求管道的組件。如果你瞭解過之前版本的.NET Framework,你就會知道,我們是使用Http Handlers和Http Moudles來處理請求和響應的。並且這兩個將決定如何處理HTTP請求和響應。
怎樣在ASP.NET Core應用程式中配置中間件組件?
在ASP.NET Core應用程式中,你需要使用Startup類文件中的Configure方法來配置中間件組件。這個Statrup在程式啟動的時候,會執行。我們打開之前用空模板建的ASP.NET Core應用程式:
因此,不管你啥時候想要配置中間件組件,你都需要在Configure方法中,調用IApplicationBulider介面的UseXXX方法。在上面的圖片中,你可以看到,使用了UseDeveloperExceptionPage中間件組件。
在接下來的文章中,我將詳細介紹這個中間件組件。現在我們來好好理解一下,什麼是中間件組件,以及它們如何工作的。
理解ASP.NET Core中的中間件組件
下麵的圖片解釋了什麼是中間件組件,以及它們怎麼用在ASP.NET Core請求處理管道中的。
在ASP.NET Core應用程式中,中間件組件可以同時獲取傳入的HTTP請求以及傳出的HTTP響應。所以一個中間件組件可以做下麵的事情:
- 處理HTTP請求,生成HTTP響應
- 處理HTTP請求,修改請求,並傳遞給下一個中間件組件
- 處理HTTP響應,修改響應,傳遞給下一個中間件組件或者傳遞給ASP.NET Core Web伺服器
使用中間件組件的例子
上面的圖片中,我們看到有了一個日誌記錄的中間件組件。這個組件是簡單的記錄請求的時間,並且將其傳遞給下一個中間件組件。也就是靜態文件中間件組件,來做進一步的處理。
ASP.NET Core中的中間件組件,可能同樣處理HTTP請求,並生成響應報文。ASP.NET Core中間件組件,同樣可以選擇,不去調用下一個中間件組件。這個概念稱為請求管道短路。
例如,我們有一個靜態文件的中間件組件,如果有請求,要獲取靜態文件,靜態文件中間件組件就會去處理這個請求。處理完之後,靜態文件中間件組件,不傳遞給下一個中間件組件(MVC中間件組件),這就稱為請求管道短路。
我們已經知道了,ASP.NET Core中間件組件可以同時獲取HTTP請求和HTTP響應。所以中間件組件也可以處理傳出的響應。例如,日誌組件可能記錄時間,然後這個發送響應給客戶端。
什麼是中間件組件執行的順序?
理解中間件組件執行的順序非常重要!ASP.NET Core中間件組件執行的順序,就是按照他們添加的順序來的。所以我們需要格外註意,添加中間件的時候的順序。
作為應用程式業務的需要,你可能會添加很多的中間件組件。例如,如果你開發靜態文件的網站,那麼你就需要靜態中間件組件。
但是如果你開發動態的數據驅動的網站程式,那麼你可能會添加,諸如:日誌中間件、身份驗證中間件、授權中間件、MVC中間件等等。
在我們下篇文章中,我將詳細介紹如何配置中間件組件。這篇文章,只是介紹了中間件組件的一些常用概念,希望你能理解!