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

ASP.NET Web Garden模型

開發(fā) 后端
本文介紹ASP.NET Web Garden模型,Web Garden模型可以通過 machine.config 文件中的 <processModel> 部分進(jìn)行配置。

Web Garden模型

Web Garden模型可以通過 machine.config 文件中的 <processModel> 部分進(jìn)行配置。請(qǐng)注意,<processModel> 部分是唯一不能放在應(yīng)用程序特定的 web.config 文件中的配置部分。這就是說,Web Garden 模式可以應(yīng)用到計(jì)算機(jī)中運(yùn)行的所有應(yīng)用程序。但通過使用 machine.config 源文件中的 <location> 節(jié)點(diǎn),可以針對(duì)各個(gè)應(yīng)用程序調(diào)節(jié)計(jì)算機(jī)的設(shè)置。

<processModel> 部分有兩個(gè)屬性可以影響 Web Garden模型,它們是 Web Garden 和 cpuMask。Web Garden 屬性接受布爾值,表示是否使用了多個(gè)輔助進(jìn)程(一個(gè)相關(guān)的 CPU 對(duì)應(yīng)一個(gè)進(jìn)程)。默認(rèn)情況下,該屬性的值為 false。cpuMask 屬性保存一個(gè) DWORD 值,該值的二進(jìn)制表示為能夠運(yùn)行 ASP.NET 輔助進(jìn)程的 CPU 提供了位屏蔽。其默認(rèn)值為 -1 (0xFFFFFF),表示可以使用所有可用的 CPU。如果 Web Garden 屬性為 false,則 cpuMask 屬性的內(nèi)容將被忽略。cpuMask 屬性還為正在運(yùn)行的 aspnet_wp.exe 的副本數(shù)設(shè)置了上限。

常言道“閃光的不都是金子”,用在這里很合適。Web Garden 模式使得多個(gè)輔助進(jìn)程可以同時(shí)運(yùn)行。但是,需要注意的是所有進(jìn)程都會(huì)有自己的應(yīng)用程序狀態(tài)、進(jìn)程內(nèi)會(huì)話狀態(tài)、ASP.NET 緩存、靜態(tài)數(shù)據(jù)以及運(yùn)行應(yīng)用程序所需的其他內(nèi)容。啟用 Web Garden 模式之后,ASP.NET ISAPI 將根據(jù) CPU 的數(shù)量盡可能多地啟動(dòng)輔助進(jìn)程,每個(gè)輔助進(jìn)程都是下一進(jìn)程的完整克?。恳贿M(jìn)程都與相應(yīng)的 CPU 密切相關(guān))。為平衡工作負(fù)荷,傳入的請(qǐng)求以單循環(huán)的方式在運(yùn)行的進(jìn)程之間進(jìn)行劃分。輔助進(jìn)程就象在單處理器中一樣被回收。請(qǐng)注意,ASP.NET 繼承了操作系統(tǒng)中所有的 CPU 使用限制,并且不包括實(shí)現(xiàn)限制的自定義語義。

總之,Web Garden模型并不適用于所有應(yīng)用程序。應(yīng)用程序的狀態(tài)越多,其的性能損失也越多。工作數(shù)據(jù)存儲(chǔ)在共享內(nèi)存的塊中,以便一個(gè)進(jìn)程輸入的變化可以立即被其他進(jìn)程得知。但是,處理請(qǐng)求時(shí),工作數(shù)據(jù)被復(fù)制到進(jìn)程的上下文中。因此,各個(gè)輔助進(jìn)程將處理自己的工作數(shù)據(jù),而應(yīng)用程序的狀態(tài)越多,性能損失就越大。鑒于此,仔細(xì)、明智的應(yīng)用程序基準(zhǔn)測(cè)試是絕對(duì)必要的。

只有重啟 IIS 后,對(duì)配置文件中 <processModel> 部分所做的更改才會(huì)生效。在 IIS 6 中,Web Garden 模式的參數(shù)保存在 IIS 配置數(shù)據(jù)庫中,Web Garden 和 cpuMask 屬性被忽略。
HTTP 管道

