私はかなり複雑な(しかし、大規模ではない10,00オブジェクトではない)オブジェクトモデルを心臓に持つクライアント/サーバアプリケーションを構築しています。複数のクライアントが(Eclipse RCP GUIを介して)モデルを表示する必要がありますが、サーバーはモデルを直接編集できる唯一のノードになります。私はモデルへの編集をクライアントに公開したい。新しいクライアントはモデルを要求し、更新を登録することができます。分散MVCパターンを実装するための分散キャッシュソリューションを見る
実際にはかなり標準的なModel-View-Controllerパターンです。
私のオブジェクトモデルの配布を処理し、変更をモデルに配布する、優れたオープンソースのレプリケートされたキャッシュソリューションを誰かが提案することができます。 1つのフィールドが変更されるたびに完全なモデルを送信するのではなく、「デルタ」をクライアントに送信します。
public class Person implements Serializable {
private Person manager;
private String name;
public Person (Person manager, String name) {
が私のキャッシュに3人を追加します:
Person boss = new Person(null,"TheBoss");
Person employee1 = new Person(boss,"employee 1");
Person employee2 = new Person(boss,"employee 2");
cache.put(new Element("boss",boss)
cache.put(new Element("employee1",employee1)
cache.put(new Element("employee2",employee2)
はまた、私は「人の物を持っている場合、例えば、オブジェクトグラフを複製し、一貫性を維持できるようにする必要があります
[更新「上司の名前:
boss.setName("TheBossXX");
cache.put(new Element("boss",boss)
は私が返すために、次のコードを期待する 『すべてのノードでTheBossXX』を:
つまりPerson e1 = (Person) cache.get("employee1").getValue()
Person b1 = e1.getManager()
LOG.info(b1.getName());
、私は私の解決策は、互いを参照し、すべてのノード上のものreplationshipsを維持どのオブジェクトを知りたいです。
あなたのご意見をお聞かせください。
ニック