COM 相互運用の概要 (Visual Basic)

コンポーネント オブジェクト モデル (COM) により、オブジェクトがその機能を他のコンポーネントに公開し、アプリケーションをホストできます。 COM オブジェクトは長年にわたって Windows プログラミングの基本となってきましたが、共通言語ランタイム (CLR) 用に設計されたアプリケーションには多くの利点があります。

.NET Framework アプリケーションによって、最終的に COM で開発されたものが置き換えられます。 それまでは、Visual Studio を使用して COM オブジェクトを使用するか、作成する必要がある可能性があります。 COM との相互運用性、つまり COM 相互運用により、自分のペースで .NET Framework に移行しながら、既存の COM オブジェクトを使用できます。

.NET Framework を使用して COM コンポーネントを作成することにより、登録を必要としない COM 相互運用を使用できます。 これにより、コンピューターに複数のバージョンがインストールされている場合に有効にする DLL バージョンを制御でき、エンド ユーザーは、XCOPY または FTP を使用して、アプリケーションを、それが実行可能なコンピューター上の適切なディレクトリにコピーできます。 詳細については、「登録を必要としない COM 相互運用機能」を参照してください。

マネージド コードとデータ

.NET Framework 用に開発されたコードはマネージド コードと呼ばれ、CLR によって使用されるメタデータが含まれます。 .NET Framework アプリケーションによって使用されるデータは、マネージド データと呼ばれます。ランタイムによって、メモリの割り当てや解放、型チェックの実行などのデータ関連タスクが管理されるためです。 既定で Visual Basic .NET ではマネージド コードとデータが使用されますが、相互運用アセンブリを使用して、COM オブジェクトのアンマネージド コードとデータにアクセスできます (このページで後述しています)。

アセンブリ

アセンブリは、.NET Framework アプリケーションの主な構成要素です。 これは、1 つ以上のファイルを含む 1 つの実装単位として、ビルド、バージョン管理、およびデプロイされる機能のコレクションです。 各アセンブリには、アセンブリ マニフェストが含まれます。

タイプ ライブラリとアセンブリ マニフェスト

タイプ ライブラリは、メンバー名やデータ型など、COM オブジェクトの特性を記述します。 アセンブリ マニフェストは、.NET Framework アプリケーションに対して同じ機能を実行します。 それらには、次に関する情報が含まれます。

  • アセンブリ ID、バージョン、カルチャ、およびデジタル署名。

  • アセンブリ実装を構成するファイル。

  • アセンブリを構成する型とリソース。 これには、そこからエクスポートされたものも含まれます。

  • 他のアセンブリに対するコンパイル時の依存関係。

  • アセンブリを正常に実行するために必要なアクセス許可。

アセンブリとアセンブリ マニフェストの詳細については、「.NET のアセンブリ」を参照してください。

タイプ ライブラリのインポートとエクスポート

Visual Studio には、Tlbimp というユーティリティが含まれており、これにより、タイプ ライブラリから .NET Framework アプリケーションに情報をインポートできます。 アセンブリからタイプ ライブラリを生成するには、Tlbexp ユーティリティを使用します。

Tlbimp と Tlbexp の詳細については、「Tlbimp.exe (タイプ ライブラリ インポーター)」と「Tlbexp.exe (タイプ ライブラリ エクスポーター)」を参照してください。

相互運用機能アセンブリ

相互運用機能アセンブリは、マネージド コードとアンマネージド コードの間を橋渡しし、COM オブジェクト メンバーを同等の .NET Framework マネージド メンバーにマップする .NET Framework アセンブリです。 Visual Basic .NET によって作成された相互運用機能アセンブリは、相互運用マーシャリングなど、COM オブジェクトの操作に関する多くの詳細を処理します。

相互運用マーシャリング

すべての .NET Framework アプリケーションでは、使用するプログラミング言語に関係なく、オブジェクトの相互運用性を実現する一連の共通型を共有します。 COM オブジェクトのパラメーターと戻り値に、マネージド コードで使用されているものと異なるデータ型が使われている場合があります。 "相互運用マーシャリング" は、パラメーターと戻り値を、COM オブジェクトとの間で移動するときと同等のデータ型にパッケージ化するプロセスです。 詳細については、「相互運用マーシャリング」を参照してください。

関連項目