アドイン パイプラインのシナリオ
アドイン パイプラインのオブジェクト モデルによって相互運用性の柔軟性が増し、ホスト アプリケーションとアドインを次のように利用できます。
下位互換性 - 新しいバージョンのホストまたはアドインは、旧バージョンのホストまたはアドインと共存して動作します。
分離 - 1 つ以上のアドインを、ホスト プロセスまたは分離プロセスのアプリケーション ドメインに移動できます。
共有 - 1 つのアドインを複数の通信パイプラインで使用できます。
次の図は、単純な通信パイプラインとそのセグメントを示しています。
標準的な通信パイプライン
下位互換性
下位互換性を実現する 2 つのシナリオがあります。
新バージョンのホスト、旧バージョンのアドイン
次の図は、新バージョンのホストと旧バージョンのアドインが連携して動作する方法を示しています。
新バージョンのホストと旧バージョンのアドインの通信パイプライン
この下位互換性のシナリオでは、新バージョンのホスト (ホスト v2) が旧バージョンのアドイン (アドイン v1) と通信する場合、アドイン側アダプター (アドイン側アダプター v1->v2) が旧バージョンのアドインが理解できる形式に型を変換するため、連携動作が可能になります。
新バージョンのアドイン (アドイン v2) には、新バージョンのホストと通信するための独自のビューとアダプター セグメントが用意されています。
旧バージョンのホスト、新バージョンのアドイン
次の図は、旧バージョンのホストと新バージョンのアドインが連携して動作する方法を示しています。
旧バージョンのホストと新バージョンのアドインの通信パイプライン
この下位互換性のシナリオでは、新バージョンのアドイン (アドイン v2) が旧バージョンのホスト (ホスト v1) と通信する場合、アドイン側のアダプター (アドイン側アダプター v2->v1) が旧バージョンのホストが理解できる形式に型を変換するため、連携動作が可能になります。
さまざまな分離レベル
Activate メソッドの適切なオーバーロードを使用して、アドインを新しいプロセスやアプリケーション ドメインでアクティブ化できます。 この分離は、次の理由で必要となる場合があります。
ホスト アプリケーションが変更され、旧バージョンのアドインでは新しい依存関係に対応できない状況を解決する。 たとえば、こうした状況はホスト アプリケーションが新しいバージョンの .NET Framework にアップグレードされる場合に生じます。
アドインを独自のプロセスで実行することによって信頼性を確保する。
アドイン用にサンドボックスを作成します。 たとえば、ホスト アプリケーションとアドインは、AddInSecurityLevel 列挙体に指定されているように、それぞれ異なる信頼レベルを持ちます。
次の図は、2 つのアドインうちの 1 つが分離プロセスで実行されている場合の通信パイプラインを示しています。 この図では、OOP が分離プロセスを指しています。
分離アドインとの通信パイプライン
このシナリオでは、パイプラインの開発者には 2 つの異なるバージョンのコントラクトとアダプターが用意されています。1 つはアプリケーション ドメイン間通信に最適なバージョンであり、もう 1 つはプロセス間通信に最適なバージョンです。 アドインまたはホストは、コントラクトおよび分離レベルに関係なく、同じビューを使用するため、これらのバージョンの違いについて意識する必要はありません。
共有アドイン
アドインがホストと互換性がある場合、1 つのアドインを複数のホストで使用できます。 たとえば、共有アドインを使用して、ホスト Web アプリケーションでインターネット検索を実行するためのツール バーを実装できます。 別の例として、電子メール サーバーまたは電子メール クライアントにスパム フィルターやウイルス対策を講じる共有アドインが挙げられます。
新しいホストを扱えるようにアドインを有効にするには、アドイン ビューからホストのコントラクトに変換する新しいアドイン側のアダプターを作成する必要があります。
次の図は、アドイン (アドイン A) を 2 つのホスト アプリケーション (ホスト A とホスト B) で共有する方法について示しています。
共有アドインとの通信パイプライン