日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

IIS架構(gòu)與HTTP請求處理流程(3)

系統(tǒng) 2374 0

ASP.NET Web編程原理 之

IIS架構(gòu)與HTTP請求處理流程(3)

續(xù)前文

8.1.4 HTTP請求的處理過程

在了解了 IIS 的架構(gòu)之后,來看一下 IIS 架構(gòu)中的各個組成部分是如何相互配合處理 HTTP 請求的。

先來從總體上看看 HTTP 請求的處理過程( 8 ? 10 )。

http請求處理過程

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1028" style="width: 415.5pt; height: 180pt;" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image001.emz"></imagedata></shape> 8 ? 10 HTTP 請求的處理過程

8 ? 10 清晰地展示出了 HTTP 請求處理就是瀏覽器與 Web 服務(wù)器間“一問一答”的過程

首先,瀏覽器嘗試連接 Web 服務(wù)器的 80 端口,如果 Web 服務(wù)器可以響應(yīng)此連接請求,就在瀏覽器與 Web 服務(wù)器間建立了一個通訊鏈路,在此“通道”上瀏覽器與 Web 服務(wù)器可以相互發(fā)送與接收信息。

假設(shè)瀏覽器向 Web 服務(wù)器發(fā)出一個讀取某 ASP.NET 站點(diǎn)上的某個 ASPX 網(wǎng)頁的請求。當(dāng)此請求通過網(wǎng)絡(luò)到達(dá) Web 服務(wù)器時,此請求被 HTTP.SYS 組件所接收。 HTTP.SYS 系統(tǒng)組件會檢查此 HTTP 請求的相關(guān)信息,根據(jù)其 URL 將此 HTTP 請求發(fā)送給運(yùn)行在某個應(yīng)用程序池中的工作者進(jìn)程處理。如果同時有多個針對此 ASP.NET 站點(diǎn)的 HTTP 請求, HTTP.SYS 會將這些請求排隊(duì),加入到對應(yīng)的應(yīng)用程序池的 HTTP 請求隊(duì)列中等待。

如果這是第一個對 ASP.NET 站點(diǎn)的 HTTP 請求,工作者進(jìn)程會加載 aspnet_isapi.dll ,并將請求轉(zhuǎn)給它, aspnet_isapi.dll 接著會裝載 .NET CLR [1] 創(chuàng)建一個針對此 ASP.NET 站點(diǎn)的應(yīng)用程序域 [2] ,然后啟動一個復(fù)雜的由多個步驟和組件參與的處理流程,當(dāng)此處理流程結(jié)束,要發(fā)回給客戶端的結(jié)果(通常是 HTML 代碼,當(dāng)然也可以是其他類型的資源,比如由程序動態(tài)生成的圖片)已經(jīng)生成,此結(jié)果被轉(zhuǎn)發(fā)給 HTTP.SYS

注意: 對于以集成模式運(yùn)行的 IIS 7 .NET CLR 在應(yīng)用程序池一啟動就自動裝載,從而避免了臨時裝載 CLR 的花銷。后繼處理過程與 IIS 6 基本一致。

HTTP.SYS 接收到請求的處理結(jié)果之后,將其緩存到緩沖區(qū)中,然后把處理結(jié)果發(fā)回給發(fā)出 HTTP 請求的瀏覽器。

上述過程是對 IIS 處理 HTTP 請求全過程的粗略描述。 8.2 節(jié)將選取這個處理過程中的主要階段,詳細(xì)介紹針對 ASP.NET 網(wǎng)頁的 HTTP 請求處理過程。


8.1.5 ISAPI擴(kuò)展、ISAPI篩選器和程序映射

IIS 的文檔中經(jīng)常會提到兩個術(shù)語: ISAPI 擴(kuò)展和 ISAPI 篩選器。

1 ISAPI 擴(kuò)展

ISAPI 擴(kuò)展( ISAPI Extension ”是一種可以添加到 IIS 中以增強(qiáng) Web 服務(wù)器功能的程序,其載體為 DLL 文件。它通常直接負(fù)責(zé)響應(yīng) HTTP 請求。

根據(jù) HTTP 請求要訪問的資源擴(kuò)展名(通過 URL 獲取), IIS 會選取特定的 ISAPI 擴(kuò)展來處理這一請求,這一過程被稱為“ 程序映射 而用于響應(yīng) HTTP 請求的這一 ISAPI 擴(kuò)展被稱為“ HTTP Handler HTTP 處理程序) ”。 8 ? 11 展示了 IIS 6 中的程序映射。


