從上面的內(nèi)容我們知道ASP.NET Core請求處理管道由一個服務(wù)器和一組中間件構(gòu)成,所以從總體設(shè)計來講是非常簡單的。但是就具體的實現(xiàn)來說,由于其中涉及很多對象的交互,很少人能夠地把它弄清楚。如果想非常深刻地認識ASP.NET Core的請求處理管道,我覺得可以分兩個步驟來進行:首先,我們可以在忽略具體細節(jié)的前提下搞清楚管道處理HTTP請求的總體流程;在對總體流程有了大致了解之后,我們再來補充這些刻意忽略的細節(jié)。為了讓讀者朋友們能夠更加容易地理解管道處理HTTP請求的總體流程,我們根據(jù)真實管道的實現(xiàn)原理再造了一個“迷你版的管道”。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中] [源代碼從這里下載]

目錄
一、建立在“模擬管道”上的應(yīng)用
二、HttpApplication——一組中間件的有序集合
三、HttpContext——對當前HTTP上下文的抽象
四、服務(wù)器——實現(xiàn)對請求的監(jiān)聽、接收和響應(yīng)

一、建立在“模擬管道”上的應(yīng)用

再造的迷你管道不僅僅體現(xiàn)了真實管道中處理HTTP請求的流程,并且對于其中涉及的接口和類型,我們也基本上采用了相同的命名方式。但是為了避免“細枝末節(jié)”造成的干擾,我會進行最大限度的裁剪。對于大部分方法,我們只會保留最核心的邏輯。對于一些接口,我們會剔除那些與核心流程無關(guān)的成員。在通過這個模擬管道講解HTTP請求的總體處理流程之前,我們先來看看如何在它基礎(chǔ)上開發(fā)一個簡單的應(yīng)用。

我們在這個模擬管道上開發(fā)一個簡單的應(yīng)用來發(fā)布圖片。具體的應(yīng)用場景是這樣:我們將圖片文件保存在服務(wù)器上的某個目錄下,客戶端可以通過發(fā)送HTTP請求并在請求地址上指定文件名的方式來獲取目標圖片。如下圖所示,我們利用瀏覽器向針對某張圖片的地址(“http://localhost:3721/images/hello.png”)發(fā)送請求后,獲取到的目標圖片(hello.png)會直接顯示到瀏覽器上。除此之外,如果指定的圖片地址沒有包含擴展名(“.png”),我們的也會幫助我們自動匹配一個文件名(不包含擴展名)相同的圖片。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式