在Java世界中创建新的RPC / Web服务的最佳方法?

时间:2009-10-29 18:06:17

标签: java web-services rpc

我认为这个问题可能最终有点主观,所以我把它标记为CW。

我的团队有兴趣为我们的项目开发一套新的“Web服务”。我把“网络服务”放在空气报价中,因为这个术语可能意味着很多不同的东西。我们真正需要它的唯一意思是我们可以向跨平台客户端公开一些API来使用我们的数据并对其采取行动。

我正在尝试进行一些研究,以了解当前的“最新技术”在创建服务以将数据暴露给许多其他(内部)应用程序甚至其他服务时是什么。我一直在研究诸如Thrift,Protocol Buffers,JAX-WS,RMI等等的东西,而且我想知道在设计一组新服务时我们应采取什么样的方法。我希望我们能够基本上为服务创建一个“基础设施”,这就是为什么我要对当前所有方法进行一些调查。

为了构建全新的从头开始的Web服务,目前的最佳实践/最新技术在哪里?

我们唯一真正的要求是:

  • 数据格式/编码应该与平台无关(这排除了RMI)。
  • 服务应该通过HTTP
  • 运行良好
  • 用Java编写实际的服务器端服务应该不是问题。
  • 能够生成客户端代理将是一个很好的加分。
  • 我希望每项服务都很轻松,我们可以设想将不同功能的服务部署为完全独立的部署。

我们目前正在使用SOAP和Axis / JAXRPC服务的某种组合,老实说,这些是一个巨大的痛苦 - 来回发送的消息是巨大的,过于冗长。

2 个答案:

答案 0 :(得分:5)

您是否考虑过REST服务?以下是InfoQ的有用介绍。

它适用于HTTP,您使用GET / PUT / POST / DELETE的标准HTTP命令来操作数据(您可以使用浏览器进行查询,客户端是简单的HTTP客户端)。实际数据内容不是强制或指定的 - 通常是XML,但这不是必需的。

您可以使用Jersey在Java下轻松构建REST服务。因为客户端只需要谈论HTTP,所以它们可以与语言无关。可以使用HTTPClient编写Java客户端。

答案 1 :(得分:2)

可能为时已晚,但无论如何我都会尝试。 SOAP早已失去了它的第一个字母(Simple)。它也从未站到第二个(对象)。

这就是为什么我倾向于基于JSON的服务,无论是REST还是JSON-RPC服务。你已经为前者做了不少推荐。对于后者,您可能需要查看Jabsorb.org。例如,OpenSocial标准使用两者优先使用JSON-RPC。