程序映射

<shape id="圖片_x0020_8" style="visibility: visible; width: 301.5pt; height: 329.25pt;" type="#_x0000_t75" alt="IIS2" o:spid="_x0000_i1025"><imagedata o:title="IIS2" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.jpg"><font size="3" color="#000000"></font></imagedata></shape>

8 ? 11 程序映射( IIS 6

8 ? 11 中可以看到, IIS 指定對 ASP.NET 網(wǎng)頁(其擴(kuò)展名為 .aspx )的請求將由 aspnet_isapi.dll 處理( 8 ? 12 )。

編輯映射

<shape id="圖片_x0020_9" style="visibility: visible; width: 302.25pt; height: 170.25pt;" type="#_x0000_t75" alt="無標(biāo)題" o:spid="_x0000_i1026"><imagedata o:title="無標(biāo)題" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image003.png"><font size="3" color="#000000"></font></imagedata></shape>

8 ? 12 aspnet_isapi.dll 負(fù)責(zé)處理對 ASP.NET 網(wǎng)頁的請求

IIS 7 中的程序映射與 IIS 6 略有不同。當(dāng) IIS 7 以“經(jīng)典模式”運(yùn)行時,與 IIS 6 一樣使用 aspnet_isapi.dll 響應(yīng)針對“ .aspx ”的請求。但當(dāng) IIS 7 以“集成模式”運(yùn)行時,則使用托管處理程序( System.Web.UI.PageHandlerFactory )響應(yīng)針對“ .aspx ”的請求( 8 ? 13 )。



IIS7下的程序映射

<shape id="圖片_x0020_4" style="visibility: visible; width: 248.25pt; height: 221.25pt;" type="#_x0000_t75" o:spid="_x0000_i1027"><imagedata o:title="" src="file:///C:%5CUsers%5CJINXUL%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image004.png"><font size="3" color="#000000"></font></imagedata></shape>

8 ? 13 IIS 7 集成模式下的程序映射

2 ISAPI 篩選器

“ISAPI篩選器( ISAPI Filter 也是一種 DLL ,但它不負(fù)責(zé)生成 HTTP 請求,它的主要作用是響應(yīng)某些特定的事件。當(dāng)這些事件發(fā)生時 ISAPI 篩選器被調(diào)用,它可以修改傳入或傳出的 HTTP 數(shù)據(jù)。

IIS 7 中,使用“ HTTP 模塊( HTTP Module 取代了傳統(tǒng) ISAPI 篩選器的功能。

注意: ISAPI 擴(kuò)展與 ISAPI 篩選器名字很相近,但其在 IIS 中的地位和所起的作用是不同的。



[1] CLR Comon Language Runtime ):通用語言運(yùn)行時,是 .NET 的核心,可以將其看成是一臺虛擬的專用于運(yùn)行 .NET 程序的計(jì)算機(jī)。

[2] 應(yīng)用程序域( Application Domain ): .NET 引入的一種代碼隔離機(jī)制,一個托管進(jìn)程可以擁有多個應(yīng)用程序域,在應(yīng)用程序域中可以裝載程序集,創(chuàng)建特定類型的對象,調(diào)用對象的方法。



*********************************************************

下一部分,將在本部分所介紹內(nèi)容的基礎(chǔ)上,詳細(xì)介紹與ASP.NET開發(fā)密切相關(guān)的“ASP.NET請求處理管線(HTTP Pipe Line)”

IIS架構(gòu)與HTTP請求處理流程(3)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 荆门市| 青浦区| 陇西县| 天津市| 高邮市| 铜山县| 抚远县| 连云港市| 沙坪坝区| 赫章县| 崇信县| 宾阳县| 资兴市| 松江区| 同仁县| 宝鸡市| 闸北区| 涟源市| 武山县| 成武县| 武功县| 桦甸市| 新建县| 昭平县| 万源市| 沙河市| 平乡县| 清徐县| 乌审旗| 铁力市| 翼城县| 丹阳市| 湘西| 西丰县| 任丘市| 武定县| 恩平市| 宜兴市| 琼结县| 宁津县| 潜山县|