0

我目前陷入两个选择之间:

1) 将对象的信息存储在初始化时返回给我的应用程序的 file.xml 中,以便在加载 GUI 时显示,然后在通过 GUI 编辑对象时对我的后端执行异步调用(保存到 file.xml进行中)。

-或者-

2)使整个事情异步,以便当最终用户提出我的自定义对象进行编辑时,它会在后端查询该对象,返回要在 GUI 中显示的 xml,然后对 if 进行另一个异步调用被改变了。

无论哪种方式,我都看到这两种方法的许多缺点。我真的只需要对象的一个​​表示(在后端)并且不想管理对象的前端版本以及将我的对象转换为 xml 表示然后将其分解为另一个对象用于数据网格的 flex 前端。

有没有更好的方法来做到这一点,让我只管理我的后端 java 对象并在前端创建它的接口,而不用担心它的异步性质和同一对象的多个表示?

4

1 回答 1

0

您应该查看 Granite Data Services:http ://www.graniteds.org如果您使用的是 Hibernate:它应该是您的首选,因为 BlazeDS 并不那么先进。Granite 在 Flex 中实现了一个很棒的外观,以在 AMF 中通过自定义序列化访问后端 java 对象,支持延迟加载,在 flex 端具有 bean 验证的实体缓存。在全球范围内,它是一种自上而下的方法,从您的 java 类中生成 AS3 类。

如果您需要实时功能,您可以在 flex 客户端(Gravity 模块)上推送数据更改并在前端解决冲突或在后端实现冲突解决程序。

尽管如此,您最终仍将不得不处理高级冲突(在服务器上使用一些“已弃用”的 flex 对象:您不想处理它),例如,一个基本功能是添加版本字段并拒绝操作后端自动删除此类对象(有很多方法):您必须为 flex 客户端实现一种自定义方式,以将其自身更新为当前更改,这意味着某些工作可能会在 flex 客户端上被丢弃(数据丢失)。

如果没有那么多人在您的 flex 应用程序上处理相同的对象,那么这种情况不会像在分布式 VCS 中那样经常发生。

根据您的实时需求(您的 java 对象的更改频率是多少?这是最重要的问题),您可以选择在 flex 端“缓存”更改,然后更新整个内容(但您将如果发生更改,则会遇到麻烦的冲突),或者您可以每次在服务器端检查(Granite 启用此功能)以减少冲突(如果发生冲突:它更简单),但您可能会生成更多代码来同步对象和更多网络流量.

于 2013-09-16T12:57:50.893 回答