GWT:配对与可处置性与无国籍状态

时间:2012-07-06 18:09:34

标签: java javascript gwt

我最近观看了几个Google I / O视频,其中Google开发人员在性能和安全性方面展示了GWT。在该视频中,发言者提到了几个 GWT-isms

  • 客户端请求“批处理”
  • “可处理性”
  • 追求GWT app“无国籍”

关于“批处理”,似乎可以将GWT配置为排队服务器端RPC调用并立即发送它们(而不是许多微小的,阻碍性能的调用)。不幸的是,我只是没有在这里通过树看到森林:doe GWT为您处理批处理,或者您是否必须编写执行此捆绑/批处理的逻辑?如果必须这样做,可以/应该捆绑什么类型的电话?你怎么知道什么时候解雇批次?

在GWT术语中,有人说:

是什么意思
  • “客户和服务器是一次性的”;但
  • “视图”不是一次性的

“批处理”和“可处置性”的概念如何与GWT应用程序“无状态”相关。由此,发言者将无状态定义为:

  • 浏览器体现了会话(?!?!)
  • 服务器是无状态的 - 除了缓存(?!?!)
  • 客户端从未注意到重启(?!?!)

如果有人可以帮助我具体了解这3个项目以及它们之间的关系,我想我会开始“获取gwt”。提前谢谢!

1 个答案:

答案 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,它总结了一切。