適用于 IIS 7.0 的 MWA 和 MPM 概觀
作者 :Janani Ravi
摘要
擴充 IIS 管理員工具來管理 IIS 7.0 和更新版本伺服器上分散式組態檔) 中的自訂群組態 (,牽涉到使用來自兩個不同元件的 API、Microsoft.Web.Administration.dll和Microsoft.Web.Management.dll。 這些 API 應該用於非常不同的動作,而且有基本不同的用途。 本檔提供這些 API 所提供的功能及其間關聯性的快速概觀。
簡介
如果您打算將 UI 新增至 IIS 管理員, (InetMgr) 來管理伺服器組態檔上的自訂設定,您將使用來自 Microsoft.Web.Administration.dll 和 Microsoft.Web.Management.dll 的 API。 來自這些元件的 API 所提供的功能基本上不同,而且對於第一次使用它的開發人員可能會混淆。 本文將提供每個元件所提供的簡短概觀。
什麼是 Microsoft.Web.Administration 和 Microsoft.Web.Management?
本節提供上述各項的簡短簡介。
Microsoft.Web.Administration
Microsoft.Web.Administration (MWA) API 是透過應用程式主機管理 API (AHADMIN) 建置為 Managed 程式碼包裝函式,這是原生程式碼介面程式庫。 它提供以程式設計方式存取和更新 Web 服務器組態和管理資訊。
Microsoft.Web.Administration.dll是讓使用者在伺服器上調整設定的簡單方式。 它 不支援 新增任何 UI 擴充性或功能。 事實上,IIS 管理員中的數個 UI 功能會使用此 API 來管理後端的組態設定。
當開發人員想要以 Managed 程式碼撰寫程式 (C#、VB 等) 以特定方式設定伺服器時,就會使用 MWA API。 此 API 用於獨立主控台應用程式,或從 IIS 管理員的 UI 功能內使用。
例如,這些 API 也支援從 IIS 管線中的受控模組存取執行時間 (組態) 。
Microsoft.Web.Management
Microsoft.Web.Management.dll具有架構,可將新的 UI 功能新增至 IIS 管理員工具。 架構具有可開發新功能的擴充性,並提供基類和其他功能。 這可讓使用者定義延伸模組成為 UI 中的第一級公民,而且其外觀與風格與內建 IIS 和 ASP.Net 功能相同。
IIS 管理員具有模組化基礎結構,其中每個 UI 功能都是它自己的實體,而且必須個別向工具註冊。 IIS 管理員的用戶端伺服器架構會分隔邏輯,以操作伺服器設定與程式碼。 這會以使用者易記的方式顯示這些設定。 工具中的每個功能都會遵循此用戶端伺服器範例。 這是藉由在 IIS 管理員中為伺服器端和用戶端 UI 程式碼提供定義完善的基類來強制執行。
此 API 也提供擴充性機制來開發以清單、屬性方格、自訂設計的 [動作] 窗格、強制回應精靈和對話方塊 (來表示的 UI 功能,以命名幾個) 。
工具隨附的許多現有 UI 功能會使用伺服器端程式碼中的 MWA API () 來存取設定。
Microsoft.Web.Administration
如先前所述,MWA API 可用來操作伺服器上的設定。 它們提供針對 IIS 設定的網站、應用程式和虛擬目錄的內建強型別存取。 這些 API 也允許使用者產生自己的強型別類別來代表特定組態區段,因此建置簡單的方法來存取這些區段中所儲存的屬性和其他資訊。
這並不表示完整的清單,而且此元件提供比此處所述的更多。
ServerManager 和 Sites、應用程式和虛擬目錄
管理伺服器屬性的進入點是 ServerManager 類別。 ServerManager 具有該 IIS 伺服器上所有網站清單的參考,而個別網站的索引會藉由編制網站集合的索引來存取。
應用程式和虛擬目錄會以類似的方式存取。 這些實體也會 (提供執行時間狀態資訊,例如月臺是否已啟動/停止) 。 更新會針對整個伺服器或屬於個別實體的屬性進行預設設定, (例如更新特定網站) 。
在 ServerManager 上呼叫 CommitChanges 時,會補救伺服器設定。
以下是此元件所提供的一些強型別類別概觀:
存取個別組態檔
IIS 使用的分散式組態檔模型可讓月臺、應用程式、虛擬目錄或甚至是資料夾在web.config檔案中設定其組態。
您可以存取個別組態檔,以調整特定實體的設定。 ServerManager 方法 GetApplicationHostConfiguration 可用來存取applicationHost.config,而 GetWebConfiguration 方法則接受參數以取得特定的組態檔。
擴充性的泛型基類
IIS 組態系統可讓您建立區段,讓您指定與應用程式相關的屬性。 使用 MWA API,在 Managed 程式碼中建立強型別類別,以操作這些設定。 其中一些可加速的基類如下:
- 組態: 代表月臺和應用程式的單一組態檔 (applicationHost.config 或web.config檔案)
- ConfigurationElement: 用來代表組態檔中元素的泛型實體。 這是組態區段、集合專案、區段中巢狀元素等的基類。
- ConfigurationAttribute: 代表 ConfigurationElement 內的屬性
- ConfigurationSection: 衍生自 ConfigurationElement,並代表 IIS 架構檔案中定義的區段。 用來存取區段的各種屬性。
- ConfigurationElementCollection: 由 ConfigurationElements 組成的集合類別。 也衍生自 ConfigurationElement。
一般設定擴充性的簡單概觀如下所示:
設定的執行時間存取
WebConfigurationManager 用於伺服器組態設定的執行時間存取。 載入 IIS 管線的 Managed 模組會藉由參考此類別,存取其特定內容中的組態設定 (例如對特定月臺的要求) 。
Microsoft.Web.Management
Microsoft.Web.Management () API 是開發伺服器端程式碼以作業系統管理設定和用戶端使用者介面功能 (的建置組塊,可讓使用者以易記的方式檢視及操作這些設定) 。
以下提供每個命名空間中某些重要類別的簡短描述。 同樣地,這不是完整的清單,而且此元件提供更多在這裡討論的內容。
此元件提供之功能的高階檢視:
Microsoft.Web.Management.Server
衍生自 ModuleProvider 基類的類別會形成 IIS 管理員用來識別 UI 模組的進入點。 這是必須在 IIS 管理員administration.config中註冊的類別,才能將其顯示為功能集的一部分。
衍生自 ModuleService 基類的類別,構成伺服器端管理的主要類別。 這些類別會執行實際的伺服器設定操作。 UI 用戶端必須可見類別中的方法會以 ModuleServiceMethod 屬性標示。
ManagementUnit會為開發人員提供伺服器管理所在的內容。 例如,SiteManagementUnit 和 ApplicationManagementUnit 會對應至 IIS 管理員工具中的月臺連線和應用程式連線。 ModuleService 基類會公開目前的 ManagementUnit,可用來存取目前內容的相關資訊。
ManagementConfigurationPath 是類別,代表目前伺服器、月臺、應用程式或資料夾) 的路徑 (。 如果您要管理網站,則這會保存網站名稱和網站的其他相關資訊。 ManagementUnit 會公開目前的 ManagementConfigurationPath。
ManagementConfiguration是協助程式類別,可用來存取及操作伺服器上的組態設定。 這是稍早定義之 MWA API 中 Configuration 類別的強大抽象概念,可讓您查詢區段,而不必擔心這些區段是在applicationHost.config或根web.config中定義。
PropertyBag是一種容器,用來保存用戶端與伺服器之間傳輸的資訊。 這會實作為泛型字典。在遠端管理伺服器的情況下,字典會序列化為字串,同時傳輸資料。
Microsoft.Web.Management.Client
衍生自 Module 基類的類別會形成功能以註冊其 UI 元件的進入點。 這表示此模組的 UI 是否為頁面 (顯示在 IIS 管理員) 的中央窗格中、樹狀結構中的節點,或只是 [動作] 窗格中的工作, (列出幾個範例) 。
ModuleServiceProxy是用來存取伺服器上ModuleService中所指定之實際服務方法之方法存根的基類。
HierarchyInfo代表樹狀檢視中的節點,並支援節點上的數個動作。
Connection類別具有目前管理會話的所有內容資訊, (定義伺服器、網站或應用程式連線的管理會話) 。 它提供協助程式來存取服務、建立 Proxy 等等。
TaskItem是新增至 IIS 管理員中 [動作] 窗格之工作的基類。 MethodTaskItem、TextTaskItem等類別。衍生自這個基類,並在 [動作] 窗格中顯示連結、標籤、警示和其他資訊。 開發人員不需要撰寫任何其他 UI 程式碼,才能顯示這些動作。
Microsoft.Web.Management.Client.Win32
ModulePage是 IIS 管理員工具中央窗格中顯示「頁面」之所有功能的基類。 ModuleListPage、ModuleDialogPage 和 ModulePropertiesPage 等類別都衍生自 ModulePage。 這些是基類,可讓您輕鬆開發顯示清單、對話方塊和屬性方格的頁面。
TaskForm基類可讓開發人員建立顯示為強制回應對話方塊的表單。
WizardForm 會形成所有對話方塊的基類。 開發人員可以指定數個 WizardPage 衍生類別,以插入精靈。
Microsoft.Web.Management.Client.Extensions
此命名空間中的類別會使用 IExtensibilityManager 提供用戶端擴充性。 例如,AuthenticationFeature 具有 InetMgr 工具中驗證功能中每個專案的工作。
這是 Microsoft.Web.Administration 和 Microsoft.Web.Management API 提供開發人員想要擴充設定和 UI 以新增自己的功能的簡短概觀。 如需設定擴充性和 UI 擴充性運作方式的更深入描述,請參閱涵蓋這些主題的個別文章。