Metabase 與 IIS 7 和更新版本相容性

Saad Ladki

簡介

IIS 7 和更新版本中的組態系統與 API 層級的舊版組態介面相容。 它支援管理員基底物件 (ABO) 介面,也稱為 IMSAdminBase,以及 IIS 6.0 中建置在 ABO 之上的 ADSI 和 WMI 提供者。 只要已安裝 IIS 的 Metabase 相容性元件,現有的應用程式和腳本仍然可以在 IIS 7.0 和更新版本上呼叫這些程式設計介面,並繼續運作

注意

根據預設,不會安裝此元件。

安裝 Metabase 相容性支援

您可以在 [Internet Information Services-Web > 管理工具 - > IIS 6.0 管理功能] 底下的 [設定] 中找到此元件。

預設不會安裝此元件,因為 IIS 一開始並未設定為使用它。 舊版介面有一些限制,而且不適合使用分散式組態檔, (請參閱以下) 的限制一節;因此,建議經過一段時間,特別是開啟組態系統以取得更多委派 (,也就是在系統) 上存在具有 IIS 設定的更多和更多web.config檔案時,客戶會考慮將舊版腳本和應用程式移植到新的系統及其介面。

此外,也建議使用新的介面開發新的腳本和應用程式,因此在理想情況下,它們可與新系統搭配使用,而且可以存取組態系統的新屬性、概念和結構。

將所有舊版腳本和應用程式移植到新的介面時,建議您卸載 Metabase 相容性功能。

Metabase 相容性的運作方式

Metabase 相容性功能會在 Metabase 服務內執行, (IISADMIN) 。 它會攔截 ABO 的所有方法呼叫。 如果方法呼叫中的資訊與 Web 服務器組態相關,則會對應至新的系統。 如果它與 FTP、SMTP 或 NNTP 組態相關,則會遵循 Metabase 系統的一般邏輯,最後會出現在 Metabase 檔案中。

請注意,即使是在網頁伺服器組態底下的自訂屬性,也會對應至 (,並保存在新系統中) 。

對應決策是以有問題的 Metabase 節點為基礎。 Web 服務器組態通常位於 LM/W3SVC 下,包括自訂屬性,以及一些新增專案,例如 Mime Maps。

對應是用來在 ABO 檢視與新的系統檢視之間來回轉譯。 例如,新系統在每個月臺和所有虛擬目錄上方都有應用程式的概念。 舊版系統會以不同的方式處理應用程式:它們只是具有特殊屬性的虛擬目錄,可將它們標示為應用程式 (AppIsolated 或 AppRoot) 。

呼叫 ABO 以寫入 Web 服務器組態時,Metabase 相容性元件會將資料保存在applicationHost.config中。這稱為「寫入」,因為資訊不會保留在記憶體中。 呼叫 ABO 來讀取 Web 服務器組態時,Metabase 相容性元件會從applicationHost.config讀取它。這稱為「讀取」,因為資訊再次不會從記憶體擷取。

伺服器執行時間尚未準備好取用的不完整資料會保存在applicationHost.config的特殊區段中,稱為 customMetadata。 本節用來作為 Metabase 相容性功能的持續性存放區,而客戶不應修改其內容。 不完整資料的範例是舊版腳本設定月臺識別碼,而不是網站系結時。 在 IIS 6.0 中,這類呼叫會在組態中建立不正確月臺物件。 在 IIS 7.0 和更新版本中,它會保留在伺服器未取用的 區段中。 如果後續呼叫來設定月臺系結,則會將月臺物件視為完成,並完整保存到區段,其中伺服器執行時間會挑選它。 暫時資料將會從該時間點移除,因此使用者不需要清除系統的剩餘專案。 如果未進行這類後續呼叫,則伺服器執行時間永遠不會看到這個不正確網站,但舊版腳本會在 ABO 檢視中擁有它,就像在 IIS 6.0 中所做的一樣。 從舊版腳本的觀點來看,系統與 IIS 6.0 完全相容。

透過舊版腳本和應用程式設定的自訂 Web 服務器屬性一律會保存在 區段中。 它們可以透過舊版介面擷取,就像在 IIS 6.0 中一樣,因此系統完全相容。 顯然,這與擴充 IIS 組態系統的建議方式非常不同,因此,考慮隨著時間移植這類應用程式的另一個原因,就是使用 IIS 7.0 和更新版本組態系統所提供的新介面和新功能。

其他 Metabase 組態資料

請注意,FTP、SMTP 和 NNTP 組態仍會保存在 Metabase 系統中,且未移植到新的 IIS 組態系統。 這些設定仍然可以透過舊版程式設計介面來管理,並直接編輯metabase.xml檔案。

概觀

Metabase 索引鍵和屬性的大部分作業都能順暢地運作,而且使用者會看到這些舊版概念和名稱,而不是像是組態區段和具名屬性的新 IIS 概念, (ABO 仍會繼續使用屬性識別碼;ADSI 會繼續使用舊版屬性名稱) 。

舊版使用者仍然可以使用 ADSI 架構,甚至像在 IIS 6.0 上一樣擴充它。

XML 檔案相容性

網頁伺服器組態,包括擴充網頁伺服器的自訂群組態,會保存到system32\inetsrv\applicationHost.config,而不是metabase.xml。 因此,舊版支援位於 API 層級,而不是在檔案格式層級 (,這也是某些舊版功能不支援) 的原因。 舊版介面呼叫端會取得組態的「ABO 檢視」,就像在 IIS 6.0 上所做的一樣,而不是新的檔案格式或命名或概念。

其中一個含意是不支援 Metabase ACL 等概念。 這是因為它們與 Metabase 檔案格式緊密相關。 IIS 組態系統正利用組態檔上的標準檔案 ACL。 系統未提供 Metabase ACL 與標準檔案 ACL 之間的對應。

記錄檔、備份/還原和匯入/匯出等功能的運作方式不同,因為它們依賴新的組態系統。 因此,將會忽略備份組態的 ABO 呼叫。

舊版 Metabase 功能

設定稽核已新增至 Windows Server® 2003 Service Pack 1 中的 IIS 6.0。 IIS 7.0 或更新版本目前不支援它,因為新的組態系統是以非常不同的方式建構, (例如 IIS 7.0 和更新版本使用程式內設定系統,IIS 6.0 是使用從使用者程式碼封裝的專用 NT 服務) 。

舊版 Metabase 屬性

僅支援舊版屬性。 IIS 7.0 和更新版本的組態屬性不會傳回給舊版使用者,也不會傳回 .NET Framework 組態屬性。

對應限制

對應演算法必須負責 IIS 6.0 和 IIS 7.0 和更新版本的組態系統之間的差異。 例如,IIS 6.0 不需要網站名稱 (「伺服器批註」) ;如果已指定名稱,則不需要讓這些名稱是唯一的。 在 IIS 7.0 和更新版本中,每個網站都必須有唯一的名稱。 因此,將舊的 ServerComment 屬性對應到新的 Name 屬性並不簡單。 對應演算法會強制每個月臺的名稱是唯一的,因為這是 IIS 7.0 和更新版本的組態系統需求;它會將數位新增至伺服器批註,以建立唯一性。 最終結果是,實際為伺服器批註設定的值與腳本所指定的值不同。

分散式設定

Metabase 相容性功能僅支援applicationHost.config。 web.config檔案中的組態不會傳回給舊版使用者。 位置標籤用於applicationHost.config以支援每個 URL 組態。