代码之家  ›  专栏  ›  技术社区  ›  Nirmal Patel

GWT-RPC与HTTP调用——哪个更好?

  •  8
  • Nirmal Patel  · 技术社区  · 14 年前

    我正在评估使用GWT-RPC和 HTTP Call .

    我的APPN服务被托管为Java servlet,而我目前使用HTTP-代理连接从它们获取数据。如果这能提高性能,我希望将它们转换为GWT-RPC调用。

    我想知道每个人的优缺点…

    还有关于异步调用性能度量工具的任何建议…

    [ A good article on various Server communication strategies 可与GWT一起使用。]

    4 回复  |  直到 14 年前
        1
  •  5
  •   mooreds    14 年前

    我写了问题中提到的那篇文章(感谢链接!).

    一如既往,答案是“视情况而定”。我使用了GWT-RPC和JSON。

    如上所述,GWT-RPC允许在传输Java对象(有一些限制)上的一些严重的生产力。一些逻辑可以共享,GWT负责整理/解组对象。

    JSON允许其他非GWT客户机跨域访问和使用。您可以通过覆盖类型来适应,但不能共享任何行为(如验证)。JSON也可以很容易地压缩和缓存,不像GWT-RPC(上次我看的时候)。

    由于我们不知道有效载荷是什么,所以很难给出性能建议。我建议(再一次,像上面提到的那样)测试你自己。

        2
  •  13
  •   Jason Hall    14 年前

    GWT-RPC通常是首选的,当后端也是用Java编写的,因为它意味着不必在每个端对对象进行编码和解码——您可以将一个普通Java对象发送到客户端,并在那里使用它。

    JSON(使用) RequestBuilder )通常在用其他语言编写后端时使用,并要求服务器对响应对象进行JSON编码,而客户机将其解码为 JavaScriptObject 用于GWT代码。

    如果我不得不猜测的话,我会说GWT-RPC也会导致更小的传输对象,因为GWT团队针对这种情况进行了优化,但两者都可以工作,而JSON仍然非常小。在大多数情况下,归根结底就是为了开发人员的方便。

    至于测量请求时间的工具,您可以使用chrome/webkit的开发工具,或者使用firefox的firebug扩展,或者在应用程序中测量请求时间,并在延迟的收集和分析请求中将这些度量数据发送回服务器。

        3
  •  4
  •   Chris Lercher    14 年前

    除了其他答案之外,还有一点需要考虑,这可能影响您对JSON的决定,即使您在后端使用Java:

    也许将来某个时候,您希望允许非GWT客户机与您的服务器通信。许多现代站点都提供某种API访问,如果您使用的是JSON,那么基本上已经有了一个相对开放的API。

        4
  •  1
  •   Igor Klimer    14 年前

    一般来说,我同意杰森——如果服务器端使用Java,请使用GWT-RPC。您将能够重用pojos、验证逻辑等。rpc还倾向于更好地使用mvp和代码拆分。

    但是,如果您的服务器端使用其他任何东西,请使用json-但不要担心,使用 JavaScript Overlay Types 使用JSON很简单。但是,您将无法在服务器上重用客户端的代码(ymmv)。

    从性能的角度来看——我想说JSON在这里有优势。现代浏览器有一些非常好的JSON快速编码/解码方法。我不确定什么是GWT-RPC“幕后”,但我怀疑它在速度方面能否击败JSON。至于有效负载——这取决于开发人员(JSON中对象的名称等),但我想说,一般来说,JSON也(稍微)小一些。在服务器上启用压缩(例如, mod_deflate on Apache HTTP )把钻头挤得更紧;)