使用protobuf作为文本配置文件

时间:2012-10-13 13:40:31

标签: configuration-files protocol-buffers

我最近遇到了一个非常大的任务关键型项目,其中包含所有配置 文件是使用文本protobuf定义定义的。配置文件应该是 人类可读和可编辑。

例如

message ServerSettings {
  required int32 port = 3022;
  optional string name = "mywebserver";
}

我个人觉得这很幽默。 但它实际上是一种合理的保持简单技术,还是显然是愚蠢的?!

换句话说,这有真正的,实际的问题吗?

2 个答案:

答案 0 :(得分:2)

如果这是文本proto if format,那么......无论如何,我想。如果它有效,那么它与任何其他序列化格式一样合理。

如果那是原型架构,那么它是非法的(=之后的值应该是字段编号)。

Json或XML可能更典型,但只要它有效,它就不是“愚蠢的”。所以最终的问题是:它有效吗?

答案 1 :(得分:1)

我认为这很聪明。我猜他们通过protoc --encode传递它来生成一个实际解析的二进制文件。

优点: 1.生成代码以解析配置 2.键入验证 3.与键/值相比更强大的配置文件,因为它支持结构,联合,映射和数组 4.配置数据现在是可序列化的,这意味着它可以很容易地暴露给RPC或IPC接口。

缺点: 对于地图/数组,语法可能有点冗长。 2.如果你的内存限制很严重,它需要在目标和libprotobuf.so上安装protoc。