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

Golang的net/rpc包和gRPC框架有什么区别?,go,rpc,grpc,Go,Rpc,Grpc,是一个“通用RPC框架”,用于序列化和反序列化,而包似乎可以“几乎”完成相同的事情,并且两者都在谷歌的保护伞下。 那么它们之间有什么区别呢?选择其中一个有什么利弊?好吧,你自己也说过。gRPC是一个使用RPC进行通信的框架RPC不是Protobuf,而是Protobuf可以使用RPC,gRPC实际上是RPC上的Protobuf 您不需要使用Protobuf在应用程序中创建RPC服务。这是一个好主意,如果你正在做从小型到中型的库/应用程序。另外,创建自己的服务不需要学习Protobuf的语法 但是

是一个“通用RPC框架”,用于序列化和反序列化,而包似乎可以“几乎”完成相同的事情,并且两者都在谷歌的保护伞下。

那么它们之间有什么区别呢?选择其中一个有什么利弊?

好吧,你自己也说过。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。它也可以用于其他消息传递或序列化目的。你是对的,我在这个特定上下文中的意思是“Protobuf在gRPC上下文中使用RPC”。我已经对它进行了编辑,以使它更清晰,以防万一。当你想说“一系列HTTP请求”时,请不要说“REST”。ReST是一种本身与HTTP@MaC无关的方法,因此gRPC和net/rpc实现rpc组件的主要区别在于gRPC可以支持多种语言?主要是的。据我所知,gRPC希望在将来支持JSON、XML和其他内容,并且具有一些特性,如仍处于试验阶段的平衡器。可以把它看作是一个高级的net/rpc层,它可以简化一些任务。