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

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

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

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

一、HttpApplication

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

延伸閱讀

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