ICE や Corba などのテクノロジで使用されるサーバントとオブジェクトについてよく読みます。このようなものを読むことができるリソースがたくさんあります:
1 つのサーバントで複数のオブジェクトを処理できます (リソースの節約のため)。1 つのオブジェクトを複数のサーバントで処理できます (信頼性のため)。
この2つのステートメントの実際の例を誰か教えてもらえますか?
私が間違っていなければ、この用語は Douglas Schmidt が Common Object Request Architecture を説明した論文で作り出したものです。
以下は、いくつかの定義の直接引用です。
オブジェクト-- これは、サーヴァントとして知られる ID、インターフェース、および実装で構成される CORBA プログラミング エンティティです。
サーバント-- これは、CORBA IDL インターフェイスをサポートする操作を定義する実装プログラミング言語エンティティです。サーバントは、C、C++、Java、Smalltalk、Ada など、さまざまな言語で作成できます。
CORBA IDL スタブとスケルトン-- CORBA IDL スタブとスケルトンは、それぞれクライアント アプリケーションとサーバー アプリケーション、および ORB の間の「接着剤」として機能します。
ORBインターフェイス -- ORB は、さまざまな方法で実装できる論理エンティティです (1 つまたは複数のプロセスや一連のライブラリなど)。アプリケーションを実装の詳細から切り離すために、CORBA 仕様では ORB の抽象インターフェイスを定義しています。このインターフェイスは、オブジェクト参照を文字列に、またはその逆に変換したり、以下で説明する動的呼び出しインターフェイスを介して作成された要求の引数リストを作成したりするなど、さまざまなヘルパー関数を提供します。
Common Object Request Broker Architecture (CORBA) は、Object Management Group (OMG) によって定義された標準であり、さまざまなプラットフォームに展開されているシステムの通信を容易にするように設計されています。CORBA は、異なるオペレーティング システム、プログラミング言語、およびコンピューティング ハードウェア上のシステム間のコラボレーションを可能にします。
したがって、クライアント、サーバー、クライアントとサーバーのプロキシ、および ORB コアがあります。クライアントとサーバーは、プロキシを使用して ORB コアを介して通信します。ORB コアは、クライアントの要求をターゲット オブジェクトの実装に透過的に通信するためのメカニズムを提供します。クライアントの観点からは、これにより、リモート オブジェクトの呼び出しが、オブジェクトがローカル アドレス空間にあるように見えるため、分散環境でのクライアントの設計が簡素化されます。
上記のすべてを考慮すると、Servant はリモート クライアント呼び出しの呼び出しターゲットである実装であり、実際のターゲットであるリモート オブジェクトを抽象化しています。
あなたの質問に関しては、1 つのサーバントが、サーバントによってカプセル化された複数の分散オブジェクトへの呼び出しを処理できます。クライアントはこれらのオブジェクトに直接アクセスするのではなく、Servant 経由でアクセスすることに注意してください。