代码之家  ›  专栏  ›  技术社区  ›  itsadok

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

  •  14
  • itsadok  · 技术社区  · 15 年前

    我们将引入协议缓冲区作为一些后端RPC服务的新传输。因为存在在不同形式的类似对象之间手动切换数据的阻力,所以我可以放弃将协议缓冲区实例向上传递到堆栈,而不仅仅是传递到RPC服务器接口。

    这是我应该避免的事情吗?把一个协议缓冲区对象当作一个普通的数据容器来处理是否安全?它是否具有快速有效地转换为二进制文件和从二进制文件转换为二进制文件的便利性?

    我认为它是生成数据对象的好方法的另一个原因是,必需/可选字段的概念和自动生成的生成器接口。

    2 回复  |  直到 15 年前
        1
  •  9
  •   Jon Skeet    15 年前

    嗯,他们不是 可怕地 使用起来很方便,因为它们是不可变的——您可以传递构建器,但这会产生相当长的类型名。它还意味着您仅限于协议缓冲区(以及您自己的消息)支持的数据类型。

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

    我建议你尝试一下——这里没有“一刀切”。

        2
  •  0
  •   SteveD    15 年前

    通常,我设计系统的各个层,这样一个层的实现细节就不会泄漏到另一个层中。我对谷歌的协议缓冲区没有直接的经验,但听起来你想在传输和系统的更高层使用相同的表示。

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