プレイヤーのアカウント/状態がサーバーに同期されるゲーム/アプリケーションを実装しています。エンティティ(エンティティはユーザーのアカウント)のネストされたオブジェクトの変更を伝達する一般的なフレームワークを検討しています。計算/リフレクションの説明のために、クライアントとサーバーの両方がJavaで記述されていると仮定します(実際には、クライアントはプロパティを動的に変更できるActionscriptにあります)
たとえば、Firebaseを取り上げます。ルートオブジェクト(Firebaseオブジェクト)の任意のオブジェクトへの変更は、おそらく次のようなリクエストで伝播されます。
Service: PersistenceService
Action: modifiedObjects
Body:
Objects [{"/full/Path/To/Object/1","newValue"},{"/full/Path/to/Object/2","newValue"}]
あなたの入力に対する私の要求は次のとおりです。
1)オブジェクトのツリーへの変更を伝播するためのこの一般的なフレームワークの実装に関する以下の考えを修正および/または補強してください。
送信側では、すべてのオブジェクトが次のいずれかであるように見えます。
1)ルートエンティティからのフルパスを保存する必要があります
2)ネストされたすべてのオブジェクトのプロパティへの変更は、反射的に行う必要があります
また
同期を強制する必要があります。最後のリクエストからエンティティに保存されたオブジェクトツリーを、変更のために現在のオブジェクトツリーと比較します。
サーバー側では、オブジェクトのパスを分析して、1回のリクエストで複数回アクセスされるオブジェクトをキャッシュし、参照/検索コレクションによってツリーに複数回アクセスしないようにすることができます。