我目前陷入两种选择之中:
1)将对象的信息存储在初始化时返回给我的应用程序的file.xml中,以便在加载GUI时显示,然后在通过GUI编辑对象时对我的后端执行异步调用(保存到进程中的file.xml。
-OR -
2)使整个事物异步,以便当我的自定义对象被最终用户编辑时,它会查询后端的对象,返回要在GUI中显示的xml,然后再做一次异步调用如果有什么改变的话。
无论哪种方式,我都看到这两种方法都有很多缺点。我真的只需要对象的一个表示(在后端)并且不想管理对象的前端版本以及将对象转换为xml表示然后将其分解为对象上的另一个对象flex前端用于数据网格。
有没有更好的方法可以让我只管理我的后端java对象并在前端创建它的接口而不用担心它的异步性和同一对象的多个表示?
答案 0 :(得分:0)
你应该看看Granite Data Services:http://www.graniteds.org如果你正在使用Hibernate:它应该是你的第一选择,因为BlazeDS不是那么先进。 Granite在Flex中实现了一个很好的外观,通过AMF中的自定义序列化访问后端java对象,支持延迟加载,使用bean验证在flex端进行实体缓存。在全球范围内,它是一种自上而下的方法,可以从您的java类中生成AS3类。
如果您需要实时功能,可以在Flex客户端(重力模块)上推送数据更改并解决正面冲突或在后端实现冲突解决器。
你最终还是要处理高级冲突(在服务器上使用一些“已弃用”的flex对象:你不想处理它),例如一个基本功能就是添加一个版本字段并自动拒绝对后端上的此类对象的操作(许多方法):您必须为Flex客户端实现自定义方式,以便将自身更新为当前更改,这意味着可能会丢弃某些工作(数据丢失) flex客户端。
如果没有那么多人在Flex应用程序上处理相同的对象,这种情况就不会发生,就像在分布式VCS中一样。
根据您的实时需求(您的java对象的更改频率是多少?这是最重要的问题),您可以选择在缓存方面“缓存”更改,然后更新整个事物一次(但是如果发生了变化,你会遇到麻烦的冲突)或者每次服务器端(花岗岩都可以)都会检查冲突较少(如果有的话会发生:它更简单)但是你可能会产生更多代码来同步对象和更多的网络流量。