我正在开发一个服务器客户端应用程序。这项服务应该被成千上万的用户使用,因此它应该具有良好的扩展性。服务器端是用Spring + JPA(Hibernate)完成的,它提供了大约80个API方法。将有多个客户端 - GWT webapp、移动设备客户端(iOS、Android、Windows)+一个简单的桌面客户端(Eclipse RCP/待定)。
我正在考虑连接到服务器端的各种方法。我的想法是(也许还有其他一些更好的方法):
- 使用 SOAP Web 服务向所有客户端公开服务器 API
- SOAP WS 被认为很慢,我不知道它能否处理所有通信
- Android 并未正式支持 SOAP WS(但有一些第 3 方库)
- 使用 RESTfull WS 处理通信
- 比 SOAP 更好的性能
- 所有移动设备的官方支持
- 可能很难从非 Web 桌面客户端访问 RESTfull WS
- 针对移动设备使用 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/