我们正在引入协议缓冲区作为某些后端RPC服务的新传输。因为在不同形式的类似对象之间手动穿梭数据是有阻力的,所以我可以预见到堆栈上传递的协议缓冲区实例比仅仅到RPC服务器接口要高一些。
这是我应该避免的吗?处理像普通数据持有者这样的协议缓冲区对象是否安全,它具有很好的便利性,可以快速有效地转换为二进制文件?
我认为它是生成数据对象的好方法的另一个原因是必需/可选字段的概念和自动生成的构建器界面。
答案 0 :(得分:9)
嗯,他们使用这种方式并不方便 ,因为它们是不可变的 - 你可以传递构建器,但这会产生相当长的类型名称。它还意味着您仅限于协议缓冲区(以及您自己的消息)支持的数据类型。
安全这样做,但它并不总是创造最好的设计。另一方面,有时它只是医生所要求的:)
我建议你进行实验 - 这里没有“一刀切”。
答案 1 :(得分:0)
一般来说,我设计了系统的各层,以便一层的实现细节不会相互泄漏。我没有谷歌协议缓冲区的直接经验,但听起来你想要在系统的传输和更高层使用相同的表示。
如果您决定停止使用Protocol Buffers作为传输表示,那么使用其他东西会有多容易?