Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 6.0 / ASP.NET 2.0 核心新功能深度解析:效能、隔離與 COM+ 整合

編輯:關於伺服器

IIS 6.0 (Windows Server 2003) 引入全新的 Worker Process Isolation Architecture (WPIA),並大幅擴充 ASP 功能集,原生整合 COM+ 企業級服務 (交易、物件池、並存組件、分區、追蹤)。本文系統梳理國際化增強、POST 改進、掛起偵測、磁碟快取、UNC 支援、COM+ 服務整合 (MTA/SxS/分區/追蹤/交易) 及新增 Metabase 屬性,為遷移與架構決策提供技術參考。

核心執行模型變革

  • WPIA (Worker Process Isolation Architecture):應用程式集區 獨立背景進程,進程間隔離,單一應用崩潰不波及全站。
  • ASP 執行緒模型選擇:AspExecuteInMTA = true 切換至 Multiple-Threaded Apartment (MTA),針對自由執行緒 / 雙執行緒 COM 元件大幅提升效能 (預設 STA 相容單執行緒元件)。切換前必須停用應用程式並卸載,避免模擬權杖失效導致權限提升風險。

ASP 功能增強清單

功能說明關鍵 Metabase 屬性
全面 UTF-8 支援擴展至所有內建物件屬性/方法 (Request, Response, Session, Application, Server),不再限於 Response.WriteAspCodePage = 65001
Chunked POST 支援可讀取 HTTP 1.1 Chunked Transfer Encoding 請求主體無需設定,自動處理
ASP 掛起偵測WWW 服務監控執行緒健康,掛起觸發進程回收並寫入事件日誌 (HSE_REQ_REPORT_UNHEALTHY)AspHangMonitorPeriod, AspHangMonitorThreshold
磁碟編譯快取除記憶體快取外,將熱門編譯範本持久化至磁碟,重啟後加速首次請求AspDiskTemplateCacheDirectory (預設 %SystemRoot%\System32\Inetsrv\ASP Compiled Templates), AspMaxDiskTemplateCacheFiles
UNC 路徑原生支援ASP 腳本可直接使用 \\Server\Share\file.asp 路徑,無需對應磁碟機代號無需設定
Session ID 安全傳輸Cookie 標記 Secure 僅 HTTPS 傳輸AspKeepSessionIDSecure = true
請求實體大小限制防禦大型 POST 攻擊AspMaxRequestEntityAllowed (預設 200KB)
緩衝區限制控制 Response.Buffer 輸出上限AspBufferingLimit (預設 4MB)
匿名執行 Global.asa 事件Application_OnEnd / Session_OnEnd 以匿名身分執行AspRunOnEndAnonymously = true

COM+ 服務深度整合 (四大支柱)

1. 並存組件 — 解決 DLL 地獄

  • 應用程式透過 COM+ 資訊清單 聲明相依特定版本系統 DLL (MDAC, MSXML, MSVCRT) 或傳統 COM 元件。
  • 啟用:Metabase AspEnableSxs = true + AspSxsName = "ManifestName" (對應虛擬目錄下 ManifestName.manifest XML 檔)。
  • 限制:同一應用程式集區僅能載入單一版本系統 DLL。不同版本需求的應用必須隔離至不同集區。

資訊清單範例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity name="MyApp" version="1.0.0.0" processorArchitecture="x86" />
  <file name="MSXML2.DLL">
    <comClass clsid="{F5078F18-C551-11D3-9B1B-00C04F79FAA6}" progid="MSXML2.DOMDocument.2.6" threadingModel="apartment" />
  </file>
</assembly>

2. COM+ 分區 — 多租戶強隔離

  • 將 Web 應用程式對應至獨立 COM+ 分區 (GUID 識別),實現 COM+ 元件、設定、資料的租戶級隔離。
  • 啟用:AspUsePartition = true + AspPartitionID = "{GUID}" (透過「元件服務」建立)。
  • 適用場景:主機商託管競爭對手網站、SaaS 多租戶共用 COM+ 業務元件。
  • 同集區限制:同一應用程式集區內僅能啟用單一分區。

3. COM+ 追蹤器 — 生產環境無侵入式診斷

  • 記錄 ASP 頁面載入、COM 元件啟動、執行緒進出等事件,問題排查後可關閉恢復效能。
  • 啟用:AspEnableTracker = true (自動置位 AspAppServiceFlags)。
  • 輸出至 COM+ 追蹤日誌,可用「元件服務」管理單元或 comtrace.exe 分析。

4. COM+ 交易服務 — 原生分散式交易

  • 取代 IIS 4/5 時代透過建立 COM 元件包裝交易的笨重模式,直接呼叫 COM+ 交易管理器,大幅降低延遲。
  • 頁面層級配置維持不變:<% @TRANSACTION = Required %> + ObjectContext.SetComplete() / SetAbort()。

新增 Metabase 設定屬性總表

屬性名稱功能預設值
AspAppServiceFlags位元旗標啟用 SxS/分區/追蹤等 COM+ 服務0
AspDiskTemplateCacheDirectory磁碟編譯快取目錄%SystemRoot%\System32\Inetsrv\ASP Compiled Templates
AspExecuteInMTAASP 執行緒於 MTA 執行False (STA)
AspKeepSessionIDSecureSession Cookie 僅 HTTPS 傳輸False
AspMaxDiskTemplateCacheFiles最大磁碟快取檔案數無限制
AspPartitionIDCOM+ 分區 GUID系統預設分區
AspRunOnEndAnonymouslyGlobal.asa 結束事件匿名執行False
AspBufferingLimitResponse 緩衝區上限 (位元組)4,194,304 (4MB)
AspMaxRequestEntityAllowed最大請求實體大小 (位元組)204,800 (200KB)
AspSxsNameSxS 資訊清單檔名 (不含 .manifest)空

遷移與架構決策建議

  1. 舊版 ASP 應用相容性測試:重點驗證 STA→MTA 切換影響、UNC 路徑行為、UTF-8 編碼處理。
  2. 應用程式集區規劃:依 MTA/STA 需求、SxS 版本、分區隔離 三維度劃分集區,避免衝突。
  3. 啟用磁碟快取:生產環境建議設定 AspDiskTemplateCacheDirectory 指向非系統碟高效能儲存,AspMaxDiskTemplateCacheFiles 設定合理上限 (如 5000)。
  4. 採用 COM+ 交易:新開發分散式業務邏輯優先使用 @TRANSACTION + ObjectContext,棄用手工 COM 包裝。
  5. 監控掛起事件:建立事件日誌訂閱 (Event ID: ASP Hang Detected),觸發自動收集記憶體傾印 (DebugDiag/ProcDump) 供事後分析。

IIS 6.0 將 ASP 從簡單腳本宿主昇級為擁有企業級中介軟體能力 (交易、隔離、版本控制、診斷) 的應用伺服器。善用 Metabase 微調與 COM+ 整合,可在不重寫代碼前提下,為舊版 ASP 資產注入現代化架構韌性。

Copyright © Windows教程網 All Rights Reserved