COM サーバー
COM アプリケーションの各部分 への移動
COM サーバーは、クライアントのアプリケーションまたはライブラリにサービスを提供するアプリケーションまたはライブラリです。COM サーバーは、1 つ以上の COM オブジェクトで構成され、COM オブジェクトは一連のプロパティとメソッドで構成されます。
クライアントは、COM オブジェクトが自分のサービスをどのようにして実行するかを知りません。オブジェクトの実装はカプセル化されたままです。オブジェクトは、インターフェイスを通じて自分のサービスを提供します。
さらに、クライアントは、COM オブジェクトがどこに存在するかを知る必要もありません。COM を使用すると、オブジェクトの場所に関係なく、透過的にアクセスすることができます。
クライアントは、COM オブジェクトにサービスを要求するときに、クラス識別子(CLSID)を COM に渡します。CLSID は、COM オブジェクトを特定するためのただの GUID です。COM は、システム レジストリに登録されたこの CLSID を使用して、適切なサーバー実装を探します。サーバーが見つかると、COM はそのコードをメモリに読み込んで、そのクライアント用のオブジェクト インスタンスをサーバーに作成させます。この処理は、要求に応じてオブジェクトのインスタンスを作成する(インターフェイスに基づく)クラス ファクトリと呼ばれる特殊なオブジェクトを介して、間接的に行われます。
COM サーバーは、最低でも以下を行う必要があります。
- サーバー モジュールとクラス識別子(CLSID)を関連付けるエントリをシステム レジストリに登録する。
- 特定の CLSID の別のオブジェクトを作成するクラス ファクトリ オブジェクトを実装する。
- クラス ファクトリを COM に公開する。
- クライアントにサービスを提供していないサーバーをメモリから削除するためのアンロード メカニズムを提供する。
メモ: Delphi では、ウィザードにより COM オブジェクトとサーバーの作成を自動化しています。