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