我正在构建一个分布式系统,该系统由具有由 protobuf 消息定义的接口的模块/应用程序组成。
将这些 protobuf 消息直接公开给客户端是个好主意吗?...或者最好准备一个共享库,该库负责将基于方法的接口转换为基于每个模块的 protobuf,并且客户端根本不知道 protobuf?
我正在构建一个分布式系统,该系统由具有由 protobuf 消息定义的接口的模块/应用程序组成。
将这些 protobuf 消息直接公开给客户端是个好主意吗?...或者最好准备一个共享库,该库负责将基于方法的接口转换为基于每个模块的 protobuf,并且客户端根本不知道 protobuf?
这既不是“好主意”也不是坏主意。这取决于您是否要将协议缓冲区强加给您的消费者。该决定的很大一部分是:
我的 0.02 美元是协议缓冲区的完美用例,因为它们是专门为跨系统、跨语言交换而设计的。该.proto
文件对数据格式进行了简洁、独立于语言的全面描述。当然,如果您决定走这条路,还有其他类似/竞争格式和库可供考虑(请参阅: Thrift、Cap'n Proto等) 。