| 導購 | 订阅 | 在线投稿
分享
 
 
 

IIS6.0下ASP的一些新增加的功能

來源:互聯網  2008-05-19 04:14:37  評論

ASP 的新增功能

除了內部性能增強和優化外,該版本的 Active Server Pages(ASP) 還具有如下新功能:

更好的國際化和 UTF-8 支持

改進的 POST 支持

ASP 挂起檢測

常用文件的緩存

UNC 增強

ASP 中的 COM+ 服務

單元模型選擇

並排集合

COM+ 分區

跟蹤程序

事務

ASP 的新配置數據庫屬性

更好的國際化和 UTF-8 支持

UTF-8 支持已經被擴展到所有 ASP 內置對象的屬性和方法中。上一版本的 ASP 僅在響應和寫入方面支持 UTF-8。

改進的 POST 支持

ASP 目前可以從客戶端讀取 Chunked 編碼的 POST 數據。

ASP 挂起檢測

當 IIS 網站繁忙時,可能會出現這樣的情況:迅速生成最大數量的 ASP 線程,其中的一些 ASP 線程被挂起,從而導致性能下降。 HSE_REQ_REPORT_UNHEALTHY 以及萬維網發布服務(WWW 服務)將回收主控 ASP.dll 的工作進程,並將項目添加到事件日志中。

注意 如果線程不響應超時,則將其視爲「挂起」。

常用文件的緩存

目前,ASP 除了保留內存緩存之外,還在磁盤上緩存一些最常用的文件。磁盤緩存的默認位置是 %systemroot%System32inetsrvASP Compiled Templates。可以通過設置 AspDiskTemplateCacheDirectory 配置數據庫屬性來更改硬盤緩存的位置。

UNC 增強

目前,ASP 能夠處理 ASP 腳本中的 UNC 路徑。

ASP 中的 COM+ 服務

如果想要在以前版本的 IIS 中使用 ASP 應用程序提供的 COM+ 服務,您必須創建可以調用那些服務的方法的 COM 組件。目前,您可以配置 ASP 應用程序以使用下面的 COM+ 服務而不必創建 COM 組件:

單元模型選擇:

ASP 現在能夠在多線程單元 (MTA) 中運行其全部線程。如果 COM 組件主要是自由線程或雙線程組件,則將 ASP 線程作爲 MTA 運行可顯著改善性能。

要使 ASP 應用程序能夠在 MTA 中運行,您可以在應用程序級別使用配置數據庫設置 AspExecuteInMTA。這意味著您可以讓一個應用程序運行于 ASP MTA 線程上,而讓第二個應用程序運行于 ASP STA(單線程單元)線程上。ASP 線程的默認設置仍爲 STA。

要點 當您將 ASP 應用程序的運行環境從 STA 切換到 MTA(或從 MTA 切換到 STA)時,則模擬令牌將過時。這可能導致應用程序在無模擬的情況下運行,讓其用可能允許訪問其他資源的進程的標識有效地運行。如果您必須切換線程模型,請在進行更改之前禁用該應用程序並將其卸載。

下列示例設置默認網站應用程序 (W3SVC/1/ROOT) 在 MTA 中執行:

On Error Resume Next

set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")

' 獲得對名爲「默認網站」的 ASP 應用程序的引用

set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")

WScript.Echo "Before: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA

' 將 ASP 應用程序設置爲在 MTA 中執行

IIsWebVirtualDirSettingObj.AspExecuteInMTA = 1

IIsWebVirtualDirSettingObj.Put_()

WScript.Echo "After: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA

並排集合:

並排 (SxS) 集合允許 ASP 應用程序指定要使用哪個版本的系統 DLL 或傳統 COM 組件,例如 MDAC、MFS、MSVCRT、MSXML 等。例如,如果您的 ASP 應用程序依賴 MSXML 2.0 版,則可以確保即使是在服務器上應用了 Service Pack 之後,您的應用程序仍使用 MSXML 2.0 版。任何新版本的 MSXML 仍安裝在計算機上,但是保留 2.0 版且由應用程序使用。配置 SxS 程序集要求您知道 DLL 的路徑,且 COM+ 清單文件存在于每個需要使用 DLL 的虛擬目錄中。COM+ 清單是包含有關 DLL 安裝位置信息的 XML 文件。IIS 不驗證清單是否存在。清單的外觀類似于下面的文件摘錄:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"

<assemblyIdentity publicKeyToken="75e377300ab7b886" type="win32" name="Test4Dir" version="1.0.0.0" processorArchitecture="x86"/

<file name="DirComp.dll" hash="35ca6f27b11ed948ac6e50b75566355f0991d5d9" hashalg="SHA1"

