好吧,你已经说过了。 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几乎所有。这使您有信心在更大规模或复杂的项目中使用它。