首页 文章

GRPC与REST有何不同?

提问于
浏览
61

我正在读这个explanation of GRPC,这个图表很有意思:

enter image description here

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

2 回答

  • 5

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

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

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

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

    而gRPC则可以定义任何类型的函数调用,包括同步/异步,单向/双向(流)等 .

    使用gRPC,客户端调用本地方法 . 对于程序员来说,看起来你正在进行本地调用,但底层(自动生成的客户端存根)会将调用发送到服务器 . 对于服务器来说,它的方法看起来像是在本地调用的 .

    gRPC负责所有底层管道并简化编程范例 . 但是,对于一些专门的REST纯粹主义者来说,这看起来似乎过于复杂 . 因人而异

  • 68

    gRPC优于REST的最大优势是它支持HTTP / 2而不是爷爷HTTP 1.1 . 那么HTTP / 2优于HTTP 1.1的最大优点是,'HTTP / 2允许服务器“推送”内容'......

相关问题