COM テクノロジの概要

提供: RAD Studio
移動先: 案内検索

COM の基礎:インデックス への移動


Delphi には、Microsoft の COM(Component Object Model)に基づいたアプリケーションを実装しやすくするためのウィザードやクラスが用意されています。 これらのウィザードを使用すると、アプリケーション内で使用する COM ベースのクラスやコンポーネントを作成したり、COM オブジェクト、オートメーション サーバー(Active Server オブジェクトを含む)、ActiveX コントロール、または ActiveForm を実装した完全機能版の COM クライアントまたはサーバーを作成することができます。

COM は、Windows プラットフォーム上で動作するソフトウェア コンポーネントとアプリケーションの間のやり取りを可能にするための、言語非依存のソフトウェア コンポーネント モデルです。COM の主要機能は、インターフェイスを明確に定義することで、コンポーネント間、アプリケーション間、クライアント/サーバー間の通信を可能にすることです。インターフェイスは、クライアントが COM コンポーネントに対して実行時にどの機能をサポートしているかを問い合わせる手段となります。コンポーネントに機能を追加するには、追加機能用のインターフェイスを追加すればよいだけです。

アプリケーションは、同じコンピュータ上にある COM コンポーネントのインターフェイスにアクセスしたり、分散 COM(DCOM)と呼ばれるメカニズムを使ってネットワーク上の別のコンピュータ上にある COM コンポーネントのインターフェイスにアクセスすることができます。クライアント、サーバー、およびインターフェイスの詳細は、「COM アプリケーションの各部分」を参照してください。

仕様としての COM と実装としての COM

COM は、仕様でもあり実装でもあります。COM の仕様には、オブジェクトの作成方法とオブジェクト間の通信方法が定義されます。この仕様に従って、COM オブジェクトをさまざまな言語で記述し、さまざまなプロセス空間やさまざまなプラットフォームで実行することができます。記述された仕様に従ってさえいれば、通信を行うことができます。これにより、従来の古いコードをコンポーネントとして、オブジェクト指向言語で実装された新しいコンポーネントと統合することができます。

COM の実装は、記述した仕様をサポートする中核サービス群を提供する Win32 サブシステムに組み込まれています。COM ライブラリには、COM オブジェクトの中核機能を定義した一連の標準インターフェイスと、COM オブジェクトの作成と管理を目的とした少数の API 関数が含まれています。

アプリケーションで Delphi ウィザードや VCL オブジェクトを使用している場合は、COM 仕様の Delphi の実装を使用しています。さらに、直接実装されていない機能に代わる COM サービスのラッパーも、Delphi によって提供されています。これらのラッパーの定義は ComObj ユニットに、API 定義は AxCtrls ユニットにあります。

メモ: Delphi のインターフェイスと言語は COM の仕様に対応しています。Delphi では、Delphi ActiveX フレームワーク(DAX)という一連のクラスを使用して、COM 仕様に合ったオブジェクトを実装しています。これらのクラスは、AxCtrlsOleCtrlsOleServer の各ユニットにあります。また、COM API の Delphi インターフェイスは、ActiveX.pas および ComSvcs.pas にあります。

COM 拡張機能

COM は、進化するにつれて、基本的な COM サービスの範囲を超えて拡張されています。COM は、オートメーション、ActiveX コントロール、Active ディレクトリといった他の技術の土台となっています。COM 拡張機能の詳細は、「COM 拡張機能」を参照してください。

Delphi では、上記技術を Delphi 環境に統合するウィザードを提供することで、アプリケーションを簡単に実装できるようにしています。詳細は、「ウィザードを使用した COM オブジェクトの実装」を参照してください。

関連トピック

関連項目