我应该如何与Spring后端进行通信 - GWT前端+移动设备

时间:2012-10-31 08:49:56

标签: java web-services spring gwt

我正在开发一个服务器客户端应用程序。这是一项应该由成千上万的用户使用的服务,因此它应该可以很好地扩展。服务器端在Spring + JPA(Hibernate)中完成,它提供了大约80个API方法。将有多个客户端 - GWT webapp,移动设备客户端(iOS,Android,Windows)+一个简单的桌面客户端(Eclipse RCP /待定)。

我正在考虑各种方式连接到服务器端。我的想法是(可能还有其他更好的方法):

  1. 使用SOAP Webservices向所有客户端公开服务器API
    • SOAP WS被认为很慢,我不知道它可以处理所有的通信
    • Android不正式支持SOAP WS(有一些第三方库)
  2. 使用RESTfull WS处理通信
    • 比SOAP更好的性能
    • 所有移动设备的官方支持
    • 可能难以从非Web桌面客户端访问RESTfull WS
  3. 使用REST WS for mobile,GWT Request Factory for webapp
    • 请求工厂是与GWT客户端进行通信的推荐方式(至少是在2009 Google I / O上)。我认为它应该比Web服务表现更好?
  4. 哪种解决方案(上面列出或未列出)表现最佳,对开发人员来说效率最高?

    如果您参与过类似项目,我很想知道您的意见:)

2 个答案:

答案 0 :(得分:1)

我投票支持在后端使用RESTful服务,并与您选择的前端进行交互。

这为您提供了服务多个客户端的最大灵活性。例如,您可以在不必删除任何服务器端代码的情况下终止前端技术,或者您可以引入新的前端而无需任何后端更改。

如果您避免尝试为webapp支持REST WS for Mobile和GWT支持的服务器端类(例如GWT-RPC),您将具有以下优势:

  • 单一后端开发和测试:不要低估这一点!
  • 易于监控网络流量,以调试实际发送的结尾。 GWT网络流量不是那么容易调试,我会在任何一天通过GWT-RPC获取JSON。

不要担心一种技术或其他技术无法使用您的服务:REST WS变得如此受欢迎,以至于有多种方法可以从任何前端使用这些服务。例如,GWT应用程序可以使用GWT覆盖来将JSON响应映射到GWT / Java对象,而桌面客户端可以使用Apache HTTP Client

答案 1 :(得分:0)

如果您的网络服务是RESTful,我会向您推荐RestyGWT

我很久以前就用它了,效果很好。