ASP 3.0對(duì)ASP 2.0的改進(jìn)
發(fā)表時(shí)間:2024-06-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]ASP 3.0對(duì)ASP 2.0的改進(jìn)下面的一些特征是從2.0版本中改進(jìn)或升級(jí)來的。1、 緩沖缺省為打開狀態(tài)ASP提供可選的輸出緩沖。從IIS 4.0開始,這使得腳本執(zhí)行得更快,并提供對(duì)流向?yàn)g覽器的輸出的控制能力。在ASP 3.0這個(gè)改進(jìn)的性能通過改變Reponse.Buffer屬性的缺省設(shè)置為Tr...
ASP 3.0對(duì)ASP 2.0的改進(jìn)
下面的一些特征是從2.0版本中改進(jìn)或升級(jí)來的。
1、 緩沖缺省為打開狀態(tài)
ASP提供可選的輸出緩沖。從IIS 4.0開始,這使得腳本執(zhí)行得更快,并提供對(duì)流向?yàn)g覽器的輸出的控制能力。在ASP 3.0這個(gè)改進(jìn)的性能通過改變Reponse.Buffer屬性的缺省設(shè)置為True而反映出來。缺省狀態(tài)下緩沖是打開的,這意味著最終輸出只有在進(jìn)程完成時(shí),或腳本調(diào)用Response.Flush或Response.End方法時(shí),才送至客戶端。
注意,可以通過設(shè)置Response.Buffer屬性為False,關(guān)閉緩沖。只有這樣,才能發(fā)送XML格式化輸出給客戶端,讓XML分析器在收到輸出后開始工作。也可以使用Response.Flush發(fā)送大頁面的一部分,這樣使用戶可以很快看到部分輸出。
2、 Response.IsClientConnected的變化
Response.IsClientConnected屬性可以在沒有任何內(nèi)容發(fā)送給客戶端的情況下被讀取到。在ASP 2.0中,這只在至少有一部分內(nèi)容被發(fā)送后才能返回準(zhǔn)確的信息。這一改進(jìn)解決了IIS必須響應(yīng)每個(gè)客戶的請(qǐng)求(即使客戶可能已經(jīng)轉(zhuǎn)移到另一個(gè)頁面或站點(diǎn))的問題。同時(shí)如客戶在3秒內(nèi)沒有再連接,服務(wù)器上創(chuàng)建的完整的輸出信息將被丟棄。
3、 帶有默認(rèn)文檔的查詢字符串
假如一個(gè)用戶訪問一個(gè)站點(diǎn)而不提供所請(qǐng)求頁面的名字,默認(rèn)的文檔(如存在的話)將被送往客戶端。然而假如他們提供了附在URL后面的查詢字符串,這在早先的ASP版本中是被忽略的,而在IIS 5.0和ASP 3.0中這個(gè)查詢字符串將被送到缺省頁面。例如,在一個(gè)URL為:http://www.wrox.com/store/的目錄中缺省頁面為default.asp,則下面這兩種情況都將名稱/值對(duì)Code=1274送往default.asp頁面:
http://www.wrox.com/store/?code=1274
http://www.wrox.com/store/default.asp?code=1274
4、 服務(wù)器端包含文件的安全性
服務(wù)器端的包含文件常用于一些敏感的信息,如數(shù)據(jù)庫連接字符串或其他訪問細(xì)節(jié)。一個(gè)虛擬的路徑(即URL而不是完整的物理磁盤文件路徑)可以用來指定這些文件。在這種情況下,早先的ASP版本不核對(duì)文件的安全設(shè)置和用戶的證書;換句話說,授權(quán)(驗(yàn)證后)的用戶和匿名的Web服務(wù)器帳號(hào)都沒有與文件的訪問控制列表相比較。在IIS 5.0和ASP 3.0,這些證書將被檢查以防止非授權(quán)訪問。
5、 可配置項(xiàng)移到元數(shù)據(jù)庫中
在IIS 5.0中ProcessorThreadMax和ErrorsToNTLog的注冊(cè)項(xiàng)被移到元數(shù)據(jù)庫中,所有有ASP可配置參數(shù)能夠通過Active Directory和Active Directory服務(wù)接口(ADSI)在元數(shù)據(jù)庫中修改。
6、 應(yīng)用程序中的雙線程對(duì)象的性能
為了常有多個(gè)并發(fā)請(qǐng)求的ASP中獲得最佳性能,組件應(yīng)是雙線程的(Both-Threaded)——即單線程單元(Single Threaded Apartment,STA)和多線程單元(Multi-Threaded Apartment,MTA),并且支持COM Free-Thread Marshaller(FTM)。不支持FTM的雙線程的COM對(duì)象假如被存儲(chǔ)在ASP Application狀態(tài)對(duì)象中,將導(dǎo)致運(yùn)行失敗。
7、 更早釋放COM對(duì)象
在IIS 5.0中,實(shí)例化的對(duì)象或組件可更早釋放。在IIS 4.0中,COM對(duì)象只有在ASP處理完一個(gè)頁面時(shí)才能釋放。在IIS 5.0中,假如一個(gè)COM對(duì)象不使用OnEndPage方法,且對(duì)象的引用計(jì)數(shù)達(dá)到零,則這個(gè)對(duì)象在處理完成之前就被釋放了。
8、 缺省時(shí)ASP允許進(jìn)程外組件
定制的本地服務(wù)器組件現(xiàn)在可以從IIS中被實(shí)例化,而不需要改變數(shù)據(jù)庫的設(shè)置。控制本地服務(wù)器實(shí)例化的元數(shù)據(jù)庫屬性AspAllowOutOfProcComponents缺省值為1,在IIS早期版本為0。
9、 COM對(duì)象的安全性
IIS使用了新的由COM+提供的cloaking特性,因此,從ASP實(shí)例化的本地服務(wù)器應(yīng)用程序可以運(yùn)行在原始的客戶的安全環(huán)境中。在早期版本中,安全環(huán)境被指派到本地服務(wù)器COM對(duì)象,依賴于調(diào)用進(jìn)程的身份。
10、缺省時(shí)組件運(yùn)行在進(jìn)程外
在ASP早期版本中,所有在ASP頁面環(huán)境中創(chuàng)建的組件缺省時(shí)運(yùn)行在進(jìn)程內(nèi)。
為在組件的性能和Web服務(wù)器安全性之間折衷,對(duì)于一個(gè)虛擬的應(yīng)用程序,可以從Properties對(duì)話框中Application Protection的三個(gè)選項(xiàng)中選擇:
· Low(IIS Process)
這種設(shè)置的ASP虛擬應(yīng)用程序可執(zhí)行文件和組件都運(yùn)行在Web服務(wù)器可執(zhí)行文件(Inetinfo.exe)的進(jìn)程(即內(nèi)存空間)中。因此,Web服務(wù)器就有受到可執(zhí)行文件或組件失敗影響的風(fēng)險(xiǎn),然而這提供了最快的和最少資源的應(yīng)用程序執(zhí)行選項(xiàng)。
· Medium(Pooled)——這是缺省設(shè)置
這種設(shè)置的ASP虛擬應(yīng)用程序的所有應(yīng)用程序可執(zhí)行文件和組件都運(yùn)行在單個(gè)共享的DLLHost.exe實(shí)例的進(jìn)程(即內(nèi)存空間)中。這保護(hù)了Web服務(wù)器可執(zhí)行文件(Inetinfo.exe)免受任何一個(gè)可執(zhí)行文件或組件失敗帶來的風(fēng)險(xiǎn)。然而,可執(zhí)行文件或組件的失敗會(huì)引起DLLHost.exe進(jìn)程失敗,進(jìn)而所有其他駐留其中的可執(zhí)行文件和組件也會(huì)失敗。
· High(Isolated)
這種設(shè)置的ASP虛擬應(yīng)用程序的所有應(yīng)用程序可執(zhí)行文件和組件都運(yùn)行在單個(gè)DLLHost.exe實(shí)例的進(jìn)程(即內(nèi)存空間)中,但是每個(gè)ASP應(yīng)用程序都有自己的DLLHost.exe實(shí)例。DLLHost.exe對(duì)應(yīng)用程序而言是獨(dú)有的,這保護(hù)Web服務(wù)器可執(zhí)行文件免受任何一個(gè)可執(zhí)行文件或組件失敗帶來的問題。微軟建議在任何一個(gè)Web服務(wù)器上最多駐留10個(gè)隔離的虛擬應(yīng)用程序。
推薦的配置是:在它們自己的進(jìn)程中運(yùn)行對(duì)于任務(wù)關(guān)鍵的應(yīng)用程序,即High(Isolated);余下的所有應(yīng)用程序在一個(gè)共享的進(jìn)程中運(yùn)行,即Medium(Pooled)。也可設(shè)置組成每個(gè)虛擬應(yīng)用程序的腳本和組件的執(zhí)行權(quán)限(Execute Permission),三個(gè)選項(xiàng)是:
1) None:在這個(gè)虛擬的應(yīng)用程序中不能運(yùn)行腳本或可執(zhí)行文件。在實(shí)際效果上,這提供了一個(gè)在必要時(shí)快速和簡便地禁止一個(gè)應(yīng)用程序的方式。
2) Scripts only:僅允許腳本文件,諸如ASP、IDC或其他,能夠在這個(gè)虛擬應(yīng)用程序中運(yùn)行,可執(zhí)行文件不能運(yùn)行。
3) Scripts and Executables:允許任何腳本和可執(zhí)行文件在這個(gè)虛擬應(yīng)用程序中運(yùn)行。