IIS 7.0 におけるメタベースの互換性

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

更新日: 2008 年 3 月 11 日 (作業者: saad (英語))

はじめに

IIS 7.0 構成システムは、レガシー構成インターフェイスと API レベルで互換性があります。 IIS 7.0 構成システムは、Admin Base オブジェクト (ABO) インターフェイス (IMSAdminBase とも呼ばれる) や、IIS 6.0 の ABO 上に構築されている ADSI および WMI プロバイダーをサポートしています。 IIS 7.0 のメタベース互換性コンポーネントがインストールされていれば、既存のアプリケーションおよびスクリプトから IIS 7.0 上のこれらのプログラム インターフェイスを呼び出して、正しく実行させることができます。

:既定では、このコンポーネントはインストールされません。

このドキュメントの内容:

  • メタベース互換性サポートのインストール

  • メタベース互換性の仕組み

  • その他のメタベース構成データ

  • レガシー メタベース機能

メタベース互換性サポートのインストール

このコンポーネントは、セットアップの [Internet Information Services] -> [Web 管理ツール] -> [IIS 6 と互換性のある管理] 機能の下にあります。

このコンポーネントは IIS 7.0 では使用しないので、既定ではインストールされません。 IIS 7.0 では、新しいインターフェイスを持つ新しい構成システムが使用されます。 レガシー インターフェイスには一部制限があり、分散構成ファイルの操作には適していません (後出の「制限事項」を参照)。したがって、徐々に、また、構成システムに対してさらに多くの委任を許可する (つまり、IIS の設定を含む web.config ファイルの数が増加する) 場合は特に、レガシー スクリプトおよびアプリケーションを新しいシステムおよびインターフェイスに移植することをお勧めします。

また、新しいスクリプトやアプリケーションは、新しいインターフェイスを使用して開発することをお勧めします。新しいシステムと連携してスムーズに動作するようになり、構成システムの新しいプロパティ、概念、構造にもアクセスできます。

レガシー スクリプトおよびアプリケーションをすべて新しいインターフェイスに移植した後、メタベース互換性機能をアンインストールすることを推奨します。

メタベース互換性の仕組み

メタベース互換性機能は、メタベース サービス (IISADMIN) 内で実行されます。 メタベース サービスは、ABO に対するすべてのメソッド呼び出しをインターセプトします。 メソッド呼び出しに Web サーバーの構成に関する情報が含まれる場合、そのメソッド呼び出しは新しいシステムにマップされます。 その情報が FTP、SMTP、または NNTP 構成に関するものである場合は、メタベース システムの通常のロジックに従って、メタベース ファイル内で処理されます。

Web サーバーの構成に含まれるカスタム プロパティも、新しいシステムにマップ (および永続化) されます。

こうしたマッピングは、対象のメタベース ノードに基づいて決定されます。 Webサーバーの構成は、通常、カスタム プロパティを含め LM/W3SVC の配下にあり、MIME マップなどのいくつかの機能が追加されています。

マッピングの目的は、ABO ビューと新しいシステム ビューとを相互に変換することです。 たとえば、新しいシステムでは、各サイトの下、そしてすべての仮想ディレクトリの上にアプリケーションを置くという概念が採用されています。 レガシー システムではアプリケーションの扱い方が異なり、アプリケーションは単なる仮想ディレクトリで、アプリケーションであることを示す特殊なプロパティ (AppIsolated や AppRoot) でマークされています。

ABO を呼び出して Web サーバーの構成を書き込むと、メタベース互換性コンポーネントによってデータが applicationHost.config に保存されます。情報はメモリ内に保持されないため、この処理は "ライトスルー" と呼ばれます。 ABO を呼び出して Web サーバーの構成を読み込むと、メタベース互換性コンポーネントにより情報が applicationHost.config から読み込まれます。この処理も情報の取得先がメモリではないので、"リードスルー" と呼ばれます。

サーバー ランタイムで利用することができない不完全なデータは、applicationHost.config の customMetadata と呼ばれる特別なセクションに保存されます。このセクションは、メタベース互換性機能用の永続ストアとして使用され、ユーザーはその内容を変更できません。 不完全なデータとは、たとえば、レガシー スクリプトによってサイト ID が設定されているが、サイト バインドが設定されていないような場合です。 IIS 6.0 では、このような呼び出しによって、無効なサイト オブジェクトが構成に追加されていました。 IIS 7.0 では、このような呼び出しはこのセクションに保持され、サーバーで使用されません。 それ以降の呼び出しでサイト バインドが設定された場合、サイト オブジェクトは完全であると見なされ、サーバー ランタイムによって選択されるセクションにすべて保存されます。 その時点で一時的なデータは削除されるので、データの残滓をシステムからクリーンアップする必要はありません。 このような後続の呼び出しが行われない場合、サーバー ランタイムではこの無効なサイトは認識されませんが、レガシー スクリプトでは、IIS 6.0 の場合と同様に、無効なサイトが ABO ビューに表示されます。 レガシー スクリプトから見ると、システムは IIS 6.0 と完全に互換しています。

