Golang的net/rpc包和gRPC框架有什么区别?

What is the difference between net/rpc package of Golang and gRPC framework?

gRPC is a "general RPC framework" which uses ProtoBuffer to serialize and deserialize while the net/rpc package seems could do "nearly" the same thing with encoding/gob 并且都在 Google.
的保护伞下 那么它们之间有什么区别呢?选择其中之一有什么优缺点?

嗯,你自己说了算。 gRPC 是一个使用 RPC 进行通信的框架。 RPC 不是 Protobuf,而是 Protobuf 可以使用 RPC 而 gRPC 实际上是 Protobuf over RPC。

您不需要使用 Protobuf 在您的应用中创建 RPC 服务。如果您要 libraries/apps 从小号到中号,这是个好主意。此外,您无需学习 Protobuf 的语法即可创建自己的服务。

但是,Protobuf 比 REST 快得多。这是一种更方便的方式来与 Protobuf 语法的学习曲线的缺点进行通信。此外,您可以使用 Protobuf 生成更多语言的代码库,而不仅仅是 Go。因此,如果你在 Java 中有某种服务,你可以使用 Protobuf 轻松地在它们之间生成 RPC 调用,而如果你使用 net/rpc 包,你将不得不实现它们两次(一次在 Go 中,一次在 Go 中)曾经在 Java)

一般来说,我几乎都会使用Protobuf。这让您有信心在更大规模或更复杂的项目中使用它。