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)——即單一執行緒 Apartment(Single Threaded Apartment,STA)和多執行緒 Apartment(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
:允許任何指令碼和可執行檔在這個虛擬應用程式中運行。