<comClass clsid="{6C6CC20E-0F85-49C0-A14D-D09102BD7CDC}" progid="DirComp.PathInfo" threadingModel="apartment"/

<typelib tlbid="{AA56D6B8-9ADB-415D-9E10-16DD68447319}" version="1.0" helpdir=""/

</file

</assembly

您可以在 IIS 端以編程方式或者通過使用 IIS 管理器來啓用並排集合。

在 IIS 端使用 IIS 管理器啓用並排集合

在 IIS 管理器中,右鍵單擊網站或虛擬目錄,然後單擊「屬性」。

單擊「虛擬目錄」選項卡,然後單擊「配置」。

如果配置按鈕不可用,那麽原因是還沒有爲該虛擬目錄創建應用程序。單擊「創建」以創建一個應用程序。

在「應用程序配置」對話框中,單擊「選項」選項卡。

選中「啓用並排集合」複選框。

在「清單文件名」框中,鍵入 COM+ 清單文件的名稱。

單擊「確定」兩次。

要通過編程啓用並排集合,請設置 AspAppServiceFlags 配置數據庫屬性的 AspEnableSxs 標志。同時將 AspSxsName 配置數據庫屬性設置爲 COM+ 清單的名稱。在應用程序級別設置這兩個配置數據庫屬性。

要點 即使該功能可在應用程序級別進行配置,在任何一個應用程序池中都只能使用一個版本的系統 DLL。例如,如果應用程序 App1 使用 MDAC 2.5 版,應用程序 App2 使用 MDAC 2.4 版,則 App1 和 App2 不應位于同一個應用程序池中。如果它們位于同一個應用程序池中,則首先加載的應用程序加載與之相對應的 MDAC 版本,在卸載這些應用程序之前,其他應用程序只能被迫使用該版本。

下列示例在默認網站應用程序 (W3SVC/1/ROOT) 上啓用並排集合。請注意,只要設置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發生改變:

On Error Resume Next

set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")

' 獲得對名爲「默認網站」的 ASP 應用程序的引用

set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")

WScript.Echo "Before: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs

WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName

WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags

' 設置 ASP 應用程序以啓用 COM+ 並排集合

IIsWebVirtualDirSettingObj.AspEnableSxs = 1

' 設置 AspSxsName 屬性

IIsWebVirtualDirSettingObj.AspSxsName = "VersionInfo"

' 將值保存到 IIS 配置數據庫中

IIsWebVirtualDirSettingObj.Put_()

' 再次獲得引用以刷新 AspAppServiceFlags 屬性。

set IIsWebVirtualDirSettingObj = Nothing

set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")

WScript.Echo "After: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs

WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName

WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags

COM+ 分區:

COM+ 分區可用于將 Web 應用程序隔離到它們各自的 COM+ 分區中。這對于禁止一個 Web 應用程訪問另一個 Web 應用程序的專用 COM+ 應用程序、配置信息和數據非常有用。COM+ 分區可擁有自定義 COM 組件的不同版本。例如,如果爲兩個競爭的公司宿主網站,它們都在其 Web 應用程序中使用了 COM+,則可以使用 COM+ 分區來確保一個公司的 Web 應用程序不能訪問另一個公司的 Web 應用程序中的 COM+ 組件。如果其中某個公司要求您更改它們都使用的 COM+ 應用程序的某些功能,您可以在鏈接到它們的 Web 應用程序的分區中隔離該 COM+ 應用程序的新版本。

要在 IIS 端啓用 COM+ 分區,請在應用程序級別設置 AspAppServiceFlags 配置數據庫屬性的 AspUsePartition 標志。分區由 GUID(使用組件服務管理器管理單元創建)標識,它可在 AspPartitionID 配置數據庫屬性上進行設置。如果未指定任何分區,則使用默認系統分區。詳細信息,請參閱 COM+ SDK 中的「創建和配置 COM+ 分區」或聯機查看 COM+ (Component Services)。

要點 即使該功能可在應用程序級別進行配置,在任何一個應用程序池中也只能使用一個版本的 COM+ 組件。例如,如果應用程序 App1 使用名爲 Shop.dll 的 1.0 版的自定義 COM+ 應用程序,應用程序 App2 使用 2.0 版的 Shop.dll,則 App1 和 App2 不應位于同一個應用程序池中。如果它們位于同一個應用程序池中,則首先加載的應用程序加載與之對應的 Shop.dll 版本,在卸載這些應用程序之前,另一個應用程序只能被迫使用該版本。

下列示例在默認網站應用程序 (W3SVC/1/ROOT) 上啓用分區。請注意,只要設置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發生改變。

