【问题标题】:REST webservice with Android client vs RPC带有 Android 客户端与 RPC 的 REST Web 服务
【发布时间】:2012-02-13 05:19:45
【问题描述】:

我们仍在尝试在实现 REST Web 服务与使用 RPC 之间做出决定。 Google 的 eclipse 插件使得创建 RPC 服务变得非常容易,这是 RPC 方式的主要吸引力所在。 然而,一个 REST 服务似乎更容易修改,恕我直言,并且还允许未来的 iOS 客户端连接很少或不需要返工。 我会担心的一个问题,也许这也是 RPC 或任何客户端-服务器模型的问题,即如何修改现有服务并允许旧客户端仍然工作,同时允许新客户端使用新功能。 我的意思是,您能否指出我们在修改 Web 服务时应该注意的任何事情,以免破坏现有客户端或强制它们升级。任何可以涵盖此内容的链接将不胜感激

【问题讨论】:

    标签: android rest rpc


    【解决方案1】:

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

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

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

    1. 在 Tomcat 中并排引导多个版本的 RPC 服务,Class Loader 分隔。
    2. 让您的客户端传入有关它所期望的 RPC 服务版本的一些上下文信息(例如在查询字符串中)。
    3. 创建一个Servlet Mapping,根据参数路由到您的服务的正确版本。

    在大多数客户端/服务器场景中,客户端的多个版本会随时存在,因此在服务器不控制法律行为的情况下,最好的解决方案是在服务器上并行运行多个版本,而旧版本的客户端是已弃用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多