Performance Wave的客户端GWT架构是什么

Performance Wave的客户端GWT架构是什么,performance,gwt,google-wave,gwt-rpc,Performance,Gwt,Google Wave,Gwt Rpc,我想知道你们中的一些人是否知道Wave团队在构建其GWT web客户端时采用的体系结构方法?由于我试图优化一款专为手机设计的GWT应用程序的性能,很难不佩服它的快速认证:) Wave是否未使用GWT-RPC从服务器获取定期更新?Firefox通过网络跟踪一些JSON通信,但与RPC通信完全不同 例如,当发送一个新的小波时,它们是如何进行的。是否每个wave DTO都有一个视图对象,或者它们使用其他模式 在响应(比如)新浪潮到来后,GUI是如何更新的。整个区域的小波会被重新命名,还是会使用一些智

我想知道你们中的一些人是否知道Wave团队在构建其GWT web客户端时采用的体系结构方法?由于我试图优化一款专为手机设计的GWT应用程序的性能,很难不佩服它的快速认证:)

  • Wave是否未使用GWT-RPC从服务器获取定期更新?Firefox通过网络跟踪一些JSON通信,但与RPC通信完全不同

  • 例如,当发送一个新的小波时,它们是如何进行的。是否每个wave DTO都有一个视图对象,或者它们使用其他模式

  • 在响应(比如)新浪潮到来后,GUI是如何更新的。整个区域的小波会被重新命名,还是会使用一些智能技术来确保只触及特定的元素


谢谢

这可能是信息过载,但由于GoogleWave是开源的,你可以看看他们是如何设置的

例如,如果您查看WaveView.java,您可以看到它们使用的是客户端事件总线,如Google IO 2009中提到的Ray Ryan。我似乎还记得看过另一段视频,其中他们谈到了Google Wave的这些方面:

  • 他们使用事件系统在客户端发生事件时触发事件。事件系统管理与服务器的通信、向服务器传递事件信息、从服务器获取事件以及发布返回的事件。事件总线使用一种缓冲区,这样,如果一组事件快速连续地触发,它们可以在一批中发送所有事件。例如,当一个新的Wave到达时,一个具有Wave信息的事件将被触发,并且UI中正在积极侦听该事件的任何部分都将被通知,以便他们可以确定是否需要相应地更改自己
  • 他们使用了seam点(或者一些类似的点;我不记得名称)来创建它,这样GWT就可以将代码分解成模块,只加载实际需要使用的部分。由于WaveUIJavaScript文件最初超过1MB(缩小并压缩),这一点非常重要
  • 因为一次只能看到特定的波和小波,所以他们实际上使用了一些复杂的技术来重用相同的DOM元素。因此,当你向下滚动你的波浪列表时,它实际上会在你的收件箱顶部获取代表波浪的DOM元素,更改其中的信息,并将其移动到滚动区域的底部,在滚动区域中你不再看到的部分留下空白

此外,我非常确定他们使用Comet with JSONP之类的工具来保持与服务器的连续通信,因此他们不会不断轮询服务器以获取新的更新,而是动态生成的javascript文件从服务器中以增量方式加载,其中包含激发服务器决定需要激发的任何事件的指令

Wave使用浏览器通道与服务器通信,这是一种可以在Google的闭包库()中找到的技术,类似于AppEngine中的通道API(此处讨论:)