自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

IIS ASP.NET的進(jìn)程模式淺析

開發(fā) 后端
IIS ASP.NET的進(jìn)程模式是什么呢?他們有什么區(qū)別呢?本文將會(huì)給你介紹IIS的處理模式以及ASP.NET的處理模式。

IIS ASP.NET的進(jìn)程模式有哪些呢?他們各自有什么特點(diǎn)呢?來開始我們的講解。

IIS ASP.NET的進(jìn)程模式之ASP.NET處理模型

到目前為止,我們已經(jīng)明白當(dāng)請求一個(gè)ASP.NET文件的請求傳到IIS后,他被轉(zhuǎn)遞到aspnet_isapi.dll,他是ASP.NET相關(guān)處理的主要入口點(diǎn)。實(shí)際上,這個(gè)擴(kuò)展明顯依賴于系統(tǒng)上IIS的版本,因此處理模型是通過asp.net運(yùn)行時(shí)通過有序的操作執(zhí)行來處理請求并生成回送,也許有那么一點(diǎn)改變。

在IIS5.X,所有asp.net相關(guān)請求通過ISAPI擴(kuò)展被分配到外部工作進(jìn)程叫做aspnet_wp.exe.ISAPI擴(kuò)展,在IIS進(jìn)程(inetinfo.exe)中運(yùn)行,再傳遞控制權(quán)連同所有關(guān)于當(dāng)前傳入請求的信息到aspnet_wp.exe。2個(gè)進(jìn)程間的通信通過命名管道(眾所周知IPC[內(nèi)部進(jìn)程通信]機(jī)制建立。ASP.NET工作進(jìn)程執(zhí)行ISAPI擴(kuò)展的大部分任務(wù)。注意一下每個(gè)WEB應(yīng)用程序的實(shí)質(zhì),以及與IIS下不同虛擬目錄的通訊,他們在asp.net工作進(jìn)程同一個(gè)進(jìn)程的上下文中被執(zhí)行。為了實(shí)現(xiàn)讀取各自執(zhí)行中上下文ASP.net引入了應(yīng)用程序域的概念,縮寫AppDomains.他們可以被認(rèn)為是一個(gè)輕量級的進(jìn)程。更多的將在后面介紹。

如果運(yùn)行在IIS6上,aspnet_wp.exe進(jìn)程沒有被使用,選擇一個(gè)更優(yōu)的進(jìn)程叫做w3wp.exe.同時(shí),inetinfo.exe也不再用來傳遞HTTP請求到ISAPI擴(kuò)展,盡管這樣他還是保持為其他協(xié)議的請求提供服務(wù)。雖然IIS6能夠運(yùn)行在兼容模式下并且模擬之前的行為,但是相對于先前的IIS5處理模型有了很多的變化。相對早期***改變,當(dāng)處理模型運(yùn)行在IIS5上,傳入進(jìn)來的請求以lower-kernel-level形式然后傳遞到正確的ISAPI擴(kuò)展,從而避免在內(nèi)部信息處理方面花費(fèi)過多的操作。在下面的段落中,我們將進(jìn)行更深入的研究。

IIS ASP.NET的進(jìn)程模式之IIS5.0 處理模型

在windows2000以及XP系統(tǒng)上這是默認(rèn)的處理模型。如上所說他有IIS inetinfo.exe進(jìn)程默認(rèn)在TCP端口80監(jiān)聽傳入的HTTP請求并且把他們推送進(jìn)隊(duì)列等待處理。如果請求類型是asp.net,處理將委托給asp.net isapi擴(kuò)展 aspnet_isapi.dll.這樣輪流通過命名管道與ASP.NET工作進(jìn)程通信,最終工作進(jìn)程處理并傳遞請求到asp.net HTTP運(yùn)行時(shí)環(huán)境。圖表2將具體描敘這個(gè)過程。

圖表2:IIS5.0處理模型

IIS5.0處理模型 

圖表2顯示一個(gè)我們尚未提到過的元素—ASP.NET HTTP運(yùn)行時(shí)環(huán)境。目前他并不是我們這編文章的主題,他將在接下來的文章中被解析。HTTP運(yùn)行時(shí)可以被看作一個(gè)黑色盒子,所有ASP.NET指定處理在這里發(fā)生,所有的受管制代碼運(yùn)行場所,從HTTP運(yùn)行時(shí)一直到httphandler最終處理請求并生成回送都在這里被處理。這里還涉及到ASP.NET管道或HTTP運(yùn)行時(shí)管道。

就這個(gè)模型有一個(gè)有趣的地方就是所有請求,一旦被ISAPI擴(kuò)展處理,就被傳遞到asp.net工作進(jìn)程。每次活動(dòng)時(shí)間有且僅有一個(gè)進(jìn)行實(shí)例,一個(gè)例外,后面討論。因此所運(yùn)行在IIS上的asp.net web應(yīng)用程序?qū)嶋H上也運(yùn)行在工作進(jìn)程上。盡管如此,這并不意味著所有應(yīng)用運(yùn)行在同一個(gè)上下文上并共享他們所有的數(shù)據(jù)。值得一提,asp.net引入APPDomain概念,本質(zhì)上是一種提供獨(dú)立和安全邊界的受管制輕量級進(jìn)程。每個(gè)IIS虛擬目錄在一個(gè)APPDomain里執(zhí)行,他將自動(dòng)加載到工作進(jìn)程只要資源是屬于***次請求的應(yīng)用程序。一旦appdomain被加載,換句話說,當(dāng)前請求所有需要的程序集被加載到appdomain–實(shí)際上是傳遞到asp.net管道處理。若干appdomains能夠這樣運(yùn)行在同樣的進(jìn)程中,當(dāng)多個(gè)請求對于同樣的appdomain能夠在多個(gè)線程出來。盡管如此,一個(gè)線程并不屬于一個(gè)appdomain,他能為多個(gè)不同的appdomians處理多個(gè)請求,但是同一個(gè)給定的時(shí)間一個(gè)線程屬于一個(gè)APPdomain.

