萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> asp.net編程 >> asp.net運行原理詳解

asp.net運行原理詳解

主要類: 
System.Web.HttpRuntime 
System.Web.HttpApplicationFactory 
System.Web.HttpApplication 
System.Web.Compilation.BuildManager 
System.Web.Compilation.ApplicationBuildProvider 
System.Web.Compilation.BuildProvidersCompiler 
System.Web.UI.PageHandlerFactory 

請求處理簡要流程圖:
asp.net運行原理詳解 三聯

閱讀建議: 

用Reflector工具邊查看ASP.NET 2.0的源代碼邊閱讀。 

分析: 

當我們通過浏覽器向ASP.NET 2.0網站的一個asp.net頁面發起請求時,在服務器端首先是IIS收到請求,IIS一看是asp.net頁面,心裡很開心,因為這個請求不用它處理,交給ASP.NET ISAPI就行了。ASP.NET ISAPI的工作也比較輕松,他的主要任務就是安排aspnet_wp.exe處理請求,並監視aspnet_wp.exe進程的執行情況,如果aspnet_wp.exe進程太累了,不能出色地完成任務,ASP.NET ISAPI就要讓他下崗,換一個新的aspnet_wp.exe來處理工作。 

aspnet_wp.exe的主要任務是將請求交給一系列稱為的 HTTP 管道的托管對象。如果把ASP.NET ISAPI比做銷售經理,那aspnet_wp.exe就是生產經理,而HTTP 管道就是生產的流水線。負責流水線的小組就是HttpRuntime,生產經理aspnet_wp.exe會將訂單(HTTP請求)交給HttpRuntime小組的工作人員ProcessRequest(HttpWorkerRequest wr),HttpRuntime根據內部的分工,最終由ProcessRequestInternal(HttpWorkerRequest wr)在流水線上進行生產,所以ProcessRequestInternal(HttpWorkerRequest wr)是我們分析的重點。 

ProcessRequestInternal的主要工作是: 

  1. 創建HttpContext實例。 

2. 對第一次請求進行初始化(EnsureFirstRequestInit)。 

a) 在EnsureFirstRequestInit中通過調用System.Web.HttpRuntime.FirstRequestInit進行一些初始化工作,比如:將Web.Config配置讀到到RuntimeConfig中,從bin目錄中裝載所有dll文件。 

3. 創建HttpWriter實例。 

copyright © 萬盛學電腦網 all rights reserved