偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

ASP.NET ISAPI

開(kāi)發(fā) 后端
本文介紹當(dāng) ASP.NET ISAPI 在 IIS 6 進(jìn)程模型中運(yùn)行時(shí),它的工作方式有所不同,僅在 w3wp.exe 輔助進(jìn)程的上下文中加載 CLR。

不管使用哪種底層平臺(tái),可靠性和性能都是對(duì)所有 Web 應(yīng)用程序的主要要求,盡管從某種意義上講,這兩個(gè)要求是相互矛盾的。例如,要構(gòu)建更可靠、更健壯的應(yīng)用程序,可能需要將 Web 服務(wù)器與具體的應(yīng)用程序分離,使應(yīng)用程序在進(jìn)程外工作。但是,如果在不同于 Web 服務(wù)器進(jìn)程的內(nèi)存環(huán)境中工作,應(yīng)用程序?qū)⒆兟R虼?,需要采取合理的措施,以確保進(jìn)程外代碼盡可能快地運(yùn)行。

在構(gòu)建 Microsoft® ASP.NET 運(yùn)行時(shí)環(huán)境時(shí),依據(jù)的設(shè)計(jì)原則即:充分考慮可靠性和性能。得到的 ASP.NET 進(jìn)程模型包含了兩個(gè)系統(tǒng)元素 - 一個(gè)存在于 Web 服務(wù)器進(jìn)程中的進(jìn)程內(nèi)連接器,一個(gè)外部的輔助進(jìn)程。另外,ASP.NET 運(yùn)行時(shí)結(jié)構(gòu)的可伸縮能力很強(qiáng),可以自動(dòng)使用多處理器硬件中任意選定的處理器。這種模式被稱(chēng)為“Web Garden”,它可以使多個(gè)輔助進(jìn)程同時(shí)運(yùn)行,而且各個(gè)進(jìn)程均在獨(dú)立的處理器中。

高度概括起來(lái),ASP.NET 運(yùn)行時(shí)具有三大屬性:

◆應(yīng)用程序和 ASP.NET 輔助進(jìn)程之間完全分離。提供服務(wù)的輔助進(jìn)程的壽命決不會(huì)影響應(yīng)用程序的壽命。換句話(huà)說(shuō),當(dāng)應(yīng)用程序啟動(dòng)并處于運(yùn)行狀態(tài)時(shí),輔助進(jìn)程可以隨時(shí)終止。
◆盡管 ASP.NET 應(yīng)用程序從不在 Web 服務(wù)器內(nèi)采用進(jìn)程內(nèi)的方式運(yùn)行,但大多數(shù)情況下,其總體性能仍接近于進(jìn)程內(nèi)應(yīng)用程序的性能。
◆為 Web Garden 體系結(jié)構(gòu)提供了內(nèi)置的和可配置的支持。只要簡(jiǎn)單檢查一下配置文件中的設(shè)置,輔助進(jìn)程就可以克隆自己,以利用所有與進(jìn)程密切相關(guān)的 CPU。因此,在大多數(shù)情況下,您在具備多處理器的計(jì)算機(jī)中獲得的可縮放性將呈線(xiàn)性增長(zhǎng)的趨勢(shì)。(本文后面將詳細(xì)介紹此內(nèi)容。)

本文將介紹 ASP.NET 運(yùn)行時(shí)環(huán)境的組成元素,然后一步一步地講述從 URL 請(qǐng)求變?yōu)榧?HTML 文本的“漫長(zhǎng)而曲折”的過(guò)程。

除非另有說(shuō)明,否則以下介紹中均指 ASP.NET 的默認(rèn)進(jìn)程模型,即 Microsoft® Internet Information Services (IIS) 5.x 中唯一的模型。
ASP.NET 結(jié)構(gòu)的組件

執(zhí)行 ASP.NET 應(yīng)用程序需要宿主 Web 服務(wù)器的支持。在 Microsoft® Windows® 的 Server 平臺(tái)中,Web 服務(wù)器由名為 inetinfo.exe 的 IIS 可執(zhí)行文件表示。Windows 2000 及以上版本的操作系統(tǒng)本身均提供了 Web 服務(wù)器。但需要注意,在 Microsoft® Windows Server™ 2003 中,并未默認(rèn)安裝 IIS 和 ASP.NET,必須通過(guò)單擊“控制面板”中的“添加或刪除程序”小程序?qū)⑵涮砑拥较到y(tǒng)中。

