新しい機能を追加するためにアプリケーションを再コンパイルして再配置する手間を省くことを目的として、アプリケーションは機能拡張メカニズムを実装し、開発者 (開発元、サード パーティのいずれも) が元のアプリケーションに統合される別のアプリケーションを作成できるようにしています。こうした拡張機能をサポートする方法としては、アドイン ("アドオン"、"プラグイン" などとも呼ばれる) の使用が最も一般的です。アドインによる機能拡張を実行する実際のアプリケーションとして、次のようなものが挙げられます。
たとえば、Windows Media Player のアドイン モデルにおいて、サード パーティの開発者は、Windows Media Player の機能をさまざまな形で拡張する "プラグイン" を実装できます。たとえば、Windows Media Player でネイティブ サポートされていないメディア形式 (DVD、MP3 など) のデコーダおよびエンコーダ、オーディオ エフェクト、スキンなどを作成できます。各アドイン モデルは、アプリケーション固有の機能を組み込むために構築されますが、どのアドイン モデルにも共通するエンティティや動作がいくつかあります。
典型的な機能拡張ソリューションの主な 3 つのエンティティは、コントラクト、アドイン、およびホスト アプリケーションです。コントラクトは、次の 2 つの方法で、アドインとホスト アプリケーションとの統合方法を定義します。
アドインを使用できるようにするためには、ホスト アプリケーションが実行時にアドインを検索して読み込む必要があります。したがって、アドインをサポートするアプリケーションには次の機能が必要です。
探索 : ホスト アプリケーションによってサポートされるコントラクトに準拠しているアドインを検索します。
アクティブ化 : アドインを読み込んで実行し、アドインとの通信を確立します。
分離 : アプリケーション ドメインまたはアプリケーション プロセスを使用することで分離境界を確立し、アドインの使用に伴うセキュリティおよび実行に関する潜在的な問題からアプリケーションを保護します。
通信 : アドインとホスト アプリケーションが分離の境界を越えて通信し、メソッドを呼び出したりデータを渡したりできるようにします。
有効期限管理 : アプリケーション ドメインおよびアプリケーション プロセスの読み込み、およびアンロードをクリーンで予測可能な方法で行います (「アプリケーション ドメインの概要」を参照)。
バージョン管理 : ホスト アプリケーションとアドインのどちらかに、新バージョンが作成された後も引き続き通信できるようにします。
このことからわかるように、堅牢なアドイン モデルの開発は簡単なことではありません。そのため、.NET Framework にはアドイン モデルの構築に必要なインフラストラクチャが用意されています。
メモ : |
|---|
アドインの詳細については、「アドインの概要」を参照してください。 |