ASP.NET ISAPI 擴(kuò)展啟動(dòng)輔助進(jìn)程后,它將傳遞部分命令行參數(shù)。輔助進(jìn)程使用這些參數(shù)來執(zhí)行加載 CLR 前需要執(zhí)行的任務(wù)。傳遞的值包括:COM 和 DCOM 安全性所要求的身份驗(yàn)證等級(jí)、可以使用的命名管道的數(shù)量和 IIS 進(jìn)程標(biāo)識(shí)。命名管道的名稱是使用 IIS 進(jìn)程標(biāo)識(shí)和允許的管道數(shù)隨機(jī)生成的。輔助進(jìn)程不接收可用管道的名稱,但可以接收識(shí)別管道名稱所需的信息。

COM 和 DCOM 安全性與 Microsoft® .NET Framework 有何關(guān)系?實(shí)際上,CLR 是作為 COM 對(duì)象提供的。更準(zhǔn)確地說,CLR 本身不是由 COM 代碼構(gòu)成的,但是指向 CLR 的接口卻是一個(gè) COM 對(duì)象。因此,輔助進(jìn)程加載 CLR 的方式與加載 COM 對(duì)象的方式相同。

當(dāng) ASPX 請(qǐng)求遇到 IIS 時(shí),Web 服務(wù)器將根據(jù)選擇的身份驗(yàn)證模型(匿名、Windows、Basic 或 Digest)來分配一個(gè)令牌。當(dāng)輔助進(jìn)程收到要處理的請(qǐng)求時(shí),令牌被傳遞到輔助進(jìn)程。請(qǐng)求由輔助進(jìn)程中的線程獲取。該線程從最初獲取傳入請(qǐng)求的 IIS 線程繼承身份令牌。在 aspnet_wp.exe 中,負(fù)責(zé)處理請(qǐng)求的實(shí)際帳戶取決于在特殊的 ASP.NET 應(yīng)用程序中是如何配置模擬的。如果模擬被禁用(默認(rèn)設(shè)置),則線程將在輔助進(jìn)程的帳戶下運(yùn)行。默認(rèn)情況下,該帳戶在 ASP.NET 進(jìn)程模型中為 ASPNET,在 IIS 6 進(jìn)程模型中為 NETWORKSERVICE。這兩個(gè)帳戶都是“弱”帳戶,提供的功能比較有限,可以有效抵擋回復(fù)性攻擊 (Revert-to-self Attack)。(回復(fù)性攻擊是指將模擬的客戶端的安全性令牌回復(fù)到父進(jìn)程令牌。為輔助進(jìn)程分配弱帳戶可以挫敗此類攻擊。)

高度概括起來,ASP.NET 輔助進(jìn)程完成的一項(xiàng)主要任務(wù)就是將請(qǐng)求交給一系列稱為的 HTTP 管道的托管對(duì)象。要激活 HTTP 管道,可以創(chuàng)建一個(gè) HttpRuntime 類的新實(shí)例,然后調(diào)用其 ProcessRequest 方法。如前所述,ASP.NET 中始終只運(yùn)行一個(gè)輔助進(jìn)程(除非啟用了 Web Garden模型),該進(jìn)程在獨(dú)立的 AppDomain 中管理所有的 Web 應(yīng)用程序。每個(gè) AppDomain 都有自己的 HttpRuntime 類實(shí)例,即管道中的輸入點(diǎn)。HttpRuntime 對(duì)象初始化一系列有助于實(shí)現(xiàn)請(qǐng)求的內(nèi)部對(duì)象。Helper 對(duì)象包括緩存管理器(Cache 對(duì)象)和內(nèi)部文件系統(tǒng)監(jiān)視器(用于檢測(cè)構(gòu)成應(yīng)用程序的源文件的更改)。HttpRuntime 為請(qǐng)求創(chuàng)建上下文,并用與請(qǐng)求相關(guān)的 HTTP 信息填充上下文。上下文用 HttpContext 類的實(shí)例來表示。

另一個(gè)在 HTTP 運(yùn)行時(shí)的設(shè)置初期創(chuàng)建的 Helper 對(duì)象是文本書寫器,用于包含瀏覽器的響應(yīng)文本。文本書寫器是 HttpWriter 類的實(shí)例,此對(duì)象對(duì)頁面代碼以編程方式發(fā)送的文本進(jìn)行緩存。HTTP 運(yùn)行時(shí)被初始化后,它將查找實(shí)現(xiàn)請(qǐng)求的應(yīng)用程序?qū)ο蟆?yīng)用程序?qū)ο笫?HttpApplication 類的實(shí)例,該類就是 global.asax 文件背后的類。global.asax 在編程時(shí)是可選的,但在構(gòu)建結(jié)構(gòu)時(shí)是必需的。因此,如果應(yīng)用程序中沒有構(gòu)建類,則必須使用默認(rèn)對(duì)象。ASP.NET 運(yùn)行時(shí)包括幾個(gè)中間工廠類,可以用來查找并返回有效的 Handler 對(duì)象以處理請(qǐng)求。整個(gè)過程中用到的第一個(gè)工廠類是 HttpApplicationFactory。它的主要任務(wù)是使用 URL 信息來查找 URL 虛擬目錄和匯集的 HttpApplication 對(duì)象之間的匹配關(guān)系。

