オブジェクト ハンドラー
OLE サーバー アプリケーションがローカル サーバーである場合、つまり独自のプロセス空間で実行される場合、コンテナーとサーバー間の通信はプロセス境界を越えて行われる必要があります。 このプロセスは高価であるため、OLE はコンテナーのプロセス空間に読み込まれたサロゲート オブジェクトに依存して、ローカル サーバー アプリケーションの代わりに動作します。 オブジェクト ハンドラーと呼ばれるこのサロゲート オブジェクトは、描画要求など、サーバー アプリケーションの注意を必要としないサービス コンテナー要求を処理します。 オブジェクト ハンドラーが提供できないものをコンテナーが要求すると、ハンドラーは COM のアウトプロセス通信メカニズムを使用してサーバー アプリケーションと通信します。
オブジェクト ハンドラーは、オブジェクト クラスに固有のものです。 あるクラスのハンドラーのインスタンスを作成する場合、別のクラスに使用することはできません。 複合ドキュメントに使用される場合、オブジェクト ハンドラーは、特定のクラスのオブジェクトがリモートでアクセスされるときにコンテナー側のデータ構造を実装します。
OLE には、ローカル サーバー アプリケーションで使用できる既定のオブジェクト ハンドラーが用意されています。 特別な動作を必要とするアプリケーションの場合、開発者は、既定のハンドラーを置き換えるか、それを使用して特定の既定のの動作を提供するカスタム ハンドラーを実装できます。
オブジェクト ハンドラーは、いくつかの対話コンポーネントを含む DLL です。 これらのコンポーネントには、ハンドラーとそのサーバー アプリケーション間の通信を管理するリモート処理部分、オブジェクトのデータとそのデータのフォーマットと表示方法に関する情報を保存するキャッシュ、DLL の他のコンポーネントのアクティビティを調整する制御オブジェクトが含まれます。 さらに、オブジェクトがリンクの場合、DLL にはリンク コンポーネントまたはリンク オブジェクトも含まれ、リンク ソースの名前と場所を追跡します。
キャッシュには、ハンドラーがコンテナー内の読み込まれたオブジェクト (実行中ではない) を表示するのに十分なデータとプレゼンテーション情報が含まれています。 OLE は、OLE の既定のオブジェクト ハンドラーとリンク オブジェクトによって使用されるキャッシュの実装を提供します。 キャッシュは、コンテナー描画要求を満たすためにオブジェクト ハンドラーが必要とする形式でデータを格納します。 オブジェクトのデータが変更されると、オブジェクトは更新を実行できるようにキャッシュに通知を送信します。 キャッシュの詳細については、「キャッシュの表示」を参照してください。
詳細については、次のトピックを参照してください。
関連トピック