On Error Resume Next

  ASP 的新增功能   除了內部性能增強和優化外,該版本的 Active Server Pages(ASP) 還具有如下新功能:   更好的國際化和 UTF-8 支持   改進的 POST 支持   ASP 挂起檢測   常用文件的緩存   UNC 增強   ASP 中的 COM+ 服務   單元模型選擇   並排集合   COM+ 分區   跟蹤程序   事務   ASP 的新配置數據庫屬性   更好的國際化和 UTF-8 支持   UTF-8 支持已經被擴展到所有 ASP 內置對象的屬性和方法中。上一版本的 ASP 僅在響應和寫入方面支持 UTF-8。   改進的 POST 支持   ASP 目前可以從客戶端讀取 Chunked 編碼的 POST 數據。   ASP 挂起檢測   當 IIS 網站繁忙時,可能會出現這樣的情況:迅速生成最大數量的 ASP 線程,其中的一些 ASP 線程被挂起,從而導致性能下降。 HSE_REQ_REPORT_UNHEALTHY 以及萬維網發布服務(WWW 服務)將回收主控 ASP.dll 的工作進程,並將項目添加到事件日志中。   注意 如果線程不響應超時,則將其視爲「挂起」。   常用文件的緩存   目前,ASP 除了保留內存緩存之外,還在磁盤上緩存一些最常用的文件。磁盤緩存的默認位置是 %systemroot%System32inetsrvASP Compiled Templates。可以通過設置 AspDiskTemplateCacheDirectory 配置數據庫屬性來更改硬盤緩存的位置。   UNC 增強   目前,ASP 能夠處理 ASP 腳本中的 UNC 路徑。   ASP 中的 COM+ 服務   如果想要在以前版本的 IIS 中使用 ASP 應用程序提供的 COM+ 服務,您必須創建可以調用那些服務的方法的 COM 組件。目前,您可以配置 ASP 應用程序以使用下面的 COM+ 服務而不必創建 COM 組件:   單元模型選擇:   ASP 現在能夠在多線程單元 (MTA) 中運行其全部線程。如果 COM 組件主要是自由線程或雙線程組件,則將 ASP 線程作爲 MTA 運行可顯著改善性能。   要使 ASP 應用程序能夠在 MTA 中運行,您可以在應用程序級別使用配置數據庫設置 AspExecuteInMTA。這意味著您可以讓一個應用程序運行于 ASP MTA 線程上,而讓第二個應用程序運行于 ASP STA(單線程單元)線程上。ASP 線程的默認設置仍爲 STA。   要點 當您將 ASP 應用程序的運行環境從 STA 切換到 MTA(或從 MTA 切換到 STA)時,則模擬令牌將過時。這可能導致應用程序在無模擬的情況下運行,讓其用可能允許訪問其他資源的進程的標識有效地運行。如果您必須切換線程模型,請在進行更改之前禁用該應用程序並將其卸載。   下列示例設置默認網站應用程序 (W3SVC/1/ROOT) 在 MTA 中執行:   On Error Resume Next   set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")   ' 獲得對名爲「默認網站」的 ASP 應用程序的引用   set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")   WScript.Echo "Before: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA   ' 將 ASP 應用程序設置爲在 MTA 中執行   IIsWebVirtualDirSettingObj.AspExecuteInMTA = 1   IIsWebVirtualDirSettingObj.Put_()   WScript.Echo "After: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA   並排集合:   並排 (SxS) 集合允許 ASP 應用程序指定要使用哪個版本的系統 DLL 或傳統 COM 組件,例如 MDAC、MFS、MSVCRT、MSXML 等。例如,如果您的 ASP 應用程序依賴 MSXML 2.0 版,則可以確保即使是在服務器上應用了 Service Pack 之後,您的應用程序仍使用 MSXML 2.0 版。任何新版本的 MSXML 仍安裝在計算機上,但是保留 2.0 版且由應用程序使用。配置 SxS 程序集要求您知道 DLL 的路徑,且 COM+ 清單文件存在于每個需要使用 DLL 的虛擬目錄中。COM+ 清單是包含有關 DLL 安裝位置信息的 XML 文件。IIS 不驗證清單是否存在。清單的外觀類似于下面的文件摘錄:   <?xml version="1.0" encoding="UTF-8" standalone="yes"?   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"   <assemblyIdentity publicKeyToken="75e377300ab7b886" type="win32" name="Test4Dir" version="1.0.0.0" processorArchitecture="x86"/   <file name="DirComp.dll" hash="35ca6f27b11ed948ac6e50b75566355f0991d5d9" hashalg="SHA1"   <comClass clsid="{6C6CC20E-0F85-49C0-A14D-D09102BD7CDC}" progid="DirComp.PathInfo" threadingModel="apartment"/   <typelib tlbid="{AA56D6B8-9ADB-415D-9E10-16DD68447319}" version="1.0" helpdir=""/   </file   </assembly   您可以在 IIS 端以編程方式或者通過使用 IIS 管理器來啓用並排集合。   在 IIS 端使用 IIS 管理器啓用並排集合   在 IIS 管理器中,右鍵單擊網站或虛擬目錄,然後單擊「屬性」。   單擊「虛擬目錄」選項卡,然後單擊「配置」。   如果配置按鈕不可用,那麽原因是還沒有爲該虛擬目錄創建應用程序。單擊「創建」以創建一個應用程序。   在「應用程序配置」對話框中,單擊「選項」選項卡。   選中「啓用並排集合」複選框。   在「清單文件名」框中,鍵入 COM+ 清單文件的名稱。   單擊「確定」兩次。   要通過編程啓用並排集合,請設置 AspAppServiceFlags 配置數據庫屬性的 AspEnableSxs 標志。同時將 AspSxsName 配置數據庫屬性設置爲 COM+ 清單的名稱。在應用程序級別設置這兩個配置數據庫屬性。   要點 即使該功能可在應用程序級別進行配置,在任何一個應用程序池中都只能使用一個版本的系統 DLL。例如,如果應用程序 App1 使用 MDAC 2.5 版,應用程序 App2 使用 MDAC 2.4 版,則 App1 和 App2 不應位于同一個應用程序池中。如果它們位于同一個應用程序池中,則首先加載的應用程序加載與之相對應的 MDAC 版本,在卸載這些應用程序之前,其他應用程序只能被迫使用該版本。   下列示例在默認網站應用程序 (W3SVC/1/ROOT) 上啓用並排集合。請注意,只要設置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發生改變:   On Error Resume Next   set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")   ' 獲得對名爲「默認網站」的 ASP 應用程序的引用   set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")   WScript.Echo "Before: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs   WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName   WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags   ' 設置 ASP 應用程序以啓用 COM+ 並排集合   IIsWebVirtualDirSettingObj.AspEnableSxs = 1   ' 設置 AspSxsName 屬性   IIsWebVirtualDirSettingObj.AspSxsName = "VersionInfo"   ' 將值保存到 IIS 配置數據庫中   IIsWebVirtualDirSettingObj.Put_()   ' 再次獲得引用以刷新 AspAppServiceFlags 屬性。   set IIsWebVirtualDirSettingObj = Nothing   set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")   WScript.Echo "After: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs   WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName   WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags   COM+ 分區:   COM+ 分區可用于將 Web 應用程序隔離到它們各自的 COM+ 分區中。這對于禁止一個 Web 應用程訪問另一個 Web 應用程序的專用 COM+ 應用程序、配置信息和數據非常有用。COM+ 分區可擁有自定義 COM 組件的不同版本。例如,如果爲兩個競爭的公司宿主網站,它們都在其 Web 應用程序中使用了 COM+,則可以使用 COM+ 分區來確保一個公司的 Web 應用程序不能訪問另一個公司的 Web 應用程序中的 COM+ 組件。如果其中某個公司要求您更改它們都使用的 COM+ 應用程序的某些功能,您可以在鏈接到它們的 Web 應用程序的分區中隔離該 COM+ 應用程序的新版本。   要在 IIS 端啓用 COM+ 分區,請在應用程序級別設置 AspAppServiceFlags 配置數據庫屬性的 AspUsePartition 標志。分區由 GUID(使用組件服務管理器管理單元創建)標識,它可在 AspPartitionID 配置數據庫屬性上進行設置。如果未指定任何分區,則使用默認系統分區。詳細信息,請參閱 COM+ SDK 中的「創建和配置 COM+ 分區」或聯機查看 COM+ (Component Services)。   要點 即使該功能可在應用程序級別進行配置,在任何一個應用程序池中也只能使用一個版本的 COM+ 組件。例如,如果應用程序 App1 使用名爲 Shop.dll 的 1.0 版的自定義 COM+ 應用程序,應用程序 App2 使用 2.0 版的 Shop.dll,則 App1 和 App2 不應位于同一個應用程序池中。如果它們位于同一個應用程序池中,則首先加載的應用程序加載與之對應的 Shop.dll 版本,在卸載這些應用程序之前,另一個應用程序只能被迫使用該版本。   下列示例在默認網站應用程序 (W3SVC/1/ROOT) 上啓用分區。請注意,只要設置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發生改變。   On Error Resume Next      
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有