明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

.NET之ASP Web Application迅速基礎(chǔ)(4)

[摘要].NET之ASP Web Application快速入門(4)  Application 或 Session作用范圍內(nèi)的對(duì)象 在Global.asax文件中,我們可以通過(guò)object標(biāo)記定義靜態(tài)對(duì)象,這些對(duì)象可以是.NET框架類,也可以是經(jīng)典的COM組件。其作用范圍可以是appinstance、s...
.NET之ASP Web Application快速入門(4) 
Application 或 Session作用范圍內(nèi)的對(duì)象


在Global.asax文件中,我們可以通過(guò)object標(biāo)記定義靜態(tài)對(duì)象,這些對(duì)象可以是.NET框架類,也可以是經(jīng)典的COM組件。其作用范圍可以是appinstance、session或者application中的任一種。如果一個(gè)對(duì)象的作用范圍是Appinstance,就表示這個(gè)對(duì)象明確屬于HttpApplication的一個(gè)實(shí)例,并且不被共享。


請(qǐng)看下面定義對(duì)象作用范圍的例子:


<object id="id" runat="server" class=".NET
Framework class Name" scope="appinstance">

<object id="id" runat="server" progid="Classic
COM ProgID" scope="session"/>

<object id="id" runat="server" classid="Classic
COM ClassID" scope="application"/>

什么是HttpHandlers 和 factories(Http處理器和工廠)


ASP.NET提供了一套低級(jí)別的請(qǐng)求/響應(yīng)API,利用它們我們就可以使用.NET框架類服務(wù)于輸入的HTTP請(qǐng)求,它們就是HTTPHandlers
和Factories。HTTPHandlers 和Factories可以說(shuō)是ASP.NET框架的中樞。Factories(工廠)將每個(gè)請(qǐng)求分配給一個(gè)handler(處理器),由這個(gè)處理器再負(fù)責(zé)處理請(qǐng)求。具體實(shí)現(xiàn)步驟就是創(chuàng)建支持System.Web.IHTTPHandler接口的類,并執(zhí)行ProcessRequest()方法。當(dāng)不要求高級(jí)別頁(yè)面框架提取的服務(wù)處理HTTP請(qǐng)求時(shí),處理器經(jīng)常很有用途。處理器的一般用途包括過(guò)濾器和仿CGI應(yīng)用,特別是那些返回二進(jìn)制數(shù)據(jù)的應(yīng)用。

ASP.NET接收的每一個(gè)HTTP輸入請(qǐng)求最終被一個(gè)特殊的類實(shí)例IHTTPHandler所處理,IhttpHandlerFactory提供了處理器到IHTTPHandler實(shí)例的基礎(chǔ)下部組織。ASP.NET自帶3個(gè)標(biāo)準(zhǔn)的IhttpHandlerFactory類:PageHandlerFactory,RestrictedResourceFactory和WebServiceHandlerFactory。我們還可以有選擇的創(chuàng)建并注冊(cè)附加factories(工廠)以支持更豐富的請(qǐng)求決定和激活場(chǎng)合。

配置HttpHandlers 和 Factories


HTTPHandlers 和factories 作為config.web文件的一部分進(jìn)行配置。ASP.NET定義了一個(gè)"httphandlers"配置節(jié),在這里可以添加和刪除HTTPHandlers和factories。這些配置信息可以通過(guò)子目錄而繼承下來(lái)。


比如,下面這些代碼位于config.web文件的頭部,目的就是映射所有關(guān)于.aspx文件的請(qǐng)求到PageHandlerFactory類:


<httphandlers>

...

<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"
/>

...

</httphandlers>