プライマリ相互運用アセンブリ (PIA) と相互運用アセンブリ (IA)

Office 2003 スマート タグ SDK

プライマリ相互運用アセンブリ (PIA) と相互運用アセンブリ (IA)

プライマリ相互運用アセンブリ (PIA) と相互運用アセンブリ (IA) の内容とその目的を知りたい場合は、次の説明が役立ちます。これらのトピックについては MSDN にも優れた記事がいくつか掲載されています。

次に示すのは、MSDN に掲載されている「プライマリ相互運用アセンブリ (PIA)」というタイトルの記事からの抜粋です。

PIA とは

他のマネージ アセンブリと同様に、相互運用アセンブリは、1 つの単位として配置、バージョンニング、および構成が行われる型のコレクションです。しかし、他のマネージ アセンブリとは異なり、相互運用アセンブリは、既に COM の中に定義されている型の (実装ではなく) 型定義を含んでいます。これらの型定義により、マネージ アプリケーションはコンパイル時に COM 型をバインドすることができ、共通言語ランタイムは実行時の型のマーシャリング方法についての情報を得ることができます。

特定の COM 型を記述する相互運用アセンブリは、いくつ存在していてもかまいませんが、そのうちの 1 つの相互運用アセンブリだけが PIA として指定されます。PIA は、これらの型の発行者によって定義された、型のオフィシャルな定義を含んでいます。PIA には、その型をマネージ コードから使いやすくする一定のカスタマイゼーションも含めることができます。PIA は常に元の COM 型の発行者によって署名されています。

COM 型の発行者によって提供されたものでない相互運用アセンブリは非オフィシャルなものと見なし、使用を避けるべきです。このようなアセンブリに定義されている型は、PIA の発行者によって署名されていないので、PIA で提供されている定義との互換性がありません。

PIA が重要な理由は

PIA が重要なのは、これが一意の型アイデンティティを提供するからです。PIA はオフィシャルな型定義を、他の相互運用アセンブリが提供する偽の定義と区別します。単一の型アイデンティティを持つことで、PIA に定義されている型を共有するアプリケーション間の互換性が保証されます。PIA はその発行者によって署名され、PrimaryInteropAssembly 属性で指定されているため、同じ型を定義している相互運用アセンブリと区別することができます。

次に示すのは、MSDN の Office Web サイトに掲載されている「A Primer to the Office XP Primary Interop Assemblies (英語情報)」というタイトルの Office Talk コラム記事からの抜粋です。

相互運用アセンブリ (IA) とは

相互運用アセンブリは、COM 型を定義するメタデータを含む特殊な .NET アセンブリで、この COM 型によって .NET コンパイラは COM オブジェクトへの呼び出しを解決できるようになります。ここで次の重要な違いを覚えておく必要があります。それは、相互運用アセンブリは COM 型の定義しか含まないということです。つまり元の COM ライブラリ (実際のバイナリ表現) を変更していないのです。まとめると次のようになります。相互運用アセンブリには、共通言語ランタイム下で実行される .NET マネージ コードが、さまざまな Microsoft Office COM ベースのオブジェクト モデル API を使用して Microsoft Office でアンマネージ コードを呼び出せるようにするために必要な情報が含まれています。

相互運用アセンブリとプライマリ相互運用アセンブリとの違い

この 2 つはほとんどの部分で同じものなのですが、いくつかの注目すべき相違点があります。プライマリ相互運用アセンブリは、ソフトウェア製造元によってリリースされたオフィシャルの相互運用アセンブリです。Microsoft Office XP PIA の場合、Microsoft が Office の COM ベースのオブジェクト モデルの所有者であり、オフィシャルなプライマリ相互機能アセンブリのリリース元です。

.....

PIA と他の相互運用アセンブリとのもう 1 つの相違点は、COM ライブラリの保有者が、アセンブリ内の特定の要素を名前変更または非表示にすることで PIA をユーザー設定し、属性を追加して .NET と COM の間のマーシャリング動作を変更できることです。

ここに、ユーザーが TLBIMP.EXE や Visual Studio .NET によって生成したアセンブリではなく、Microsoft Office XP PIA を使用することの重要性があります。これらのツールを使用すると通常のシナリオのある程度までの記述はできますが、深く広い範囲に及ぶ Office オブジェクト モデルの膨大なニュアンスを理解することを期待するのは現実的ではありません。Microsoft では相互運用性を向上させるために PIA のユーザー設定を行っています。

ここまでの説明を要約すると、次のようになります。

  • Office および .NET の開発には相互運用アセンブリが必要である。

  • Microsoft の提供するプライマリ相互運用アセンブリはオフィシャルのものであるため、これを使用する必要がある。

  • オフィシャルの PIA は相互運用性の向上のために調整されている。

  • Microsoft は Office XP PIA のテストを行っており、この PIA はユーザーが独自で生成したアセンブリよりも適していると考えられる。