2011-07-07 77 views
5

我想知道如果協議緩衝器的串行化數據格式保持跨越protobuf的編譯器和客戶機庫版本恆定。數據格式兼容性

換句話說,我是否需要使用相同的編譯器版本生成我的Python,Java和C++類?這些客戶端是否都需要使用相同版本的protobuf庫?

This post排序地址我的問題,但其接受的答案是具體到OP的protobuf的版本。

回答

3

是的,這是相當多的想法。只要遵循規範,使用哪個庫就不重要。需要注意的是可以稍微不同的方式來表示,例如字段順序相同的數據不應該的問題,給客戶端,而它是爲客戶寫升序領域共同,有明確要求,客戶端可以處理的字段以任意順序排列。我在這裏要說的是,它可能不是完全相同的字節,其順序是,但它應該可以在任何客戶端上正常工作。

請注意,某些實現可能會提供額外的功能(*咳嗽*,如我的提供繼承支持),主要用於在單個客戶端中使用。在這種情況下,我會答:預計使用時,這些功能是顯而易見的,和B:應該總是仍然產生有效的protobuf流(你可能只是選擇忽略這些字段,或支持他們爲bytes爲目的往返)。

+0

如果它不是「完全相同的字節在相同的順序」,許多客戶端將打破。任何依賴哈希和密碼簽名的人。 – jaybny