是否有支持部分序列化的現有C++序列化庫?支持部分序列化的C++序列化庫?
通過「局部串行」我的意思是,我可能要保存的3個特定成員的值,以後還可以到保存的副本適用於不同的實例。我只會更新這3個成員,並保留其他成員。
這對於通過網絡同步數據很有用。假設我在客戶端和服務器上有一些對象,並且當服務器上的成員發生更改時,我想向客戶端發送一條消息,其中包含該成員的更新值,該成員僅爲。我不想通過電線發送整個對象的副本。
boost::serialization
一眼看起來像它僅支持全有或全無。
編輯:3年後最初寫這個我回頭看它,我對自己說,「武漢理工大學?」 boost :: serialization可以讓你定義你想要保存或不保存的成員,所以它會支持'部分序列化',正如我似乎已經描述的那樣。此外,由於C++缺乏反射序列化庫,因此要求您明確指定要保存的每個成員,除非他們帶有某種外部工具來解析源文件或具有用於生成C++代碼的單獨輸入文件格式(例如什麼協議緩衝區)。我認爲我寫這篇文章時一定會在概念上感到困惑。
我不會說我「顯然不想要序列化」。也許序列化庫通常不會考慮這種用例,但我認爲這是完全序列化的一個非常自然的擴展,希望能夠僅保存對象成員的一個子集。通過網絡發送數據只是一種可能的用例。 –
我的意思不是迂腐,但序列化是關於保存足夠的信息,以便能夠從中重建語義相同的克隆。這些屬性的子集可能就足夠了(如果可以計算其餘的)。然而在這裏,我們有一個不同的案例:它真的是更多的觀察者模式。觀察者模式實際上是關於溝通......所以我們正在談論事件(或消息)。是否涉及網絡並不重要(儘管它有點複雜)。 –
我的意思並不是迂腐,但是如果序列化節省了足夠的信息來創建語義相同的克隆,部分序列化可以節省足夠的信息以創建部分語義相同的「克隆」;)或者相同,比原來窄)的觀點。 –