IIS 7 用の MWA および MWM の概要

公開日: 2007 年 11 月 24 日 (作業者: saad (英語))

更新日: 2008 年 2 月 25 日 (作業者: saad (英語))

概要

IIS マネージャー ツールを拡張して、IIS 7 サーバー上で (分散構成ファイルにある) カスタム構成を管理するには、Microsoft.Web.Administration.dll と Microsoft.Web.Management.dll の 2 種類のアセンブリの API を使用します。これらの API が行う処理は大きく異なり、用途も基本的に異なります。このドキュメントでは、この 2 つの API が提供する機能と両者間の関係を簡単に紹介します。

はじめに

IIS マネージャー (InetMgr) に UI を追加して、サーバーの構成ファイルのカスタム設定を管理することを計画している場合は、Microsoft.Web.Administration.dll と Microsoft.Web.Management.dll の API を使用します。この 2 つのアセンブリの API は根本的に異なる機能を提供しますが、開発者が初めて使用する場合に混同してしまう可能性があります。この記事では、これらの各アセンブリが提供する機能の概要を簡単に説明します。

このドキュメントの内容は次のとおりです。

  • Microsoft.Web.Administration および Microsoft.Web.Management とは
  • Microsoft.Web.Administration の概要
  • Microsoft.Web.Management の概要

Microsoft.Web.Administration および Microsoft.Web.Management とは

ここでは、それぞれのアセンブリを簡単に紹介します。

Microsoft.Web.Administration

Microsoft.Web.Administration (MWA) API は、ネイティブ コード インターフェイス ライブラリであるアプリケーション ホスト管理 API (AHADMIN) に対するマネージ コード ラッパーとして構築されています。Web サーバーの構成および管理情報にプログラムによってアクセス/更新できます。

Microsoft.Web.Administration.dll を使って、ユーザーはサーバー上の設定を簡単に調整できます。UI の拡張機能や機能の追加はサポートしていません。実際、IIS マネージャーの一部の UI 機能は、この API を使用してバック エンドで構成設定を管理しています。