IIS 是一個(gè)未托管的可執(zhí)行程序,它提供了一個(gè)基于 ISAPI 擴(kuò)展模塊和篩選器模塊的可擴(kuò)展模型。通過(guò)編寫(xiě)此類(lèi)模塊,開(kāi)發(fā)人員可以直接管理對(duì)特定資源類(lèi)型的請(qǐng)求,并在各個(gè)預(yù)定義的步驟中接收當(dāng)前請(qǐng)求。擴(kuò)展和篩選器是一些 DLL,可以導(dǎo)出一些具有已知名稱(chēng)和簽名的函數(shù)。這些插件組件是在 IIS 配置數(shù)據(jù)庫(kù)中注冊(cè)并配置的。

只有少數(shù)幾種被客戶(hù)端請(qǐng)求的資源類(lèi)型由 IIS 直接處理。例如,對(duì) HTML 頁(yè)面、文本文件、JPEG 和 GIF 圖像的傳入請(qǐng)求由 IIS 處理。對(duì) Active Server Page (*.asp) 文件的請(qǐng)求通過(guò)調(diào)用名為 asp.dll 的 ASP 專(zhuān)用擴(kuò)展模塊進(jìn)行解析。同樣,對(duì) ASP.NET 資源(例如,*.aspx、*.asmx、*.ashx)的請(qǐng)求將傳遞到 ASP.NET ISAPI 擴(kuò)展。該系統(tǒng)組件是一個(gè)名為 aspnet_isapi.dll 的 Win32 DLL。ASP.NET 擴(kuò)展可以處理多種資源類(lèi)型,包括 Web 服務(wù)和 HTTP 處理程序調(diào)用。

ASP.NET ISAPI 擴(kuò)展是一個(gè) Win32 DLL,未集成托管代碼。它是接收和分派對(duì)各種 ASP.NET 資源的請(qǐng)求的控制中心。按照設(shè)計(jì),該模塊存在于 IIS 進(jìn)程中,在具有管理員權(quán)限的 SYSTEM 帳戶(hù)下運(yùn)行。開(kāi)發(fā)人員和系統(tǒng)管理員不能修改此帳戶(hù)。ASP.NET ISAPI 擴(kuò)展負(fù)責(zé)調(diào)用 ASP.NET 輔助進(jìn)程 (aspnet_wp.exe),而該進(jìn)程又負(fù)責(zé)控制請(qǐng)求的執(zhí)行。除了對(duì)請(qǐng)求進(jìn)行安排以外,ASP.NET ISAPI 還監(jiān)視輔助進(jìn)程的運(yùn)行情況,并在性能降低到一定程度時(shí)將進(jìn)程取消。

輔助進(jìn)程是一小段 Win32 shell 代碼,集成了公共語(yǔ)言運(yùn)行庫(kù) (CLR) 并運(yùn)行托管代碼。它負(fù)責(zé)處理對(duì) ASPX、ASMX 和 ASHX 資源的請(qǐng)求。一般來(lái)說(shuō),此進(jìn)程在一臺(tái)給定的計(jì)算機(jī)中只有一個(gè)實(shí)例。所有當(dāng)前激活的 ASP.NET 應(yīng)用程序均在其中運(yùn)行,每個(gè)應(yīng)用程序都位于一個(gè)獨(dú)立的 AppDomain 中。但是,如前所述,輔助進(jìn)程支持 Web Garden 模式,即進(jìn)程的相同副本都運(yùn)行在與進(jìn)程密切相關(guān)的 CPU 中。(更多內(nèi)容,請(qǐng)參閱本文后面的“Web Garden 模型”部分。)

ISAPI 和輔助進(jìn)程之間的通訊是使用一組命名管道進(jìn)行的。命名管道是一種 Win32 機(jī)制,用于跨進(jìn)程邊界傳輸數(shù)據(jù)。顧名思義,命名管道的工作方式與管道相似:在一端輸入數(shù)據(jù),在另一端輸出相同的數(shù)據(jù)。建立的管道既可以連接本地進(jìn)程,也可以連接遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的進(jìn)程。對(duì)于本地進(jìn)程間通訊,管道是 Windows 中的最有效、最靈活的工具。

