這篇文章主要講解了“IIS ASP.NET的進程模式是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“IIS ASP.NET的進程模式是什么”吧!
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、建水網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5場景定制、電子商務商城網(wǎng)站建設、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為建水等各大城市提供網(wǎng)站開發(fā)制作服務。
IIS ASP.NET的進程模式之ASP.NET處理模型
到目前為止,我們已經(jīng)明白當請求一個ASP.NET文件的請求傳到IIS后,他被轉(zhuǎn)遞到aspnet_isapi.dll,他是ASP.NET相關(guān)處理的主要入口點。實際上,這個擴展明顯依賴于系統(tǒng)上IIS的版本,因此處理模型是通過asp.net運行時通過有序的操作執(zhí)行來處理請求并生成回送,也許有那么一點改變。
在IIS5.X,所有asp.net相關(guān)請求通過ISAPI擴展被分配到外部工作進程叫做aspnet_wp.exe.ISAPI擴展,在IIS進程(inetinfo.exe)中運行,再傳遞控制權(quán)連同所有關(guān)于當前傳入請求的信息到aspnet_wp.exe。2個進程間的通信通過命名管道(眾所周知IPC[內(nèi)部進程通信]機制建立。ASP.NET工作進程執(zhí)行ISAPI擴展的大部分任務。注意一下每個WEB應用程序的實質(zhì),以及與IIS下不同虛擬目錄的通訊,他們在asp.net工作進程同一個進程的上下文中被執(zhí)行。為了實現(xiàn)讀取各自執(zhí)行中上下文ASP.net引入了應用程序域的概念,縮寫AppDomains.他們可以被認為是一個輕量級的進程。更多的將在后面介紹。
如果運行在IIS6上,aspnet_wp.exe進程沒有被使用,選擇一個更優(yōu)的進程叫做w3wp.exe.同時,inetinfo.exe也不再用來傳遞HTTP請求到ISAPI擴展,盡管這樣他還是保持為其他協(xié)議的請求提供服務。雖然IIS6能夠運行在兼容模式下并且模擬之前的行為,但是相對于先前的IIS5處理模型有了很多的變化。相對早期***改變,當處理模型運行在IIS5上,傳入進來的請求以lower-kernel-level形式然后傳遞到正確的ISAPI擴展,從而避免在內(nèi)部信息處理方面花費過多的操作。在下面的段落中,我們將進行更深入的研究。
IIS ASP.NET的進程模式之IIS5.0 處理模型
在windows2000以及XP系統(tǒng)上這是默認的處理模型。如上所說他有IIS inetinfo.exe進程默認在TCP端口80監(jiān)聽傳入的HTTP請求并且把他們推送進隊列等待處理。如果請求類型是asp.net,處理將委托給asp.net isapi擴展 aspnet_isapi.dll.這樣輪流通過命名管道與ASP.NET工作進程通信,最終工作進程處理并傳遞請求到asp.net HTTP運行時環(huán)境。圖表2將具體描敘這個過程。
圖表2:IIS5.0處理模型
圖表2顯示一個我們尚未提到過的元素—ASP.NET HTTP運行時環(huán)境。目前他并不是我們這編文章的主題,他將在接下來的文章中被解析。HTTP運行時可以被看作一個黑色盒子,所有ASP.NET指定處理在這里發(fā)生,所有的受管制代碼運行場所,從HTTP運行時一直到httphandler最終處理請求并生成回送都在這里被處理。這里還涉及到ASP.NET管道或HTTP運行時管道。
就這個模型有一個有趣的地方就是所有請求,一旦被ISAPI擴展處理,就被傳遞到asp.net工作進程。每次活動時間有且僅有一個進行實例,一個例外,后面討論。因此所運行在IIS上的asp.net web應用程序?qū)嶋H上也運行在工作進程上。盡管如此,這并不意味著所有應用運行在同一個上下文上并共享他們所有的數(shù)據(jù)。值得一提,asp.net引入APPDomain概念,本質(zhì)上是一種提供獨立和安全邊界的受管制輕量級進程。每個IIS虛擬目錄在一個APPDomain里執(zhí)行,他將自動加載到工作進程只要資源是屬于***次請求的應用程序。一旦appdomain被加載,換句話說,當前請求所有需要的程序集被加載到appdomain–實際上是傳遞到asp.net管道處理。若干appdomains能夠這樣運行在同樣的進程中,當多個請求對于同樣的appdomain能夠在多個線程出來。盡管如此,一個線程并不屬于一個appdomain,他能為多個不同的appdomians處理多個請求,但是同一個給定的時間一個線程屬于一個APPdomain.
處于性能目的,工作線程能夠根據(jù)一些標準(通過MACHINCE.CONFIG文件配置)被回收。這些標準包括進程生命周期,請求以及隊列數(shù)量,空閑時間,內(nèi)存分配。一旦達到這些參數(shù)中一項臨界值,ISAPI擴展將生成一個新的工作進程實例用來處理請求。實際上,先前的進程實例并沒有被關(guān)閉,但是他被終止服務等待的請求。
IIS ASP.NET的進程模式之IIS6.0處理模型
IIS6是WINDOWS2003系統(tǒng)默認的。在IIS5處理模型的上他有幾個改變和改進。其中之一***改變就是應用程序池概念。在IIS5系列應用程序上,即所有的appDomains—運行在asp.net工作進程上。為了在安全以及特性上完成一個出色的界定,IIS6處理模型允許應用程序運行在同一個工作進程的不同拷貝上。每個應用程序池能夠包含多個appdomains(運行在單獨一個工作進程拷貝上).換而言之,這個變化是從單一進程運行所有程序到多個進程運行每一個應用池。這個模型也叫做工作過程隔離模式。
例外一個大變化相對先前的模型在IIS監(jiān)聽所有傳入數(shù)據(jù)方面。在IIS5里,由IIS進程,inetinfo.exe監(jiān)聽指定的TCP端口。在IIS6中,傳入請求被處理并隊列在核心級別來替換先前通過核心驅(qū)動調(diào)用http.sys的用戶模式;這種方法有幾個優(yōu)勢相對于先前的模式被叫作 kernel-level 請求隊列。
圖表3 IIS6處理模型
圖表3主要由請求處理組成。一旦一個請求到達核心級別設備驅(qū)動http.sys,然后發(fā)送到相應的應用程序池隊列,每個隊列屬于一個指定的應用程序池。
工作進程負責加載asp.net ISAPI擴展,依次加載 CRL 委派所有工作到HTTP運行時。
W3WP.exe進程與IIS5下面的aspnet_wp.exe不同,他不是asp.net特有的,能夠用來處理任何類型的請求。什么樣的ISAPI模塊被加載類型根據(jù)需要的服務資源類型。
感謝各位的閱讀,以上就是“IIS ASP.NET的進程模式是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對IIS ASP.NET的進程模式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!