RPC:方法调用与Api调用

时间:2017-10-25 17:41:14

标签: rpc json-rpc

我在实施方面很难理解 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方式和应该首选的方式感到困惑。

1 个答案:

答案 0 :(得分:0)

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

REST强加了一些方法调用可能无法兑现的传统语义。并且必然提供翻译层以提供特定于应用程序的方法调用的假象。