
分散コンピューティングにおいて、分散オブジェクトとは、(オブジェクト指向プログラミングの意味で)異なるアドレス空間に分散されたオブジェクトのことです。これは、同一コンピュータ上の異なるプロセス、あるいはネットワークで接続された複数のコンピュータに分散されている場合もありますが、データの共有やメソッドの呼び出しによって連携して動作します。多くの場合、これは位置透過性を伴うため、リモートオブジェクトはローカルオブジェクトと同じように動作します。分散オブジェクト間の主な通信方法は、リモートメソッド呼び出しであり、一般的にはメッセージパッシングによって行われます。つまり、あるオブジェクトがリモートマシンまたはプロセスの別のオブジェクトにメッセージを送信して、何らかのタスクを実行させます。結果は呼び出し元のオブジェクトに返送されます。
分散オブジェクトは1990年代後半から2000年代初頭にかけて人気がありましたが、その後人気が衰えました。[ 1 ]
この用語は、分散コンピューティングの文脈で使用される基本オブジェクト概念の拡張、例えば複製オブジェクトやライブ分散オブジェクトなどを指す場合もある。
インターネットプロトコルスイートも参照してください。
ローカルオブジェクトと分散オブジェクトは多くの点で異なります。[ 3 ] [ 4 ]以下にそのいくつかを示します。
クロスプラットフォームシリアル化プロトコルであるCap'n ProtoのRPC機能は、分散オブジェクトプロトコルに相当します。分散オブジェクトのメソッド呼び出しは、インターフェース参照/機能を介して(必要に応じて単一のネットワークリクエストで連鎖的に)実行できます。[ 5 ]
分散オブジェクトは、Objective-CにおいてCocoa APIとNSConnectionクラスおよび関連オブジェクトを用いて実装されます。
Java RMIでは分散オブジェクトが使用されます。
CORBAを使用すると、分散型混合オブジェクトシステムを構築できます。
DCOMは、Microsoftプラットフォーム上の分散オブジェクトのためのフレームワークです。
DDObjectsは、Borland Delphiを使用した分散オブジェクトのためのフレームワークです。
Jtは、メッセージングパラダイムを用いた分散コンポーネントのためのフレームワークです。
JavaSpacesは、分散型共有メモリ(スペースベース)に関するSun社の仕様です。
Pyroは、 Pythonプログラミング言語を使用した分散オブジェクトのためのフレームワークです。
Distributed Ruby (DRb) は、 Ruby プログラミング言語を使用した分散オブジェクトのためのフレームワークです。