應(yīng)用程序工廠類的行為可以概括為以下幾點(diǎn):

1. 工廠類維護(hù) HttpApplication 對(duì)象池,并使用它們來處理應(yīng)用程序的請(qǐng)求。池的壽命與應(yīng)用程序的壽命相同。
2. 應(yīng)用程序的第一個(gè)請(qǐng)求到達(dá)時(shí),工廠類提取有關(guān)應(yīng)用程序類型的信息(global.asax 類)、設(shè)置用于監(jiān)視更改的文件、創(chuàng)建應(yīng)用程序狀態(tài)并觸發(fā) Application_OnStart 事件。
3. 工廠類從池中獲取一個(gè) HttpApplication 實(shí)例,并將要處理的請(qǐng)求放入實(shí)例中。如果沒有可用的對(duì)象,則創(chuàng)建一個(gè)新的 HttpApplication 對(duì)象。要?jiǎng)?chuàng)建 HttpApplication 對(duì)象,需要先完成 global.asax 應(yīng)用程序文件的編譯。
4. HttpApplication 開始處理請(qǐng)求,并且只能在完成這個(gè)請(qǐng)求后才能處理新的請(qǐng)求。如果收到來自同一資源的新請(qǐng)求,則由池中的其他對(duì)象來處理。
5. 應(yīng)用程序?qū)ο笤试S所有注冊(cè)的 HTTP 模塊對(duì)請(qǐng)求進(jìn)行預(yù)處理,并找出最適合處理請(qǐng)求的處理程序類型。這通過查找請(qǐng)求的 URL 的擴(kuò)展和配置文件中的信息來完成。

HTTP 處理程序是一些實(shí)現(xiàn) IHttpHandler 接口的類。.NET Framework 為常見的資源類型提供了一些預(yù)定義的處理程序,包括 ASPX 頁面和 Web 服務(wù)。machine.config 文件中的 <httpHandlers> 部分定義了 HttpApplication 對(duì)象必須實(shí)例化才能處理特定類型資源的請(qǐng)求的類名。如果 Helper 類是一個(gè)處理程序工廠,GetHandler 方法將確定要使用的處理程序類型。這時(shí),將從一組類似的對(duì)象中獲取適當(dāng)類型的處理程序,并對(duì)其進(jìn)行配置以處理請(qǐng)求。

【編輯推薦】

  1. 淺析ASP.NET Web 安全性
  2. ASP.NET的Session State
  3. 淺析IsPostBack屬性ASP.NET
  4. ASP.NET構(gòu)架與安全機(jī)制
  5. 概述ASP.NET水晶報(bào)表
責(zé)任編輯:佚名 來源: cnbolgs
相關(guān)推薦

2009-07-24 10:41:00

ASP.NET Web

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-28 15:53:43

ASP.NET Web

2009-08-04 11:19:30

Web ResourcASP.NET 2.0

2009-08-03 13:38:18

ASP.NET編程模型

2009-07-23 18:56:50

ASP.NET Ses

2009-07-28 16:29:06

XML Web服務(wù)ASP.NET構(gòu)造

2009-07-28 17:34:28

ASP.NET XML

2009-07-23 15:18:30

創(chuàng)建XML Web服務(wù)ASP.NET

2009-07-24 16:05:05

調(diào)用Web ServiASP.NET

2009-07-29 09:38:06

Web開發(fā)ASP.NET

2009-07-21 14:32:51

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

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-08-03 14:18:40

ASP.NET編程模型ASP.NET頁面生命

2009-07-22 17:45:35

ASP.NET教程

2009-08-05 14:11:56

ASP.NET Web

2009-07-27 13:39:06

Web窗體頁ASP.NET

2009-07-23 15:11:43

XML Web服務(wù)方法ASP.NET

2009-07-27 13:43:11

Web.config文ASP.NET
點(diǎn)贊
收藏

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