在过去的几周里,我一直在使用使用blazeDS连接到J2EE后端的Flex前端构建原型应用程序.
该原型是学习flex的实验,并且通过pub子类型模型看到它对于需要大量动态更新(即,每秒大于20秒)的复杂交易应用程序的适用性.
在一些轻量级性能测试期间,我很明显需要使用多个线程来确保从服务器接收大量更新时UI保持稳定.一切顺利,直到我发现flex有一个单线程编程模型!
从一个快速的谷歌看起来好像有很多黑客来实现类似线程的行为.
我相信很多人一定遇到过类似的问题.人们可以让我知道:
>是否有任何良好的线程库,维护良好等
>其他RIA技术如Silverlight也存在同样的问题.
>为什么abobe实现单线程模型?
>我可以使用任何其他技巧来确保我的UI稳定.
解决方法
我见过非常密集的交易者桌面类型的Flex应用程序,它们在Flex的单线程模型中运行良好.原因是内部Flex应用程序使用异步网络IO.因此,在您发出请求时,UI不会阻止.你可能会遇到BlazeDS的限制,也许应该考虑使用RTMP的东西(比如LCDS). RTMP是一种更有效的协议,用于将大量数据流式传输到客户端.还有一些方法可以优化客户端事件处理和呈现代码,这样就不会让UI陷入困境. Christophe Coenraets在做这类事情时有一些很好的演示:
http://coenraets.org/blog/?s=trader+desktop
你想要做的事情当然可以通过Flex实现,而且有些人已经成功地完成了它.
但是在bugs.adobe.com上有一个开放的功能请求:
https://bugs.adobe.com/jira/browse/ASL-23