處于性能目的,工作線程能夠根據(jù)一些標(biāo)準(zhǔn)(通過MACHINCE.CONFIG文件配置)被回收。這些標(biāo)準(zhǔn)包括進(jìn)程生命周期,請求以及隊(duì)列數(shù)量,空閑時(shí)間,內(nèi)存分配。一旦達(dá)到這些參數(shù)中一項(xiàng)臨界值,ISAPI擴(kuò)展將生成一個(gè)新的工作進(jìn)程實(shí)例用來處理請求。實(shí)際上,先前的進(jìn)程實(shí)例并沒有被關(guān)閉,但是他被終止服務(wù)等待的請求。

IIS ASP.NET的進(jìn)程模式之IIS6.0處理模型

IIS6是WINDOWS2003系統(tǒng)默認(rèn)的。在IIS5處理模型的上他有幾個(gè)改變和改進(jìn)。其中之一***改變就是應(yīng)用程序池概念。在IIS5系列應(yīng)用程序上,即所有的appDomains—運(yùn)行在asp.net工作進(jìn)程上。為了在安全以及特性上完成一個(gè)出色的界定,IIS6處理模型允許應(yīng)用程序運(yùn)行在同一個(gè)工作進(jìn)程的不同拷貝上。每個(gè)應(yīng)用程序池能夠包含多個(gè)appdomains(運(yùn)行在單獨(dú)一個(gè)工作進(jìn)程拷貝上).換而言之,這個(gè)變化是從單一進(jìn)程運(yùn)行所有程序到多個(gè)進(jìn)程運(yùn)行每一個(gè)應(yīng)用池。這個(gè)模型也叫做工作過程隔離模式。

例外一個(gè)大變化相對先前的模型在IIS監(jiān)聽所有傳入數(shù)據(jù)方面。在IIS5里,由IIS進(jìn)程,inetinfo.exe監(jiān)聽指定的TCP端口。在IIS6中,傳入請求被處理并隊(duì)列在核心級別來替換先前通過核心驅(qū)動(dòng)調(diào)用http.sys的用戶模式;這種方法有幾個(gè)優(yōu)勢相對于先前的模式被叫作 kernel-level 請求隊(duì)列。

圖表3 IIS6處理模型

IIS6處理模型 

圖表3主要由請求處理組成。一旦一個(gè)請求到達(dá)核心級別設(shè)備驅(qū)動(dòng)http.sys,然后發(fā)送到相應(yīng)的應(yīng)用程序池隊(duì)列,每個(gè)隊(duì)列屬于一個(gè)指定的應(yīng)用程序池。

工作進(jìn)程負(fù)責(zé)加載asp.net ISAPI擴(kuò)展,依次加載 CRL 委派所有工作到HTTP運(yùn)行時(shí)。

W3WP.exe進(jìn)程與IIS5下面的aspnet_wp.exe不同,他不是asp.net特有的,能夠用來處理任何類型的請求。什么樣的ISAPI模塊被加載類型根據(jù)需要的服務(wù)資源類型。

IIS ASP.NET的進(jìn)程模式就向你就介紹到這里,希望對你有所幫助。

【編輯推薦】

  1. ASP.NET實(shí)現(xiàn)靜態(tài)頁面方法淺析
  2. ASP.NET連接字符串的遍歷淺析
  3. ASP.NET緩存的種類及特點(diǎn)淺析
  4. ASP.NET頁面跳轉(zhuǎn)的三大方法詳解
  5. IIS ASP.NET的本質(zhì)與聯(lián)系淺析
責(zé)任編輯:仲衡 來源: 博客堂
相關(guān)推薦

2009-07-28 10:59:13

ASP.NET IIS

2009-07-24 13:41:03

IIS ASP.NET

2009-07-21 14:32:51

ASP.NET進(jìn)程模型

2009-07-27 10:18:12

TypeResolveASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET優(yōu)點(diǎn)

2009-07-30 13:45:40

ASP.NET開發(fā)模式MVC模式

2009-07-27 15:34:11

MembershipASP.NET

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 18:36:12

ASP.NET Che

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-07-22 18:03:00

ASP.NET ASP

2009-07-24 11:15:36

IIS ISAPI eASP.NET

2009-07-20 16:23:01

ASP.NET授權(quán)模塊

2009-08-04 17:00:09

ASP.NET禁用Vi

2009-07-23 14:31:20

ASP.NET MVC

2009-07-28 16:40:11

ASP.NET異步頁面

2009-07-28 15:53:43

ASP.NET Web

2009-08-05 14:46:17

ASP.NET url

2009-07-28 13:35:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號