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