COM テクノロジーの概要
COM の基礎:インデックス への移動
Delphi は,Microsoft のコンポーネントオブジェクトモデル(COM: Component Object Model)に基づいたアプリケーションの実装を容易にするためのウィザードとクラスを提供しています。これらのウィザードを使用すれば,アプリケーション内で使用する COM ベースのクラスおよびコンポーネントを作成したり,COM オブジェクトを実装した完全に機能する COM クライアントまたはサーバー,オートメーションサーバー(Active Server オブジェクトなど),ActiveX コントロール,または ActiveForm を作成することができます。
COM は,Windows プラットフォーム上で動作するソフトウェアコンポーネントとアプリケーションの間の対話を可能にするための,言語に依存しないソフトウェアコンポーネントモデルです。COM の重要な機能は,明確に定義されたインターフェースを通じて,コンポーネント間,アプリケーション間,およびクライアントとサーバー間の通信を可能にすることです。インターフェースは,クライアントが COM コンポーネントに対して実行時にどの機能をサポートするかを問い合わせるための手段を提供します。コンポーネントに機能を追加するには,追加機能用のインターフェースを追加するだけで済みます。
アプリケーションは,同じコンピュータ上にある COM コンポーネントのインターフェースにアクセスするか,分散 COM(DCOM)と呼ばれるメカニズムを使ってネットワーク上の別のコンピュータ上にある COM コンポーネントのインターフェースにアクセスすることができます。クライアント,サーバー,およびインターフェースの詳細は,「COM アプリケーションの各部分」を参照してください。
仕様としての COM と実装としての COM
COM は,仕様であると同時に実装されたものでもあります。COM の仕様は,オブジェクトの作成とオブジェクト相互の通信がどのように行われるかを定義しています。この仕様にしたがって,COM オブジェクトをさまざまな言語で書いて,さまざまなプロセス空間およびプラットフォームで実行することができます。書かれた仕様にしたがってさえいれば,オブジェクトは互いに通信することができます。したがって,古いコードを 1 つのコンポーネントとして,オブジェクト指向言語で書かれた新しいコンポーネントと統合することができます。
COM の実装は Win32 サブシステムに組み込まれています。この Win32 サブシステムは,COM 仕様をサポートするための多数のコアサービスを提供します。COM ライブラリには,COM オブジェクトの基本機能を定義する標準インターフェースセットや,COM オブジェクトの作成と管理を目的としたいくつかの API 関数が入っています。
アプリケーションの中で Delphi のウィザードと VCL オブジェクトを使用するということは,COM 仕様の Delphi の実装を使用するということです。さらに,直接実装されていない機能に代わる COM サービスのためのラッパーも提供されています。ComObj ユニットで定義したラッパーや AxCtrls ユニットの API 定義を見つけることができます。
メモ: Delphi のインターフェースと言語は,COM の仕様に対応しています。Delphi は Delphi ActiveX framework(DAX)と呼ばれるクラスのセットを使用して,COM 仕様に合ったオブジェクトを実装します。これらのクラスは AxCtrls,OleCtrls,OleServer の各ユニットにあります。また,COM API の Delphi インターフェースは,ActiveX.pas と ComSvcs.pas にあります。
COM 拡張機能
COM は,進化するにつれて基本的な COM サービスをはるかに超えて拡張されました。COM は,オートメーション,ActiveX コントロール,Active ディレクトリといったほかの技術の土台として機能します。COM 拡張機能の詳細は,「COM 拡張機能」を参照してください。
Delphi は,上の技術を Delphi 環境に統合するアプリケーションを簡単に作成するためのウィザードを提供しています。詳細は,「ウィザードを使って COM オブジェクトを実装する」を参照してください。