Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从flex前端直接操作基于java的后端对象的最佳方法?_Java_Apache Flex_Architecture - Fatal编程技术网

从flex前端直接操作基于java的后端对象的最佳方法?

从flex前端直接操作基于java的后端对象的最佳方法?,java,apache-flex,architecture,Java,Apache Flex,Architecture,我目前处于两种选择之间: 1) 将对象的信息存储在file.xml中,该文件在初始化时返回给我的应用程序,在加载GUI时显示,然后在通过GUI编辑对象时执行对我后端的异步调用(在此过程中保存到file.xml) -或- 2) 使整个过程异步化,这样当最终用户打开我的自定义对象进行编辑时,它会在后端查询该对象,返回要在GUI中显示的xml,然后在发生更改时执行另一个异步调用 无论哪种方式,我都认为这两种方法都有许多缺点。我真的只需要对象的一个表示(在后端),不想管理对象的前端版本,也不想将我的对象

我目前处于两种选择之间:

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

-或-

2) 使整个过程异步化,这样当最终用户打开我的自定义对象进行编辑时,它会在后端查询该对象,返回要在GUI中显示的xml,然后在发生更改时执行另一个异步调用

无论哪种方式,我都认为这两种方法都有许多缺点。我真的只需要对象的一个表示(在后端),不想管理对象的前端版本,也不想将我的对象转换为xml表示,然后在flex前端将其分解为另一个对象,以便在datagrids中使用


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

您应该看看Granite数据服务:如果您使用的是Hibernate:它应该是您的首选,因为BlazeDS并不那么先进。Granite在Flex中实现了一个很好的facade,可以通过AMF中的自定义序列化访问后端java对象,支持延迟加载,Flex端的实体缓存带有bean验证。在全球范围内,它是一种自顶向下的方法,从java类生成AS3类

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

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

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

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