我想知道你们中的一些人是否知道Wave团队为建立GWT Web客户端采用的建筑方法吗?由于我试图优化一个专为手机设计的GWT应用程序的性能,因此很难不欣赏其快速的凭据:)

  • Wave不使用GWT-RPC从服务器获取定期更新吗? Firefox跟踪了一些JSON通信,但没有RPC的东西。

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

  • 在回复新浪潮后,GUI如何更新。整个区域都会填充小波,还是使用某些智能技术来确保仅触摸特定元素?

谢谢

有帮助吗?

解决方案

这可能是信息过载,但是由于Google Wave是开源的,您实际上可以查看它们如何设置内容 这里.

例如,如果您查看waveview.java,您可以看到他们正在使用像Ray Ryan一样的客户端事件总线 这个谈话 在Google IO 2009年。我似乎记得看过另一个视频,他们谈到了Google Wave的这些方面:

  • 当客户端发生某些事情时,他们使用事件系统来解雇事件。事件系统管理与服务器的通信,将事件信息传递到服务器,从服务器中恢复事件,并发布返回的事件。事件总线使用一种缓冲区,因此,如果一堆事件快速连续发射,他们可以一批将它们全部发送。例如,当新的波浪到来时,将发射带有波浪信息的事件,并且会通知正在积极聆听该事件的UI的任何部分,以便他们可以确定是否需要相应地改变自己。
  • 他们使用接缝点(或其他一些;我不记得这个名字)来制作,以便GWT可以将代码分解为模块,并且只加载了实际需要使用的部分。由于Wave UI JavaScript文件最初超过1MB(缩小和压缩),因此非常重要。
  • 由于一次只能看到某些波浪和小波,因此它们实际上使用了一些复杂的技术来重复使用相同的DOM元素。因此,当您向下滚动浏览波浪列表时,它实际上是将DOM元素表示代表收件箱顶部的波浪,更改内部的信息并将其移至滚动区域的底部,并在零件中留有空白空间您看不到的滚动区域。

此外,我很确定他们使用与JSONP的彗星之类的东西来保持与服务器的连续通信,因此他们不会不断对服务器进行轮询以进行新的更新,而是有一个动态生成的JavaScript文件,该文件正在从逐步加载。该服务器包含指令发射服务器决定需要触发的任何事件的说明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top