1. 程式人生 > >ASP.NET請求過程-1

ASP.NET請求過程-1

引入 ava 地址 cto dns解析 ffffff div 對象 關鍵詞

客戶端發送請求到達服務器

輸入域名->DNS解析->指定IP 服務器(如果網頁直接輸入IP地址則直接到服務器)->請求到達服務器->HTTP.SYS接受HTTP請求->轉發給ISAPI(是一個內置服務,他是IIS服務器的一個組件),檢查當前請求的後綴。(後綴的配置在 處理程序映射 服務裏面)->根據後綴(asp.net mvc默認管道給他添加一個asd後綴) 管道通信給aspnet_isapi(註意這個是給sap.net用的 其他的還有php_isapi java_isapi等)->把網站的請求封裝為httpworkrequest->然後又把httpworkerequest傳給httpruntime(httpruntime是可以再程序中訪問到的,他是asp.net程序的入口)->然後到達httpapplicationfactory,他是http應用程序的一個工廠->他會創建出一個httpapplication(管道模型就是來自他)

技術分享圖片技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

關鍵詞解釋

技術分享圖片

上圖(來自網絡)中httpruntime和httpapplicatonfactory是淺顏色,因為他們是單例的。說明這兩個對象在程序中只有一次創建。

每次過來請求都會創建一個httpapplication,但是httpapplicationfactory內部維護了一個對象池,每次創建的httpapplication使用完之後不會馬上被銷毀。會放在池子裏。

關鍵字解釋

應用程序池:IIS中的概念,就是網站運行時的內存空間。

應用程序域::為了保證代碼的鍵壯性CLR希望不同服務功能的代碼之間相互隔離,這種隔離可以通過創建多個進程來實現,但操作系統中創建進程是即耗時又耗費資源的一件事,所以在CLR中引入了AppDomain的概念,AppDomain主要是用來實現同一進程中的各AppDomain之間的隔離

推薦https://www.cnblogs.com/asminfo/p/3999412.html

HttpRuntime:ttpRuntime在ASP.NET處理請求中負責的是創建HttpContext對象以及調用HttpApplicationFactory創建HttpApplication。

推薦https://www.cnblogs.com/kissdodog/archive/2013/05/07/3065208.html

HTTPApplicationFactory:創建HttpApplication,對HttpApplication池管理。

HttpApplication:就是一個用戶請求。

推薦https://www.cnblogs.com/liangxiaofeng/p/5625976.html

推薦https://www.cnblogs.com/cs_net/archive/2010/11/22/1883706.html

HttpContext:用戶請求以及後臺處理的信息都放在這個類型裏面,裏面包含了用戶請求過程遇到的事件(分別可以通過Module和global.asax指定)

推薦文章https://www.cnblogs.com/cs_net/archive/2010/11/22/1883706.html

Module:對HttpApplication中事件 進行註冊。是一個觀察者模式(加配置文件)。

Handler:所有的請求都回到Handler(無論是原來的webform 還是現在的mvc。就連一個圖片都是的。)。

ASP.NET請求過程-1