コンポーネント オブジェクト モデル

Microsoftコンポーネント オブジェクト モデル (COM) は、対話可能なバイナリ ソフトウェア コンポーネントを作成するための、プラットフォームに依存しない分散型のオブジェクト指向システムです。 COMは、MicrosoftのOLE (複合ドキュメント)、ActiveX (インターネット対応コンポーネント) などの基盤テクノロジです。

COM (したがって、すべての COM ベースのテクノロジ) を理解するには、オブジェクト指向言語ではなく標準であることを理解することが重要です。 COM では、アプリケーションの構造化方法も指定しません。言語、構造、実装の詳細は、アプリケーション開発者に任されています。 代わりに、COM は、COM オブジェクト (COM コンポーネントと呼ばれたり、単に オブジェクトとも呼ばれます) が他のオブジェクトと対話できるようにするオブジェクト モデルとプログラミング要件を指定します。 これらのオブジェクトは、他のプロセス内の 1 つのプロセス内に配置でき、リモート コンピューター上に配置することもできます。 これらは異なる言語で記述することができ、構造的に非常に異なる可能性があるため、COM は バイナリ標準と呼ばれます。プログラムがバイナリ マシン コードに変換された後に適用される標準です。

COM の唯一の言語要件は、ポインターの構造を作成し、明示的または暗黙的にポインターを介して関数を呼び出すことができる言語でコードが生成されるということです。 C++ や Smalltalk などのオブジェクト指向言語は、COM オブジェクトの実装を簡略化するプログラミング メカニズムを提供しますが、C、Java、VBScript などの言語を使用して COM オブジェクトを作成および使用できます。

COM は、COM オブジェクトの本質的な性質を定義します。 一般に、ソフトウェア オブジェクトは、一連のデータとデータを操作する関数で構成されます。 COM オブジェクトは、オブジェクトのデータへのアクセスが、1 つ以上の関連関数のセットを通じて排他的に実現されるオブジェクトです。 これらの関数セットは インターフェイスと呼ばれ、インターフェイスの関数は メソッドと呼ばれます。 さらに、COM では、インターフェイスのメソッドにアクセスする唯一の方法は、インターフェイスへのポインターを介して行う必要があります。

基本的なバイナリ オブジェクト標準を指定するだけでなく、COM は、すべての COM ベースのテクノロジに共通する関数を提供する特定の基本的なインターフェイスを定義し、すべてのコンポーネントに必要な少数の関数を提供します。 COM では、分散環境でオブジェクトがどのように連携するかを定義し、システムとコンポーネントの整合性を提供するためのセキュリティ機能を追加しました。

このセクションの次のトピックでは、COM オブジェクトの設計に関連する基本的な COM の問題について説明します。