COM クライアント
COM の基礎:インデックス への移動
クライアントは,COM オブジェクトが何を提供できるかを判断するために,そのオブジェクトのインターフェースに常に問い合わせることができます。すべての COM オブジェクトでは,既知のインターフェースをクライアントが要求できます。さらに,サーバーが IDispatch インターフェースをサポートする場合に,クライアントはそのインターフェースがサポートするメソッドについての情報をサーバーに問い合わせることができます。サーバーオブジェクトは,そのオブジェクトを使用するクライアントについて,何も予想しません。同様に,クライアントは,オブジェクトがどのようにして(またはどこで)サービスを提供するかを知る必要がなく,サーバーオブジェクトがインターフェースを通じて公表するサービスを提供することをあてにするだけで済みます。
COM クライアントには,コントローラとコンテナの 2 種類があります。コントローラはサーバーを起動し,そのインターフェースを通じてサーバーと対話します。コントローラは COM オブジェクトにサービスを要求するか,COM オブジェクトを個別のプロセスとして駆動します。コンテナは,そのユーザーインターフェースに表示されるビジュアルコントロールまたはオブジェクトのホストになります。コンテナは,定義済みのインターフェースを使用して,表示の問題をサーバーオブジェクトとネゴシエートします。DCOM を介してコンテナ関係を持つことはできません。たとえば,コンテナのユーザーインターフェースに表示するビジュアルコントロールは,ローカルに配置しなければなりません。これは,コントロールが自分自身をペイントすると想定されるからです。コントロールが自分自身をペイントするには,ローカルの GDI リソースにアクセスできるようにする必要があります。
Delphi は,COM クライアントの開発を容易にするために,コンポーネントラッパーにタイプライブラリまたは ActiveX コントロールをインポートし,サーバーオブジェクトをほかの VCL コンポーネントと同じように見せることができるようにしています。このプロセスについての詳細は,「COM クライアントの作成」を参照してください。