在Flex应用程序中更改值时,DataGrid / ArrayCollection的实时传播

时间:2010-05-20 18:51:07

标签: java flex blazeds remoteobject lcds

我看过一堆截屏,展示了blazeds和flex之间的集成,还有一些lcds教程,模型驱动与否。

我已经看到其中一些演示者打开了2个浏览器,一旦你在网格中更改了一个值,它就会传播到所有其他呈现数据的网格。

我想知道这是怎么做的,以及如何重现。

此功能是否取决于Edge / LCDS解决方案?我不这么认为,但我从未见过一些解释它的代码。

我觉得它可能依赖于JMS / MQ /消息传递协议,也可能不依赖于JMS / MQ /消息传递协议,或者这是同一服务结果的实例之间的某种双向同步和集合传播。

感谢您的任何意见。

干杯,

Ernani

3 个答案:

答案 0 :(得分:4)

您可以使用BlazeDS和LiveCycle Data Services实现此功能。 BlazeDS提供远程和消息传递功能(消息传递功能允许您在客户端之间同步数据),LCDS扩展BlazeDS添加新功能,如数据管理(提高生产力),PDF生成,EDGE服务器处理DMZ区域, MDA开发,门户集成等。它还增加了一些高级消息传递功能,如消息合并,限制,可靠性。

BlazeDS是免费的开源软件,在我看来是一个强大的解决方案,如果你想在客户端之间同步数据,你可以使用它。 LCDS增加了许多东西,但LCDS客户应该有很大的预算。

它是如何工作的?此功能背后没有JMS(但BlazeDS可以与JMS提供程序集成,因此您可以在broswser中安装一个客户端,第二个运行SWING应用程序)。相反,服务器上有一些消息队列和发布者 - 订阅者图。为了将数据从客户端推送到服务器,有几种选择,仅在LCDS上可用的更高级:HTTP轮询,HTTP长轮询,HTTP流,RTMP套接字(仅限LCDS)。所有这些都在Damon博客上详细描述。

如果您想查看一些代码,请下载BlazeDS并查看示例,其中有几个代码显示了消息传递功能。此外,下载中捆绑了一个tomcat服务器,样本已经部署在其中。

答案 1 :(得分:1)

要执行此操作,您需要在客户端和服务器之间保持打开的套接字连接,以便服务器可以将数据推送回客户端。

我认为RTMP协议用于这种双向通信。

据我所知,这是使用LiveCycle Data Services而不是BlazeDS的主要原因。 WebORB也具有推送功能,GraniteDS也是如此。我也看过演示用ColdFusion完成的演示。

如果您无法使用这些选项,则无法对远程服务器进行某种轮询。

不幸的是,我没有特定的代码示例可供分享。

答案 2 :(得分:0)

可以在此处找到一个简单示例,说明如何使用WebORB执行此操作:     http://www.kensodev.com/2009/11/01/synchronize-client-application-using-flexweborb-net/

该示例基于WebORB 3 for .NET; WebORB 4现在可用于.NET和Java。

指出:使用WebORB这是很简单的,这是免费的(虽然付费企业版也可用)。上帝禁止任何人为了获得此功能而花费30美元购买LCDS。

--- Jim Plamondon,Midnight Coders(WebORB的制作人)