COM 拡張機能
COM の基礎:インデックス への移動
COM は,元々は基本通信機能を提供し、拡張を通じてその機能を拡大できるようにするために設計されました。COM 自体は、特定の目的に合わせて特殊化したインターフェイスのセットを定義することによって、基本機能を拡張してきました。
COM 拡張機能が現在提供しているサービスには、次のようなものがあります。
オートメーションとは、あるアプリケーションが、別のアプリケーション内のオブジェクトをプログラム的に制御する機能をさします。オートメーション サーバーは、実行時に他の実行可能ファイルによって制御することができるオブジェクトです。 | |
ActiveX コントロールは特殊なインプロセス サーバーであり、一般的に、クライアント アプリケーションに埋め込まれるようになっています。コントロールは、イベントと同様、設計と実行の動作を提供します。 | |
アクティブ サーバー ページは、HTML ページを生成するスクリプトです。スクリプト言語は、オートメーション オブジェクトを作成および実行するための構成要素が含まれています。つまり、アクティブ サーバー ページは、オートメーションのコントローラとして動作します。 | |
リンクと埋め込み、ドラッグ&ドロップ、ビジュアル編集、インプレース アクティベーションをサポートするオブジェクト。Word ドキュメントと Excel スプレッドシートは、アクティブ ドキュメントの一例です。 | |
COM+ イベントやイベント サブスクリプション オブジェクト |
祖結合の COM+ イベント モデルをサポートするオブジェクト。ActiveX コントロールで使用される密結合モデルとは異なり、COM+ イベント モデルでは、イベント サブスクライバから独立してイベント パブリッシャを開発できます。 |
静的データ構造体のコレクションで、大抵リソースとして保存されます。このリソースでは、オブジェクトやそのインターフェイスについての詳しい型情報が提供されます。オートメーション サーバーのクライアント、ActiveX コントロール、トランザクション オブジェクトでは、型情報が使用可能であることを想定しています。 |
次の図では、COM 拡張の関係と、COM 上にそれらがどのように構築されているかを図解しています:
COM オブジェクトは、ビジュアルのものも、非ビジュアルのものもあります。クライアントと同じプロセス空間で実行しなければならないオブジェクトもありますが、オブジェクトがマーシャリングのサポートを提供していれば、異なるプロセスやリモート マシンで実行することができます。次の表では、作成可能な COM オブジェクトのタイプや、それらがビジュアルかどうか、実行できるプロセス空間、それらがどのようにマーシャリングされるか、そして、タイプ ライブラリが必要かどうかがまとめてあります。
COM オブジェクトの要件:
オブジェクト | ビジュアル オブジェクトか? | プロセス空間 | 通信 | タイプ ライブラリ |
---|---|---|---|---|
アクティブ ドキュメント |
通常はそう |
プロセス内、プロセス外 |
OLE Verb |
いいえ |
オートメーション サーバー |
場合による |
プロセス内、プロセス外、リモート |
IDispatch インターフェイスを使用して自動的にマーシャリングされる(プロセス外およびリモート サーバーの場合) |
自動マーシャリングに必要 |
ActiveX コントロール |
通常はそう |
プロセス内 |
IDispatch インターフェイスを使用して自動的にマーシャリングされる |
必要 |
COM+ |
場合による |
MTS の場合プロセス内、COM+ は任意 |
タイプ ライブラリを介して自動的にマーシャリングされる |
必要 |
プロセス内カスタム インターフェイス オブジェクト |
場合による |
プロセス内 |
プロセス内サーバーの場合マーシャリングの必要なし |
推奨 |
その他のカスタム インターフェイス オブジェクト |
場合による |
プロセス内、プロセス外、リモート |
タイプ ライブラリを介して自動的にマーシャリングされる。そうでなければ、カスタム インターフェイスを使用して手動でマーシャリングする |
推奨 |