亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 2213 0

ASP.NET Web編程原理 之

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

續前文

8.1.4 HTTP請求的處理過程

在了解了 IIS 的架構之后,來看一下 IIS 架構中的各個組成部分是如何相互配合處理 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 服務器間“一問一答”的過程

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

假設瀏覽器向 Web 服務器發出一個讀取某 ASP.NET 站點上的某個 ASPX 網頁的請求。當此請求通過網絡到達 Web 服務器時,此請求被 HTTP.SYS 組件所接收。 HTTP.SYS 系統組件會檢查此 HTTP 請求的相關信息,根據其 URL 將此 HTTP 請求發送給運行在某個應用程序池中的工作者進程處理。如果同時有多個針對此 ASP.NET 站點的 HTTP 請求, HTTP.SYS 會將這些請求排隊,加入到對應的應用程序池的 HTTP 請求隊列中等待。

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

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

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

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


8.1.5 ISAPI擴展、ISAPI篩選器和程序映射

IIS 的文檔中經常會提到兩個術語: ISAPI 擴展和 ISAPI 篩選器。

1 ISAPI 擴展

ISAPI 擴展( ISAPI Extension ”是一種可以添加到 IIS 中以增強 Web 服務器功能的程序,其載體為 DLL 文件。它通常直接負責響應 HTTP 請求。

根據 HTTP 請求要訪問的資源擴展名(通過 URL 獲取), IIS 會選取特定的 ISAPI 擴展來處理這一請求,這一過程被稱為“ 程序映射 而用于響應 HTTP 請求的這一 ISAPI 擴展被稱為“ 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 網頁(其擴展名為 .aspx )的請求將由 aspnet_isapi.dll 處理( 8 ? 12 )。

編輯映射

<shape id="圖片_x0020_9" style="visibility: visible; width: 302.25pt; height: 170.25pt;" type="#_x0000_t75" alt="無標題" o:spid="_x0000_i1026"><imagedata o:title="無標題" 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 負責處理對 ASP.NET 網頁的請求

IIS 7 中的程序映射與 IIS 6 略有不同。當 IIS 7 以“經典模式”運行時,與 IIS 6 一樣使用 aspnet_isapi.dll 響應針對“ .aspx ”的請求。但當 IIS 7 以“集成模式”運行時,則使用托管處理程序( System.Web.UI.PageHandlerFactory )響應針對“ .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 ,但它不負責生成 HTTP 請求,它的主要作用是響應某些特定的事件。當這些事件發生時 ISAPI 篩選器被調用,它可以修改傳入或傳出的 HTTP 數據。

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

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



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

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



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

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

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色噜噜狠狠色综合久 | 九九热香蕉视频 | 一本伊大人香蕉久久网手机 | 曹逼视频 | 四虎永久在线精品视频播放 | 韩国一大片a毛片 | 四虎影视在线永久免费看黄 | 国产在线精品一区二区三区 | 国产三级在线精品男人的天堂 | www.久久爱| 久久一区二区三区精品 | 91精品自在拍精选久久 | 国产第六页 | 俄罗斯毛片免费大全 | 成人国产在线视频在线观看 | 成人精品一区二区www | 狠狠狠色丁香婷婷综合久久五月 | 欧美一级xxxxⅹ毛片 | 免费网站毛片 | 香蕉国产在线观看免费 | 丝袜亚洲精品中文字幕一区 | 亚洲国产成人久久综合一区 | 天天干天天干天天干天天干天天干 | 久操热久操 | 精品不卡 | 久久91亚洲精品久久91综合 | 中文字幕精品一区 | 免费一级片视频 | 九九中文字幕 | 日韩欧美一区二区久久黑人 | 国产精品日韩欧美久久综合 | 人成精品视频三区二区一区 | 亚洲欧美日产综合一区二区三区 | 伦伦影院精品一区 | 国产精品一区二区免费 | 国产激情在线 | 成人夜视频 | 中国大陆一级毛片 免费 | 久久久久久亚洲精品不卡 | 国产亚洲精品中文带字幕21页 | 国产欧美日韩综合二区三区 |