我需要序列化和反序列化一系列協議緩衝區消息進出字節流。有一些預定義的消息類型。推薦的編碼類型信息的方式是什麼,以便我的應用程序可以知道它應該讀取哪種類型?確定協議緩衝區消息類型的最佳實踐
3
A
回答
1
我沒有特定的順序建議是:
- 包括持有原名稱/ ID的字段(並給它在所有的原同場數說1)
使用self describing message(在頁面的底部)。在這種情況下,你可以
- 包括FileDescriptorSet作爲一個字段(在你的郵件)
- 在java中(和其他一些實現),你可以寫的FileDescriptor設置爲分隔的文件的第一條消息。
保持原始名稱較小,並在文件名中使用原始名稱例如
salesProto_Store001.bin
這有幾個好點:
- 這是立竿見影的明顯發生了什麼文件格式爲
- 您可以掃描shell腳本發現使用原位置。
- 該技術可單獨使用或與上述2結合使用。
- 此技術可用於任何基於架構的文件(例如Cobol)。
支持自描述消息,其中
- 文件描述符是在分隔的文件
- 第一場中的第一個消息消息
擁有搜索功能將嘗試在比賽中領域在的Protobuf消息針對已知原定義文件,併爲您提供了可能匹配的
背景: 如果您不知道,協議緩衝區原始文件可以轉換爲FileDescriptorSet協議緩衝消息 並存儲
自我描述messagew:
message SelfDescribingMessage {
// Set of .proto files which define the type.
required FileDescriptorSet proto_files = 1;
// Name of the message type. Must be defined by one of the files in
// proto_files.
required string type_name = 2;
// The message data.
required bytes message_data = 3;
}
6
的最常見的方式做到這一點是利用一個union message。
例如:
message AnyMessage {
optional Message1 msg1 = 1;
optional Message2 msg2 = 2;
...
}
然後,所有消息被編碼/一個AnyMessage
容器內部解碼。從protobuf 2.6開始,您也可以使用oneof
說明符來確保只有一個子消息被設置。
相關問題
- 1. 損壞的協議緩衝區消息
- 2. Java協議緩衝區 - 消息大小
- 3. C++類應該包含協議緩衝區消息還是從協議緩衝區消息構建/填充
- 4. Google協議緩衝區,如何處理多個消息類型?
- 5. XNA緩衝區最佳實踐
- 6. 協議緩衝區
- 7. 協議緩衝消息,並從XPathDocument的
- 8. 協議緩衝區精簡版與常規協議緩衝區
- 9. 協議緩衝器從原料消息檢測類型
- 10. 如何判斷序列化協議緩衝區中的消息類型?
- 11. 協議緩衝區 - 讀所有消息的公共消息頭(嵌套消息)
- 12. 在協議緩衝區消息中存儲二進制數據緩衝區
- 13. 一個協議字段緩衝區作爲另一個協議緩衝區字段的消息
- 14. Ajax消息最佳實踐
- 15. 處理非常大的String消息的協議緩衝區?
- 16. 協議緩衝區:無固定大小緩衝區的符號?
- 17. 顯示協議緩衝區消息中的所有元素
- 18. 擴展協議緩衝區
- 19. gson vs協議緩衝區
- 20. 協議緩衝區記錄
- 21. 協議緩衝區錯誤
- 22. 協議緩衝區挑戰
- 23. 谷歌協議緩衝區
- 24. Android和協議緩衝區
- 25. JPA協議緩衝區
- 26. Delphi協議緩衝區?
- 27. 谷歌協議緩衝區 -
- 28. 協議緩衝區和Hadoop
- 29. 協議緩衝區文件?
- 30. 協議緩衝區 - @ModelAttribute
協議緩衝區*是*序列化的結構化數據。你能解釋爲什麼你認爲你需要對序列化數據進行編碼嗎? – 2014-09-25 22:03:40