【问题标题】:RPC: Method Invocation Vs Api CallRPC:方法调用与 Api 调用
【发布时间】:2018-04-06 22:05:54
【问题描述】:

我在实现方面很难理解 RPC。看过几篇关于 RPC 的文章,我看过以下与RPC相关的例子:

示例:RPC api

GET /readStudent?studentid=123

示例:RPC 调用

POST /student HTTP/1.1
HOST: api.demo.com
Content-Type: application/json

{"name": "John Doe"}

据我阅读和理解,RPC 允许客户端应用程序直接调用不同机器上的服务器应用程序上的方法,就好像它是本地对象一样

那么,上面的例子是关于什么的?为什么我们要进行 api 调用而不是调用方法?

我假设在上面的这些 RPC 示例中,URL 可能指向公共方法,并且方法参数在此处在查询字符串或正文中传递。

如果是这样,那我为什么不能简单地使用 REST 呢?为什么要努力通过 HTTP api 公开公共方法(根据 RPC 原则,其实际实现必须在其他地方)?

我也对什么是实际的 RPC 方式以及应该首选哪种方式感到困惑。

【问题讨论】:

    标签: rpc json-rpc


    【解决方案1】:

    您的示例可以说明一个 RPC 实现如何将请求传输到不同的进程。但是应该有一个翻译层可以让客户端简单地调用方法/函数/过程,例如readStudent(123)createStudent("John Doe")。通常还有一个相应的服务器端层,它让应用程序代码只实现那些方法/函数/过程(而不是 JSON/HTTP 或其他传输的细节)。这些翻译(或“编组”)层通常是从特定于应用程序的接口规范机器生成的,以避免翻译样板的繁琐手动编码。此类接口规范是用接口定义语言 (IDL) 编写的。

    REST 强加了一些方法调用可能不遵守的传统语义。而且它不一定提供一个翻译层来给人一种特定于应用程序的方法调用的错觉。

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多