為確保獲得最優(yōu)性能,aspnet_isapi 使用異步命名管道來(lái)將請(qǐng)求轉(zhuǎn)發(fā)給輔助進(jìn)程并獲得響應(yīng)。另一方面,輔助進(jìn)程在需要查詢(xún)有關(guān) IIS 環(huán)境的信息(即服務(wù)器變量)時(shí)又使用同步管道。aspnet_isapi 模塊創(chuàng)建固定數(shù)量的命名管道,并使用重疊的操作以通過(guò)小的線(xiàn)程池處理同一時(shí)間進(jìn)行的連接。當(dāng)通過(guò)管道進(jìn)行的數(shù)據(jù)交換操作結(jié)束后,完成例程將斷開(kāi)客戶(hù)端,并重新使用管道實(shí)例為新的客戶(hù)端服務(wù)。線(xiàn)程池和重疊操作均可以保證使 ASP.NET ISAPI 的性能達(dá)到令人滿(mǎn)意的水平。但是,aspnet_isapi 擴(kuò)展決不會(huì)處理 HTTP 請(qǐng)求。

ASP.NET 請(qǐng)求的處理邏輯可以概括為以下步驟。

1. 當(dāng)請(qǐng)求到達(dá)時(shí),IIS 檢查資源類(lèi)型并調(diào)用 ASP.NET ISAPI 擴(kuò)展。如果啟用了默認(rèn)的進(jìn)程模型,aspnet_isapi 會(huì)將請(qǐng)求排隊(duì),并將請(qǐng)求分配給輔助進(jìn)程。所有的請(qǐng)求數(shù)據(jù)都通過(guò)異步 I/O 發(fā)送。如果啟用了 IIS 6 進(jìn)程模型,請(qǐng)求將自動(dòng)在輔助進(jìn)程 (w3wp.exe) 中排隊(duì),此輔助進(jìn)程用于處理應(yīng)用程序所屬的 IIS 應(yīng)用程序池。IIS 6 輔助進(jìn)程不了解 ASP.NET 和托管代碼的任何情況,它只是處理 *.aspx 擴(kuò)展并加載 aspnet_isapi 模塊。當(dāng) ASP.NET ISAPI 在 IIS 6 進(jìn)程模型中運(yùn)行時(shí),它的工作方式有所不同,僅在 w3wp.exe 輔助進(jìn)程的上下文中加載 CLR。
2. 收到請(qǐng)求后,ASP.NET 輔助進(jìn)程將通知 ASP.NET ISAPI,它將為請(qǐng)求服務(wù)。通知通過(guò)同步 I/O 實(shí)現(xiàn)。之所以使用同步模型,是因?yàn)檎?qǐng)求只有在 ISAPI 內(nèi)部請(qǐng)求表中被標(biāo)記為“executing”,輔助進(jìn)程才能開(kāi)始處理它。如果請(qǐng)求已經(jīng)由特殊的輔助進(jìn)程進(jìn)行處理,則不能再將它指定到其他進(jìn)程,除非原始進(jìn)程已取消。
3. 在輔助進(jìn)程的上下文中執(zhí)行請(qǐng)求。有時(shí),輔助進(jìn)程可能需要回調(diào) ISAPI 以完成請(qǐng)求,也就是需要說(shuō)枚舉服務(wù)器變量。這種情況下,輔助進(jìn)程將使用同步管道,因?yàn)檫@樣可以保持請(qǐng)求處理邏輯的順序。
4. 完成后,響應(yīng)被發(fā)送到打開(kāi)了異步管道的 aspnet_isapi?,F(xiàn)在,請(qǐng)求的狀態(tài)變?yōu)椤癉one”,之后將從請(qǐng)求表中被刪除。如果輔助進(jìn)程崩潰,正在處理的所有請(qǐng)求仍將保持 “executing”狀態(tài)并持續(xù)一段時(shí)間。如果 aspnet_isapi 檢測(cè)到輔助進(jìn)程已取消,它將自動(dòng)終止請(qǐng)求并釋放所有相關(guān)的 IIS 資源。

【編輯推薦】

  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é)任編輯:佚名 來(lái)源: cnbolgs
相關(guān)推薦

2009-08-05 11:14:33

ASP.NET ISA

2009-07-24 10:52:42

ASP.NET ISA

2009-07-24 11:15:36

IIS ISAPI eASP.NET

2009-07-24 10:57:41

ASP.NET ISAIIS6

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門(mén)教程

2009-08-10 13:32:15

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

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 13:38:18

ASP.NET編程模型

2009-07-28 09:02:32

asp.net aja

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-12-02 09:07:45

ASP.NET 4.0

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-22 16:25:41

ASP.NET AJA

2009-07-23 14:17:41

2009-07-24 13:20:44

MVC框架ASP.NET
點(diǎn)贊
收藏

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