DCOM の歴史
更新 : 2007 年 11 月
オートメーションは、1993 年前半に初めて導入されました。当時、オートメーションは同じコンピュータ上で動作しているアプリケーション間でしか使用できませんでした。しかし、その後、オートメーションではコンポーネント オブジェクト モデル (COM: Component Object Model) のようにほかの OLE と同じ基本コンセプトが共有されるようになったため、COM が更新されてリモート機能を備えるようになると、それに合わせてオートメーションも常に "リモート可能" にすることを意図するようになりました。また、まったくローカルなオペレーションから分散型のオペレーションに移行しても、既存のコードをほとんど書き換えなくても済むように計画されました。
ところで、"リモート処理" とはどのような意味でしょう。ローカルな COM では、インターフェイス コンシューマを実行するには、それがインターフェイス プロバイダと同じコンピュータ上にあることが必要でした。たとえば、Microsoft Visual Basic はデスクトップ コンピュータ上の Microsoft Excel は制御できても、別のコンピュータ上にある Excel の実行は指示できませんでした。分散 COM が開発されると、インターフェイス コンシューマがインターフェイス プロバイダと同じコンピュータ上で動作している必要はなくなりました。
COM がネットワーク対応になると、ローカル実行モデルに拘束されないインターフェイスを分散させられるようになりました。ただし、パラメータとしてデバイス コンテキストへのハンドルを必要とするメソッドを含む描画インターフェイスのように、一部のインターフェイスは本質的にローカル コンピュータの機能に依存します。インターフェイス コンシューマが要求を出す特定のインターフェイスは、異なるコンピュータで実行されている (または実行されることになる) オブジェクトのインスタンスが提供するものであってもかまいません。COM 内部の分散機構では、コンシューマをプロバイダに接続し、コンシューマ側のメソッド呼び出しがプロバイダ側に提示されます。呼び出されたメソッドは、プロバイダ側で実行されます。戻り値は、どれもコンシューマに返信されます。あらゆる点で、分散動作はコンシューマとプロバイダの両方に透過的です。
現在では、さまざまな COM が存在しています。分散 COM (DCOM: distributed COM) は、Version 4.0 以降の Windows NT で提供されており、Windows 2000 にも付属しています。1996 年後半以後は、Windows 9x でも利用できるようになっています。いずれの場合も、DCOM は、差し替え用と追加用の DLL、およびローカルとリモートの COM 機能を提供するユーティリティで構成されています。DCOM は、現在では Win32 ベースのプラットフォームの本質的な部分となっており、他社のプラットフォームでも近い将来利用できるようになる予定です。