Asp.Net 學習筆記(IIS不一樣版本和Asp.Net)

 主要目的是在網上記錄一下學習筆記,若有不對,請指出 謝謝!! web

         iis5.x:數據庫

  存在問題,inet info收到動態請求後,aspnt_isapi.dll會被加載到inetinfo.exe(掛載w3svc服務)這個進程中,與工做進程經過管道進行通訊,存在性能瓶頸windows

         全部的asp.net應用運行在相同進程(aspnet_wp.exe)進程的不一樣進程域,並不能徹底隔絕各個進程的相互影響api

         Iis6.0緩存

  將isapi動態連接庫直接加載到工做進程,不在掛載w3svc,仍是有元數據庫(http請求解析出的數據去元數據庫對應web程序)網絡

         加入應用程序池概念,爲一個多個web應用建立一個應用程序池,每個對應獨立的工做進程w3wp.exe,提供進程級別的隔離機制mvc

         建立了http.sys的http監聽器,他以驅動程序的形式運行在Windows的內核模式,是tcp/ip網絡子系統的一部分,優勢:始終處於運行狀態,對用戶的請求及時反映;穩定,運行在內核模式,不執行用戶代碼,不會受到其餘影響;內核模式下數據緩存,頻繁請求某個資源,會緩存。app

         問題:w3svc的功能:http請求接受,接受http.sys監聽的http請求;配置管理,從metabase加載配置信息對相關組件配置;進程管理:建立、回收、監控工做進程框架

         雙管道模式,asp.net和iis不是同一個管道,經過isapiasp.net

         Iis7:

w3svc後兩組功能給了WAS,提供了對非http協議的支持。經過提取監聽接口抽象出不一樣監聽器,提供基於tcp、命名管道等傳輸協議支持。某種意義上來講,w3svc至關於http.sys的監聽適配器,三種非http監聽器和監聽適配器定義在程序集SMSvcHost.exe中,四個windows服務,其中一個是wcf的tcp端口共享

         不管是w3svc的http請求仍是WCF提供的監聽適配器接收到的其餘協議的請求,最後都會被傳遞到WAS,在進行請求處理過程當中經過內置配置管理模塊加載相關的配置信息

      iis7完成兩個管道的集成

asp.net管道:

w3wp.exe會利用aspnet_isap.dll(包含isapi的定義)加載.net運行時,一個運行池能夠承載一個或者多個web應用

HTTP請求處理:

http.sys監管接受到HTTP請求,通過w3svc判斷若是是動態請求某個web應用,W3wp.exe利用aspnet_isapi.dll加載.net運行時(若是運行時未加載)

而後,iis會經過app domain factory爲該web應用建立應用程序域。,而後一個特殊的運行時isapiruntime(system.web.dll  hosting)被加載,會接管該http請求。接管請求的isapiruntime會將請求封裝爲isapiworkrequset對象,而後傳遞給asp.net運行時httpruntime,至此,http請求進入asp.net管道。

Httpruntime會根據isapiworkrequest對象建立用於表示當前http請求的Context(上下文)對象HTTP context。

建立完成後,HTTP runtime會利用HTTP application factory建立或獲取現有(asp.net維護者一個HTTP application對象池)的HTTP application對象,

在HTTP application初始化的時候,asp.net會根據配置文件加載並初始化註冊的HTTP module對象,

HTTP application處理http請求的不一樣階段會觸發不一樣的事件,

而HTTP module的意義是經過註冊HTTP application的相應事件,從而將所須要的操做(方法)注入到http處理的這個流程中,

最終完成HTTP請求的處理是在HTTP handler中,不一樣的HTTP請求對應不一樣的HTTP handle

HTTP application是整個asp.net的核心,一個對象在某個時刻只能處理一個http請求,因此採用對象池機制來建立或者獲取對象,第一個請求過來,會建立多個對象放入池中,選擇一個進行處理,處理完成不會被回收,釋放到池中,若是都處於繁忙,不超過最大數量能夠建立再去處理,否則只能放到隊列中等待,處理HTTP請求相對複雜,不一樣階段會觸發相應的事件,。。。。。。。。

定製HTTP application:

Asp.net中的HTTP application派生於global.asax文件,按照Application_方法名

HTTPmodule:實現system.web.ihttpmodule接口 init實現自身初始化,接受一個HTTP application對象,配置HTTP handle 的方法,webconfig

能夠在調用當前HTTP context的remaphandler方法,制定一個具體的HTTP handler對象,爲了讓asp.net直接跳過默認的HTTP handler映射操做(在HTTP application的postmaprequesthandler事件出發以前)

Asp.net mvc就是經過擴展asp.net實現的,擴展點主要體如今HTTP module和HTTP handler,整個。。mvc自定義這兩個核心組件創建起來。

下一篇等學習完自建一個小型asp.net mvc框架以後再繼續討論。

相關文章
相關標籤/搜索