ASP.NET Core管道由注冊的服務(wù)器和一系列中間件構(gòu)成。我們在上一篇中深入剖析了中間件,現(xiàn)在我們來了解一下服務(wù)器。服務(wù)器是ASP .NET Core管道的第一個節(jié)點,它負(fù)責(zé)完整請求的監(jiān)聽和接收,最終對請求的響應(yīng)同樣也由它完成。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

服務(wù)器是我們對所有實現(xiàn)了IServer接口的所有類型以及對應(yīng)對象的統(tǒng)稱。如下面的代碼片段所示,這個接口具有一個只讀屬性Features返回描述自身特性集合的FeatureCollection對象,另一個Start方法用于啟動服務(wù)器。

 1: public interface IServer : IDisposable
 2: {
 3: IFeatureCollection Features { get; }
 4: void Start<TContext>(IHttpApplication<TContext> application);    
 5: }

當(dāng)我們Start方法啟動指定的Server的時候,必須指定一個類型為IHttpApplication<TContext>的參數(shù),我們將實現(xiàn)才接口的所有類型及其對應(yīng)對象統(tǒng)稱為HttpApplication。當(dāng)服務(wù)器在接收到抵達(dá)的請求之后,它會直接交給這個HttpApplication對象來處理,所以我們需要先來認(rèn)識一下這個對象。

一、HttpApplication

對于ASP.NET Core管道來說,HttpApplication對會接管服務(wù)器接收的請求,后續(xù)的請求完全由它來負(fù)責(zé)。如下圖所示,HttpApplication從服務(wù)器獲得請求之后,會利用注冊的中間件注冊對請求進(jìn)行處理,并最終將請求遞交給應(yīng)用程序。HttpApplication針對請求的處理實際上會在一個執(zhí)行上下文中完成,這個上下文為應(yīng)用對單一請求的整個處理過程定義了一個邊界。單純描述HTTP請求的HttpContext是這個執(zhí)行上下文中最為核心的部分,除此之外,我們還可以根據(jù)需要將其他相關(guān)的信息定義其中,所以IHttpApplication<TContext>接口采用泛型參數(shù)的形式來表示定義這個上下文的類型。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(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í)是年輕人改變自己的最好方式