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

lfr*_*ree 7 rpc go grpc

gRPC是一个"通用RPC框架",它使用ProtoBuffer进行序列化和反序列化,而net/rpc包似乎可以与编码/ gob "几乎"相同,并且两者都在Google的保护下.
那么它们之间的区别是什么?选择其中一个有什么利弊剂量?

MaC*_*MaC 5

好吧,你自己说了。gRPC是使用RPC进行通信的框架。RPC不是Protobuf,而是Protobuf可以使用RPC,而gRPC实际上是基于RPC的Protobuf。

您无需使用Protobuf在您的应用程序内创建RPC服务。如果您要从小型到中型运行库/应用程序,那么这是一个好主意。另外,您无需学习Protobuf的语法即可创建自己的服务。

但是,Protobuf比REST快得多。与Protobuf语法的学习曲线下端进行通讯是一种更为方便的方法。另外,您可以使用Protobuf生成更多语言的代码库,而不仅仅是Go。因此,如果您使用Java提供某种服务,则可以使用Protobuf轻松地在它们之间生成RPC调用,而如果使用net / rpc包,则必须实现两次(在Go中一次,在Java中一次)

总的来说,我将几乎全部使用Protobuf。这使您有信心在更大规模或更复杂的项目中使用它。

  • 我不认为“Protobuf 使用 RPC”。Protobuf 可用于实现 RPC。它还可用于其他消息传递或序列化目的。 (4认同)
  • 当您想说“一系列HTTP请求”时,请不要说“ REST”。ReST是一种本身与HTTP无关的方法。 (2认同)