使用协议缓冲区作为常规数据对象?

2022-09-04 04:05:03

我们将引入协议缓冲区作为某些后端 RPC 服务的新传输。由于存在在不同形式的类似对象之间手动穿梭数据的阻力,我可以看到协议缓冲区实例在堆栈中传递得比仅传递到 RPC 服务器接口要高一些。

这是我应该尽量避免的吗?将协议缓冲区对象视为普通数据持有者是否安全,并且具有可以快速有效地转换为二进制和从二进制转换的良好便利性?

我认为这是生成数据对象的好方法的另一个原因是必需/可选字段的概念和自动生成的构建器界面。


答案 1

好吧,它们以这种方式使用并不是非常方便,因为它们是不可变的 - 你可以传递构建器,但这会使类型名称相当长。这也意味着您仅限于协议缓冲区(以及您自己的消息)支持的数据类型。

这样做是安全的,但它并不总是创造出最好的设计。另一方面,有时这只是医生:)

我建议你做实验 - 这里没有“一刀切”的。


答案 2

通常,我设计系统的层,以便一个层的实现细节不会相互泄漏。我对Google的协议缓冲区没有直接的经验,但听起来您希望在传输和系统的较高层使用相同的表示形式。

如果您决定停止使用协议缓冲区作为传输表示,那么使用其他东西有多容易?


推荐