什么是Wave的客户端GWT架构

我想知道你们中的一些人是否了解Wave团队构建GWT Web客户端所采用的架构方法?由于我正在尝试优化为手机设计的一款GWT应用程序的性能,因此很难不欣赏它的快速凭据:) Wave不使用GWT-RPC从服务器获取定期更新吗? Firefox跟踪一些通过线路进行的JSON通信,但没有像RPC那样。 例如,当发送新的小波时,它们如何继续。每个wave DTO都有一个视图对象,还是使用其他一些模式? 如何在响应新的Wave到达之后更新GUI。整个区域是否会重新渲染小波或使用一些智能技术来确保只触及特定元素? 谢谢     
已邀请:
这可能是信息过载,但由于Google Wave是开源的,你实际上可以看看他们如何设置这里。 例如,如果您查看WaveView.java,您可以看到他们正在使用像Google Ry 2009在此次演讲中提到的Ray Ryan这样的客户端事件总线。我似乎记得看到另一个视频,他们谈到了这些方面的问题。 Google Wave: 当客户端发生某些事情时,他们使用事件系统来触发事件。事件系统管理与服务器的通信,将事件信息传递到服务器,从服务器返回事件,以及发布返回的事件。事件总线使用一种缓冲区,这样如果一堆事件快速连续发出,它们可以一次性发送它们。例如,当新Wave到达时,具有wave信息的事件将被触发,并且将通知主动侦听该事件的UI的任何部分,以便他们可以确定他们是否需要相应地改变自己。 他们使用接缝点(或者一些这样的;我记不起名字)来使GWT可以将代码分解为模块,并且仅加载实际需要使用的部分。由于wave ui javascript文件最初超过1MB(缩小和压缩),这非常重要。 由于一次只能看到某些波和小波,它们实际上使用了一些复杂的技术来重用相同的DOM元素。因此,当您向下滚动波形列表时,它实际上将表示波形的DOM元素放在收件箱顶部,更改内部信息,并将其移动到滚动区域的底部,在零件中留下空白区域您不再看到的滚动区域 另外,我很确定他们使用类似Comet with JSONP的东西来维持与服务器的持续通信,因此他们不会不断地轮询服务器以获得新的更新,而是有一个动态生成的javascript文件,它正在逐步加载服务器,其中包含触发服务器已决定需要触发的任何事件的指令。     

要回复问题请先登录注册