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

标签 java web-services spring gwt

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

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

  1. 使用 SOAP Web 服务向所有客户端公开服务器 API
    • SOAP WS 被认为很慢,我不知道它能否处理所有通信
    • Android 并未正式支持 SOAP WS(但有一些第 3 方库)
  2. 使用 RESTfull WS 处理通信
    • 比 SOAP 更好的性能
    • 所有移动设备的官方支持
    • 可能很难从非 Web 桌面客户端访问 RESTfull WS
  3. 针对移动设备使用 REST WS,针对网络应用程序使用 GWT 请求工厂
    • Request Factory 是与 GWT 客户端通信的推荐方式(至少在 2009 年 Google I/O 上是这样)。我认为它的性能应该比 Web 服务更好?

哪种解决方案(是否在上面列出)性能最佳并且对开发人员来说效率最高?

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

最佳答案

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

这为您在服务多个客户方面提供了最大的灵 active 。例如,您可以终止前端技术的生命周期,而无需删除任何服务器端代码,或者您可以引入新的前端而不需要任何后端更改。

如果您避免尝试同时支持针对移动设备的 REST WS 和针对 Web 应用程序的 GWT 支持的服务器端类(例如 GWT-RPC),您将获得以下优势:

  • 用于开发和测试的单一后端:不要低估这一点!
  • 轻松监控网络流量以调试任一端实际发送的内容。 GWT 网络流量不太容易调试,我随时都会通过 GWT-RPC 采用 JSON。

不必担心一种或另一种技术无法使用您的服务:REST WS 变得如此流行,以至于可以通过多种方式从任何前端使用这些服务。例如,GWT 应用程序可以使用 GWT 覆盖将 JSON 响应映射到 GWT/Java 对象,桌面客户端可以使用 Apache HTTP Client

关于java - 我应该如何与Spring后端通信-GWT前端+移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154194/

相关文章:

spring - 如何在 Spring 4 中混合使用 Cglib 和 JDK Proxy

java - 在Jmeter中提取数组中的json

java - Spring ws端点映射两次

Spring 4.2 Rest-Service 与 Hibernate 4 或 5 示例

java - 如何在我的 android studio 应用程序中实现 TLS V1.1 和 V1.2?

iphone - 从 iOS 上的 .net Web 服务获取数据

java - 使用 Spring 作为 grails 前端的后端

java - java中如何终止一个进程?

循环整数列表时发生 Java 转换错误?

java - 在 View 上添加按钮