文章出處

之所以稱ASP.NET Core是一個Web開發平臺,源于它具有一個極具擴展性的請求處理管道,我們可以通過這個管道的定制來滿足各種場景下的HTTP處理需求。ASP. NET Core應用的很多特性,比如路由、認證、會話、緩存等,也同時定制消息處理管道來實現的。我們甚至可以通過管道定制在ASP.NET Core平臺上創建我們自己的Web框架,實際上MVC和SingalR這兩個重要的Web框架也是采用這樣的方式創建的。

一、采用管道處理HTTP請求

HTTP協議自身的特性決定了任何一個Web應用的工作方式都是監聽、接收并處理HTTP請求,并在最終對請求予以響應,HTTP請求處理是管道式設計典型的應用場景。我們根據HTTP請求的處理流程定制出一個消息處理管道,讓接收到的HTTP請求消息想水一樣流入這個管道,組成這個管道的各個環節一次對它作相應的處理。處理的結果同樣轉變成消息逆向流入這個管道進行處理,并最終轉變成回復給客戶端的HTTP響應。ASP.NET Core的消息處理管道從設計的角度來講是非常簡單的,但是從具體實現的角度則相對難以理解,為了讓讀者朋友們通過本章對此具有深刻的理解,我們從簡單的部分講起。[閱讀全文]

 

二、創建一個“迷你版”的管道來模擬真實管道請求處理流程

我們知道ASP.NET Core請求處理管道由一個服務器和一組有序的中間件組成,所以從總體設計來講是非常簡單的,但是就具體的實現來說,由于其中涉及很多對象的交互,我想很少人能夠地把它弄清楚。如果想非常深刻地認識ASP.NET Core的請求處理管道,可以分兩個步驟來進行,我們首先可以在忽略細節的前提下搞清楚管道處理HTTP請求的總體流程,然后再此基礎上補充之前遺漏的細節。為了讓讀者朋友們能夠更加容易地理解管道處理HTTP請求的總體流程,我們根據真實管道的實現原理再造了一個“模擬管道”。[閱讀全文]

 

三、管道是如何處理HTTP請求的?

ASP.NET Core請求處理管道由一個服務器和一組有序排列的中間件組合而成。我們可以在這基礎上作進一步個抽象,將后者抽象成一個HttpApplication對象,那么該管道就成了一個Server和HttpApplication的綜合體(如圖5所示)。Server會將接收到的HTTP請求轉發給HttpApplication對象,后者會針對當前請求創建一個上下文,并在此上下文中處理請求,請求處理完成并完成響應之后HttpApplication會對此上下文實施回收釋放處理。[閱讀全文]

 

四、管道是如何被創建出來的?

請求處理管道涉及到四個核心的對象,它們分別是WebHostBuilder、WebHost、Server和HttpApplication。我們通過WebHostBuilder來創建WebHost,并領用后者來構建請求處理管道。

請求處理管道通過一個Server和一個HttpApplication對象組成,后者是對所有注冊的中間件的封裝。當WebHost被啟動的時候,它會創建Server和HttpApplication對象,并將后者作為參數調用Server的Start方法以啟動服務器。啟動后的Server開啟監聽請求并利用HttpApplication來處理接收到請求。當HttpApplication完成了所有請求處理工作之后,它會利用Server完成對請求的最終響應。[閱讀全文]


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()