Asp.net底層機制

來源:互聯網
上載者:User

標籤:bsp   roc   nbsp   sax   ext   組件   處理   process   step   

Asp.net底層就是使用者通過輸入網址,然後請求IIs伺服器的流程,在這個過程中有一個重要的組件就是ISAPI,這是一個底層的win32API,在擴充方面比較困難,多用於介面之間的橋接,.net和IIS通過IISAPI進行互動的,IIS中尾碼名.aspx,通過應用程式擴充映射到.net的ISAPI擴充的dll,這個dll就是aspnet_isapi.dll,訪問都是通過這個dll中相應的映射完成的。

1.通過asp.net的映射機制使用尾碼名從ISAPI中擷取到接收的請求,並將請求的路由到相應的handler,aspnet_isapi.dll會開啟一個背景工作處理序w3wp.exe(使用程式池進行建立,右側使用無則建立)

2.ISAPIRuntime.ProcessRequest(ecb),將控制代碼封裝為HttpWorkingRequest

3.HttpRuntime.ProcessRequest(wr)這個操作的作用:1.建立一個HttpContext執行個體,裡面封裝了瀏覽器報文的資訊2.建立一個HttpApplication執行個體,首先查看是否有空餘的application,沒有則按照global.asax類型建立,這個是用來處理報文資料.3.調用Init()方法,初始化管道事件,同時觸發管道執行事件。

 

HttpContext這個對象在整個請求的生命週期中都是存在的,封裝了報文的資訊,同時包含了所有的請求過程中的重要對象,包括Ruquest、Responese、Application、Cache、Server ,HttpContext.Current可以去訪問這些對象,HttpContext,Items這個集合中可以儲存一些資料資訊,這些資料的生命週期就是整個的請求過程,BeginRequest-EndRequest,HttpContext是在開始請求的時候被建立,是進程內唯一對象。

HttpApplication是Web程式處理的地方,他被映射到Global.asax類中,這個類繼承了HttpApplication,在Global中的每一個事件都是以Application_為首碼的事件實現,這也就避免了自己手動建立這些事件委託。每個asp.net的虛擬目錄都是在自己的應用程式定義域中執行,每個應用程式定義域可以有多個來自管理池的HttpApplication對象,這就是可以同時執行多個請求而互相不影響的原因。

Web.Config具有全域通知的作用,會重新建立應用程式定義域,關閉舊的應用程式定義域名。HttpApplication.Init()->HttpApplication.ResumeSteps,執行所有的處理器,這些處理器被映射到global.asax

 

Asp.net底層機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.