MWA API は、開発者が、特定の方法でサーバーを構成するためにマネージ コード (C#、VB など) でプログラムを作成する場合に使用します。この API は、スタンドアロン コンソール アプリケーションまたは IIS マネージャーの UI 機能から使用します。

これらの API は、実行時に (たとえば、IIS 7 パイプラインのマネージ モジュールから) 構成にアクセスすることもサポートしています。

Microsoft.Web.Management

Microsoft.Web.Management.dll には、IIS マネージャー ツールに新しい UI を追加するためのフレームワークが含まれます。このフレームワークには、新しい機能を開発するための拡張機能が含まれているほか、基本クラスやその他の機能が用意されているため、IIS 7 および ASP.NET の組み込み機能と同様の外観と操作性をもつユーザー定義の拡張機能を UI に追加することができます。

IIS マネージャーのインフラストラクチャはモジュール化されており、各 UI 機能は独自のエンティティであるため、個別にツールに登録する必要があります。IIS マネージャーのクライアント/サーバー アーキテクチャでは、サーバー設定を操作するロジックが、コードから分離されています。このため、ユーザーにとってわかりやすい形式で設定が表示されます。ツールの各機能は、このクライアント/サーバー パラダイムに従っています。このパラダイムでは、サーバー側で詳細に定義された基本クラスを提供し、IIS マネージャーでクライアント UI コードを提供します。

この API は、リスト、プロパティ グリッド、カスタム設計の [操作] ウィンドウ、モーダル ウィザードおよびダイアログなどの UI 機能を開発するための拡張機能も用意されています。

このツールに付属する既存の UI 機能の多くは、この MWA API を (サーバー側のコードで) 使用して構成にアクセスしています。

Microsoft.Web.Administration

前述のように、MWA API を使用してサーバー上の設定を操作できます。IIS 7 用に構成されているサイト、アプリケーション、および仮想ディレクトリに対して、組み込みの厳密に型指定されたアクセスが可能です。MWA API を使用することによって、ユーザーは特定の構成セクションを表す厳密に型指定された独自のクラスを生成し、これらのセクションに格納されているプロパティやその他の情報に簡単にアクセスすることができます。

このアセンブリには、ここで紹介するものの他にも多くのさまざまな機能が用意されています。

ServerManager とサイト、アプリケーション、仮想ディレクトリ

サーバー プロパティの管理へのエントリ ポイントであるのが ServerManager クラスです。ServerManager には IIS 7 サーバー上のすべてのサイトのリストへの参照が含まれます。個々のサイトには、サイト コレクションのインデックスによってアクセスします。

アプリケーションや仮想ディレクトリにも同様の方法でアクセスします。これらのエンティティは、実行時の状態に関する情報 (サイトが開始/停止されているかどうか、など) も提供します。更新処理は、サーバー全体の既定の設定または個々のエンティティに属するプロパティに対して行います (特定のサイトに対する更新など)。

サーバーの設定を更新するには、ServerManager で CommitChanges を呼び出します。

このアセンブリで用意されている厳密に型指定されたクラスの一部の概要を以下に示します。

Ff453976.173_Fig1(ja-jp,TechNet.10).jpg

個々の構成ファイルへのアクセス

IIS 7 で使用されている分散構成ファイル モデルでは、サイト、アプリケーション、仮想ディレクトリやフォルダーの構成も web.config ファイルで設定することができます。

また、個々の構成ファイルにアクセスして、特定のエンティティの設定を調整することもできます。ServerManager の GetApplicationHostConfiguration メソッドを使用すると、applicationHost.config にアクセスできます。GetWebConfiguration メソッドは、パラメーターで指定された構成ファイルを取得します。

拡張機能の汎用基本クラス

IIS 7 の構成システムでは、セクションを作成して、そのセクション内にアプリケーションに関連するプロパティを指定することができます。MWA API を使用すると、マネージ コードで厳密に型指定されたクラスを作成して、こうした設定を操作できます。この作業を容易にする次のような基本クラスがあります。

  • Configuration: 単一の構成ファイル (サイトやアプリケーションの applicationHost.config または web.config ファイル) を表します。
  • ConfigurationElement: 構成ファイル内の要素を表す汎用エンティティです。これは、構成セクション、コレクション エントリ、セクション内のネストされた要素などの基本クラスです。
  • ConfigurationAttribute: ConfigurationElement 内のプロパティを表します。
  • ConfigurationSection: ConfigurationElement の派生クラスです。IIS 7 スキーマ ファイル内で定義されたセクションを表します。セクションの各種プロパティへのアクセスに使用します。
  • ConfigurationElementCollection: ConfigurationElement で構成されるコレクション クラスです。ConfigurationElement の派生クラスです。

汎用の構成拡張機能の簡単な概要を以下に示します。

Ff453976.173_Fig2(ja-jp,TechNet.10).jpg

構成への実行時のアクセス

WebConfigurationManager は、実行時にサーバーの構成設定にアクセスするために使用します。IIS 7 パイプラインに読み込まれたマネージ モジュールは、このクラスを参照することによって、特定のコンテキスト (特定のサイトへの要求など) の構成設定にアクセスします。

Microsoft.Web.Management

Microsoft.Web.Management (MWM) API は、管理設定を操作するサーバー側のコードや、設定の操作や確認が簡単なクライアント側のユーザー インターフェイス機能の開発基盤となる機能です。

以下に、それぞれの名前空間で重要なクラスをいくつか簡単に説明します。繰り返しますが、このアセンブリには、ここで紹介するものの他にも多数の機能が用意されています。

このアセンブリが提供する機能の概要は次のとおりです。

Ff453976.173_Fig3(ja-jp,TechNet.10).jpg

Microsoft.Web.Management.Server

ModuleProvider 基本クラスの派生クラスは、IIS マネージャーが UI モジュールを識別するためのエントリ ポイントとなります。IIS マネージャーの機能セットの一部として UI モジュールを表示するためには、このクラスを 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 クラスは、現在の管理セッション (サーバー、サイト、またはアプリケーションへの接続を定義している管理セッション) のすべてのコンテキスト情報を保持します。このクラスは、サービスへのアクセス、プロキシの作成などのヘルパー メソッドが用意されています。

TaskItem は、IIS マネージャーの [操作] ウィンドウに追加されたタスク用の基本クラスです。MethodTaskItemTextTaskItem などのクラスはこの基本クラスの派生クラスで、リンク、ラベル、警告、およびその他の情報を [操作] ウィンドウに表示します。開発者は、これらの情報を追加の UI コードを記述せずに表示することができます。

Microsoft.Web.Management.Client.Win32

ModulePage は、IIS マネージャー ツールの中央ウィンドウに "ページ" を表示するすべての機能の基本クラスです。ModuleListPage、ModuleDialogPage、ModulePropertiesPage などはすべて ModulePage から派生します。これらの基本クラスでは、リスト、ダイアログ、およびプロパティ グリッドを表示するページを簡単に開発できます。

TaskForm 基本クラスを使って、開発者はモーダル ダイアログ ボックスとして表示されるフォームを作成できます。

WizardForm は、すべてのダイアログの基本クラスです。開発者は、複数の WizardPage 派生クラスをウィザードにプラグインできます。

Microsoft.Web.Management.Client.Extensions

この名前空間のクラスは、IExtensibilityManager の使用によりクライアント側の拡張機能を提供します。たとえば、AuthenticationFeature には、InetMgr ツールの認証機能のすべてのエントリに関するタスクが含まれます。

この記事では、構成や UI を拡張して独自の機能を追加したいと考えている開発者向けに、Microsoft.Web.Administration API や Microsoft.Web.Management API が提供する機能の概要を簡単に説明しました。構成や UI の拡張機能の仕組みの詳細については、それぞれ関連記事を参照してください。