【发布时间】:2016-12-26 07:46:29
【问题描述】:
gRPC 是一个“通用 RPC 框架”,它使用 ProtoBuffer 进行序列化和反序列化,而 net/rpc 包似乎可以用 encoding/gob 做“几乎”相同的事情,并且两者都在 Google 的保护下。
那么它们之间有什么区别呢?选择其中之一有什么优缺点?
【问题讨论】:
gRPC 是一个“通用 RPC 框架”,它使用 ProtoBuffer 进行序列化和反序列化,而 net/rpc 包似乎可以用 encoding/gob 做“几乎”相同的事情,并且两者都在 Google 的保护下。
那么它们之间有什么区别呢?选择其中之一有什么优缺点?
【问题讨论】:
嗯,你自己说的。 gRPC 是一个使用 RPC 进行通信的框架。 RPC 不是 Protobuf,而是 Protobuf 可以使用 RPC,而 gRPC 实际上是 Protobuf over RPC。
您无需使用 Protobuf 在您的应用程序中创建 RPC 服务。如果您正在做中小型库/应用程序,这是一个好主意。此外,您无需学习 Protobuf 的语法即可创建自己的服务。
但是,Protobuf 比 REST 快得多。这是与 Protobuf 语法学习曲线的缺点进行交流的一种更方便的方式。此外,您可以使用 Protobuf 生成更多语言的代码库,而不仅仅是 Go。因此,如果您在 Java 中有某种服务,则可以使用 Protobuf 在它们之间轻松生成 RPC 调用,而如果您使用 net/rpc 包,则必须实现它们两次(一次在 Go 中,一次在 Java 中)
一般来说,我几乎都会使用 Protobuf。这让您有信心在更大规模或更复杂的项目中使用它。
【讨论】: