本文介绍: RPC和REST区别

RPC和REST对比

参考学习

RPC 和 REST 之间什么区别

我们对比RPC和REST时,其实是在对比RPC风格的API和REST风格的API,后者通常成为RESTful API。

远程过程调用(RPC)和 REST 是 API 设计中的两种架构风格。API 是允许两个软件组件使用一组定义协议相互通信机制

RPC API 允许开发人员外部服务器中调用远程函数,就好像它们在软件本地一样。例如,您可以通过远程调用其他聊天应用程序上的消息收发函数来向应用程序添加聊天功能

相比之下,REST API 允许您在远程服务器执行特定的数据操作例如,您的应用程序可以使用 REST API 在远程服务器插入修改员工数据

RPC 和 REST 有何相似之处?

远程过程调用(RPC)和 REST 都是设计 API 的方法。API 在现代 Web 设计和其他分布式系统中均不可或缺。它们允许两个独立分布式应用程序服务进行通信,而无需知道一个应用程序服务内部工作原理。除了少量的数据交换外,这两个应用程序或服务彼此之间可能几乎没有关系

API 也是程序后端(逻辑组件)与程序前端显示组件)通信的常用机制。当您使用 API 而不是紧密耦合集成来设计网页和 Web 应用程序时,您可以确保它们能够进行扩展更改,同时只需要更少的代码重写

接下来,我们将讨论 RPC 与 REST API 之间的其他相似之处。

架构原则:RPC vs.REST

远程过程调用(RPC)中,客户端服务器上进行远程函数(也称为方法或过程)调用。通常,在调用期间会向服务器传递一个或多个数据值。

相比之下,REST 客户端则是请求服务器针对特定服务器资源执行操作操作仅限于创建读取更新删除(CRUD),并以 HTTP 动词或 HTTP 方法的形式传达。

RPC 侧重于函数操作,而 REST 则侧重于资源对象

RPC 原则

接下来,我们将讨论 RPC 系统通常遵循的一些原则。但这些原则并不像 REST 那样标准化

REST 原则

REST 原则是标准化的。REST API 必须遵循这些原则才能被归类为 RESTful。

工作原理:RPC vs.REST

在远程过程调用(RPC)中,客户端使用 HTTP POST 按名称调用特定函数。客户端开发人员必须事先知道函数名称参数,RPC 才能正常工作

在 REST 中,客户端和服务器使用 GET、POST、PATCH、PUT、DELETE 和 OPTIONS 等 HTTP 动词来执行选项开发人员需要知道服务器资源 URL,而不必关心单个函数的名称

下表显示了客户端用于在 RPC 和 REST 中执行类似操作代码类型
在这里插入图片描述

主要区别vs.REST

远程过程调用(RPC)和 REST 都是用于设计相应的客户端和服务器系统接口以通过互联网进行通信的方法。但两者的结构、实施和基本原则各不相同。使用 REST 设计的系统称为 RESTful API,而使用 RPC 设计的系统就是 RPC API。
下面列出了两者的更多区别

REST 系统必须始终是无状态的,但 RPC 系统可以有状态,也可以无状态,具体取决于设计。

何时使用:RPC 与REST

远程过程调用(RPC)通常用于调用服务器上需要操作结果的远程函数。当您需要进行复杂计算或者想要在服务器上触发远程过程时,可以使用它,并使该进程对客户端隐藏

下面列出一些操作,对于这些操作而言,RPC 是不错的选择

REST API 通常用于针对服务器上的数据对象执行创建读取更新删除(CRUD)操作。这使得 REST API 非常适用于需要统一公开服务器数据和数据结构的情况。

下面列出一些操作,对于这些操作而言,REST API 是一个理想选择

为什么 REST 取代了 RPC?

虽然 REST Web API 已经成为当今的标准,但远程过程调用(RPC)并未消失。REST API 通常用于应用程序,因为它更易于开发人员理解和实施。但 RPC 仍然存在,并在更适合的应用场景中使用。

RPC 的现代实施(如 gRPC)现在更受欢迎。在某些应用场景下,gRPC 的性能优于 RPC 和 REST。它允许客户端-服务器间的流式通信,而非请求和响应数据交换模式

差异摘要:RPC vs.REST

在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_45979976/article/details/134765873

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36042.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注