当前位置: 首页 > 知识库问答 >
问题:

GRPC与REST有何不同?

百里渊
2023-03-14

我正在阅读GRPC的解释,这张图很有趣:

传输层是如何工作的?如果是通过网络...为什么叫RPC?更重要的是,这与为服务层实现API的REST(客户机中具有发出http请求的方法的类)有何不同?

共有1个答案

贺季
2023-03-14

传输层在TCP/IP之上使用HTTP/2工作。它允许更低延迟(更快)的连接,可以利用从客户端到服务器的单个连接(这使得更有效地使用连接,并可以导致更有效地使用服务器资源)。

HTTP/2还支持双向连接和异步连接。因此,服务器可以有效地与客户端进行联系,以发送消息(异步响应/通知等)

虽然REST和gRPC都可以生成客户机/服务器存根(使用类似swagger的REST),但REST有一组有限的主要“函数”调用(或动词):

+-----------+----------------+
| HTTP Verb |      CRUD      |
+-----------+----------------+
| GET       | Read           |
| PUT       | Update/Replace |
| PATCH     | Update/Modify  |
| DELETE    | Delete         |
+-----------+----------------+

gRPC负责所有底层的管道并简化编程范例。然而,对于一些专注于REST的纯粹主义者来说,这似乎是一个过于复杂的问题。YMMV

 类似资料:
  • ProtoBuf 与 gRPC ProtoBuf 是一套接口描述语言(IDL)和相关工具集(主要是 protoc,基于 C++ 实现),类似 Apache 的 Thrift)。用户写好 .proto 描述文件,之后使用 protoc 可以很容易编译成众多计算机语言(C++、Java、Python、C#、Golang 等)的接口代码。这些代码可以支持 gRPC,也可以不支持。 gRPC 是 Goog

  • 之前,我使用了.NETCore2.x的grpc,现在称为C-CoreGRPC,以区别于新的.NETCore3版本。我喜欢新的grpc能够从VS2019中的proto文件编译和生成客户端/服务器存根类的方式,而不是pf必须从packages文件夹中获取grpc工具,手动为C#编译它以生成客户端/服务端存根类,然后导入VS。新版本的grpc更干净。然而,在将C核grpc与asp。net核心web AP

  • 问题内容: 我只知道一个js库,那就是jQuery。 但是我小组中的其他编码人员正在将AngularJS更改为新项目中的默认库。 我对此一无所知。与jQuery有何不同? 我已经为jQuery中的类似任务完​​成了一组功能。我还能在AngularJS中使用jQuery吗? 问题答案: Angular 1是一个框架,而Angular 2是一个 平台 。(参考) 对于开发人员,Angular2提供了一

  • 一篇关于设置幽灵博客的文章说,使用从本地计算机复制到远程服务器:

  • 问题内容: 我发现docker swarm,kubernetes非常相似,然后有docker这是一家公司,上面两个是docker集群工具。那么,这些工具到底是什么,它们之间的区别呢? 问题答案: 有很多文章可以解释这些差异。简而言之: 两者都试图解决相同的问题-在大量主机上进行容器编排。本质上,这些问题可以按如下方式分解: 在多个主机之间调度容器(考虑资源利用率等) 将容器分组为逻辑单元 缩放容器

  • 我试图擦洗GCC手册页,但仍然没有得到它,真的。 和 有什么区别? 什么时候只用< code>-march,而不是两个都用?有没有可能只是< code>-mtune?