レガシー スクリプトおよびアプリケーションによって設定されたカスタム Web サーバーのプロパティは、常にこのセクションに保存されます。 レガシー インターフェイスによって、IIS 6.0 の場合とまったく同様に取得できるので、システムは完全に互換しています。 これは、IIS 7.0 構成システムの推奨される拡張方法とは明らかに異なります。したがって、ここでも、このようなアプリケーションを徐々に移植し、IIS 7.0 構成システムで提供されている新しいインターフェイスや新しい機能を使用することを検討してください。

その他のメタベース構成データ

FTP、SMTP、および NNTP の構成は引き続きメタベース システムに保存され、新しい IIS 7.0 構成システムには移植されていません。 これらの構成設定は、レガシー プログラム インターフェイスと、metabase.xml ファイルの直接編集によって管理します。

概要

メタベースのキーおよびプロパティのほとんどの操作はシームレスに動作し、構成セクションや名前付きのプロパティなどの新しい IIS 7.0 の概念ではなく、従来の概念と名前が使用されます (従来同様、ABO ではプロパティ ID を、ADSI ではレガシー プロパティ名を使用できます)。

従来のユーザーは、ADSI スキーマを使用したり、IIS 6.0 と同様に拡張したりすることができます。

XML ファイルの互換性

Web サーバーを拡張したカスタム構成を含む Web サーバー構成は、metabase.xml ではなく system32\inetsrv\applicationHost.config に保存されます。したがって、レガシー サポートのレベルは API レベルで、ファイル形式レベルではありません (一部のレガシー機能がサポートされていないのもこのためです)。 レガシー インターフェイスの呼び出し元は、新しいファイル形式やファイル名または概念ではなく、IIS 6.0 の場合と同様に、構成の "ABO ビュー" を取得します。

これは、メタベース ACL などの概念がサポートされていないということを意味します。 メタベース ACL がメタベース ファイル形式と密接に関連しているからです。 IIS 7.0 構成システムでは、構成ファイル上の標準ファイル ACL を活用します。 メタベース ACL と標準ファイル ACL のマッピングは提供されません。

履歴ファイル、バックアップ/復元、およびインポート/エクスポートなどの機能は、新しい構成システムを利用するので、動作が異なります。 したがって、バックアップ構成に対する ABO 呼び出しは、無視されます。

レガシー メタベース機能

Windows Server® 2003 Service Pack 1 の IIS 6.0 では構成の監査機能が追加されました。 現在、この機能は IIS 7.0 ではサポートされていません。新しい構成システムの設計が大きく異なるからです。たとえば、IIS 7.0 はインプロセス構成システムを使用していますが、IIS 6.0 では、カプセル化によって他のプロセスのユーザー コードから分離された専用の NT サービスを使用しています。

レガシー メタベース プロパティ

レガシー プロパティのみがサポートされます。 新しい IIS 7.0 構成プロパティは従来のユーザーには返されません。また、.NET Framework 構成プロパティも返されません。

マッピングの制限

マッピング アルゴリズムでは、IIS 6.0 と IIS 7.0 の構成システム間の相違点を考慮する必要があります。 たとえば、IIS 6.0 ではサイトに名前 (サーバー コメント) を付ける必要はありません。名前を付ける場合も、一意の名前である必要はありません。 IIS 7.0 では、各サイトの名前が一意である必要があります。 このため、古い ServerComment プロパティを新しい Name プロパティにマップすることは容易ではありません。 マッピング アルゴリズムによって、名前は強制的にサイトごとに一意になります (これは IIS 7.0 構成システムの要件です)。一意の名前を作成するために、サーバー コメントに数字が追加されます。 サーバー コメントとして実際に設定された値は、スクリプトで指定された値と異なります。

分散構成

メタベース互換性機能では、applicationHost.config のみがサポートされています。 web.config ファイル内の構成は、従来のユーザーには返されないからです。 applicationHost.config で使用される場所のタグでは、URL ごとの構成がサポートされます。