我正在实现一个游戏/应用程序,其中玩家的帐户/状态同步到服务器。我正在考虑一个通用框架来传达对实体的嵌套对象的修改(实体是用户的帐户)。让我们假设客户端和服务器都是用 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)所有嵌套对象的属性更改需要反射完成
或者
需要强制进行同步,将实体保存的上次请求的对象树与当前对象树进行比较以进行修改。
在服务器端,可以通过分析对象的路径来缓存一个请求中多次访问的对象,从而避免通过引用/搜索集合多次访问树。