2016-08-19 86 views

回答

0

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

+0

我不认为“Protobuf使用RPC”。 Protobuf可能被用来实现RPC。它也可能用于其他消息或序列化目的。 – asynchronos

+0

你是对的,我的意思是在这个特定的背景下“Protobuf在gRPC中使用RPC”。我已经编辑它以使其更加清晰,以防万一 – MaC

+1

当您想要说“一系列HTTP请求”时,请不要说“REST”。 ReST是一种方法,它本身对HTTP没有任何影响。 – kostix

相关问题