Есть ли хорошие существующие библиотеки сериализации C++, которые поддерживают частичную сериализацию?Библиотека сериализации C++, которая поддерживает частичную сериализацию?
Под «частичной сериализацией» я хочу, чтобы я мог сохранить значения трех конкретных членов, а позже смогу применить эту сохраненную копию к другому экземпляру. Я бы только обновил этих 3 членов и оставил остальных неповрежденными.
Это было бы полезно для синхронизации данных по сети. Скажем, у меня есть какой-то объект на клиенте и на сервере, и когда член изменяется на сервере, я хочу отправить клиенту сообщение, содержащее обновленное значение для этого члена , и только этот член. Я не хочу посылать копию всего объекта по проводу.
boost::serialization
с первого взгляда похоже, что он поддерживает только все или ничего.
Редактировать: через 3 года после первоначального написания этого я оглядываюсь назад и говорю себе: «а?»? boost :: serialization позволяет определить, какие члены вы хотите сохранить или нет, поэтому он будет поддерживать «частичную сериализацию», как я, кажется, описал ее. Кроме того, поскольку на C++ отсутствуют библиотеки для сериализации рефлексии, вам нужно явно указать каждого члена, который вы сохраняете, если они не приходят с каким-то внешним инструментом для анализа исходных файлов или имеют отдельный формат входных файлов, который используется для генерации кода на C++ (например, какие протокольные буферы). Я думаю, что, должно быть, я был концептуально смущен, когда написал это.
Я бы не сказал, что я «явно не ищу сериализации». Возможно, библиотеки сериализации обычно не рассматривают этот вариант использования, но я думаю, что это довольно естественное расширение полной сериализации, чтобы иметь возможность сохранять только подмножество элементов объекта. Отправка данных по сети является лишь одним возможным вариантом использования. –
Я не хочу казаться педантичным, но сериализация заключается в том, чтобы сэкономить достаточно информации, чтобы вы могли восстановить семантически идентичный клон. Для этого может быть достаточно подмножества атрибутов (если вы можете вычислить остальные). Здесь, однако, у нас есть другой случай: это скорее шаблон Observer. И шаблон Observer действительно касается общения ... и поэтому мы говорим о событиях (или сообщениях). Является ли сеть вовлеченной, не имеет большого значения (хотя это немного усложняет ситуацию). –
Я тоже не хочу казаться педантичным, но если сериализация сохраняет достаточную информацию для создания семантически идентичного клона, частичная сериализация может содержать достаточно информации для создания частично семантически идентичного «клона»;) Или, вернее, идентична некоторым (более узкой, чем исходная). –