2012-10-13 35 views
3

我最近遇到了一個非常大的任務關鍵項目,其中使用文本protobuf定義來定義所有配置文件 。配置文件應該是 人類可讀和可編輯的。使用protobuf作爲文本配置文件

例如

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

個人而言,我發現這個幽默。 但是它實際上是一個合理的保持簡單的技術,或者顯然是無意義的?!

換句話說,有沒有REAL,ACTUAL問題呢?

回答

2

如果這是文本原型如果格式,然後......無論如何,我猜。如果它有效,那麼它與任何其他序列化格式一樣合理。

如果這意味着是原型模式,那麼它是非法的(=後的值意味着字段號)。

Json或XML可能更典型,但只要它有效,它不是「無聲的」。所以最終的問題是:它有效嗎?

1

我覺得這很聰明。我猜他們通過protoc --encode傳遞它來生成一個二進制文件,這是實際分析的。

優點: 1.代碼被生成以解析配置 2.類型驗證 3.更健壯的配置文件相比,鍵/值,因爲它支持結構,聯合,地圖和數組 4.配置數據是現在可串行化,這意味着它可以很容易地暴露給RPC或IPC接口。

缺點: 1.地圖/數組的語法可能有點冗長。 2.如果您在內存限制嚴格的系統上,它需要在目標上安裝protoc以及libprotobuf.so。

+1

它是如何回答的? –