ASP.NET原理分析

ASP.NET請求與處理全過程分析

1.用戶向服務器的某IP端口發送請求,此端口經過Http.sys來管理,請求報文被Http.sys接收,Http.sys在註冊表中找能處理這個請求類型的應用程序,最終找到IIS,請求被提交到IIS服務器處理,IIS判斷請求的類型。api

若是請求的是靜態文件,那麼IIS會直接處理,在本地找到請求的靜態文件,而後發送給瀏覽器。瀏覽器

若是是動態文件,如aspx或者ashx等動態文件,IIS就會去它的映射表裏面去找,實現它接口的那個擴展程序能夠處理這樣的動態文件,而後IIS發現有個叫作aspnet_isapi的一個擴展程序能夠處理處理像.aspx和.ashx這樣後綴名的文件,那麼IIS則把請求交給aspnet_isapi來處理。緩存

2.aspnet_isapi將啓動CLR(公共語言運行時),CLR負責啓動asp.net框架的域,而後將請求交給asp.net框架來處理,框架裏面有個一HttpRuntime類的對象,拿到用戶的請求後,它負責將請求封裝成HttpContext對象,調用application對象的ProcessRequest方法(HttpContext對象做爲參數)處理請求,最後處理完成後,返回給IIS,IIS再返回給瀏覽器,瀏覽器解析渲染呈現給用戶。服務器

 

補充說明:

Http.sys是一個位於Win2003和WinXP SP2中的操做系統核心組件,可以讓任何應用程序經過它提供的接口,以http協議進行信息通信。app

Http.sys的好處:
1. 緩存 - 靜態的內容如今被緩存於內核模式下,這使服務響應速度更快
2. 記錄 (Log)-IIS的log功能更快且標準化了
3. 帶寬控制 - greater scalability control and throttling
4. 可靠性 - 全部的服務請求會在Http.sys裏暫存入隊列,而不是由服務程序自己來處理,這樣,即便服務程序重啓,還沒有被處理的請求也不會丟失了
5. IP端口重用 - 如今,只要是經過Http.sys管理的端口(基本包括了那些著名的端口,好比80),均可以同時容許多個程序同時監聽了。框架

相關文章
相關標籤/搜索