使用Android客户端与RPC的REST Web服务

时间:2012-01-18 13:32:37

标签: android rest rpc

我们仍在尝试在实施REST Web服务与使用RPC之间做出决定。谷歌eclipse插件使得创建RPC服务非常容易,这是RPC方式的主要吸引力。 但是,REST服务似乎更容易修改,恕我直言,并且还允许未来的iOS客户端连接很少或没有返工。 我可能会遇到一个问题,也许这也是RPC的问题,或者实际上任何客户端 - 服务器模型都是如何修改现有服务并允许旧客户端在允许新客户端使用新功能的同时仍然工作。 我的意思是,您可以指出我在修改Web服务时应该注意的任何事情,以免破坏现有客户端或强制他们升级。您所拥有的任何链接都将受到赞赏

1 个答案:

答案 0 :(得分:0)

这里几乎没有想到。首先,正如我在类似的问题中指出的那样,比较REST和RPC并没有多大意义。 REST是一组约束,可以强加于接口以实现特定的目标集,RPC接口实际上可以是RESTful。有关详细信息,请参阅this博文。

在回答问题的第二部分时,您是正确的,在自定义RPC接口中,客户端必须知道它调用的方法,这意味着API破坏了对公开的过程的更改,从而推出了新版本服务更具挑战性(而在RESTful界面中,法律操作通常都由服务器控制)。我链接的博客文章也详细讨论了这个问题。

并排推出多个服务版本的一种方法是在生产多租户中滚动服务版本,并根据任意客户端元数据将请求分派到正确的服务版本。例如,如果您的服务通过Servlet公开RPC Web API,您可以:

  1. 在Tomcat中以Class Loader分隔并排引导多个版本的RPC服务。
  2. 让您的客户端传递一些关于它期望的RPC服务版本的上下文信息(例如关于查询字符串)。
  3. 创建一个Servlet Mapping,根据参数路由到正确的服务版本。
  4. 在大多数客户端/服务器方案中,客户端的任何时候都会存在多个版本的客户端,因此,如果没有服务器控制合法操作,最佳解决方案是在服务器上并行运行多个版本,而旧版本的客户端是弃用。