我最近观看了几个Google I / O视频,其中Google开发人员在性能和安全性方面展示了GWT。在该视频中,发言者提到了几个 GWT-isms :
关于“批处理”,似乎可以将GWT配置为排队服务器端RPC调用并立即发送它们(而不是许多微小的,阻碍性能的调用)。不幸的是,我只是没有在这里通过树看到森林:doe GWT为您处理批处理,或者您是否必须编写执行此捆绑/批处理的逻辑?如果必须这样做,可以/应该捆绑什么类型的电话?你怎么知道什么时候解雇批次?
在GWT术语中,有人说:
是什么意思“批处理”和“可处置性”的概念如何与GWT应用程序“无状态”相关。由此,发言者将无状态定义为:
如果有人可以帮助我具体了解这3个项目以及它们之间的关系,我想我会开始“获取gwt”。提前谢谢!
答案 0 :(得分:4)
doe GWT为您处理批处理,或者您是否必须编写执行此捆绑/批处理的逻辑?如果必须这样做,可以/应该捆绑什么类型的电话?你怎么知道什么时候解雇批次?
GWT-RPC没有批处理机制。您可以(相对)轻松地通过在列表中排队“命令”然后将列表作为单个GWT-RPC调用发送来添加一些。有些项目应该以最小的努力为您做到这一点(例如GWT-Platform)。
另一方面,RequestFactory内置了批处理:您创建一个RequestContext
实例并批量调用它,直到您fire()
为止。
“客户和服务器是一次性的”;但“观点”不是一次性的
第一个与无状态有关(例如,使用AppEngine,您无法控制何时创建,关闭或重新启动新服务器实例:服务器可以随时消失,所以不要将 state 保留在内存中 第二个是关于性能:浏览器中与DOM相关的所有内容都是慢,因此构建一个新视图(堆叠在一起的小部件)非常重要(尽管使用Cell小部件却不那么重要)。结果,你不想要使它们成为一次性的,即偶尔抛弃它们。您宁愿在应用程序的生命周期内保留一个您重复使用的视图实例 不完全相同的“可处置性”概念。
浏览器体现了会话(?!?!)
GWT由单页应用构建。您只需在应用中的变量中将州存储在客户端上;您不需要cookie或任何在页面之间共享州的内容。
服务器是无状态的 - 除了缓存(?!?!)
在服务器上存储会话状态有成本(状态必须持久化 - 特别是如果服务器一次性 - ,在服务器之间共享 - 当您在云中拥有集群/运行时 - 等等你会花费尽可能多的资源来保持会话状态的存在,就像做实际的业务逻辑一样。)
客户端从未注意到重启(?!?!)
HTTP是一种断开连接的协议。如果服务器重新启动,客户端将不知道它,它不应该知道它。
如果有人可以帮助我具体了解这3个项目以及它们之间的关系,我想我会开始“获取gwt”。
这不是获取GWT ,而是获取Web 和获取单页webapps ,以及如何扩展< / em>他们 无论是在客户端使用GWT还是使用jQuery,还是在服务器端使用Java或Python或.NET都无关紧要。
阅读REST,它总结了一切。