Мой первый вопрос будет: хотите ли вы сериализацию или обмен сообщениями?
Сначала это может показаться глупым, поскольку вы просили сериализацию, но потом я всегда различал два термина.
- Сериализация - это создание снимка вашей памяти и его восстановление позже.Каждый объект представлен как отдельный объект (хотя они могут быть составлены)
- Обмен сообщениями - это отправка информации из одной точки в другую.Сообщение обычно имеет собственную грамматику и может не отражать организацию вашей бизнес-модели.
Слишком часто я видел людей, использующих сериализацию, где должен был использоваться обмен сообщениями.Это не означает, что сериализация бесполезна, но это означает, что вы должны думать заранее.Довольно сложно изменить спецификацию после того, как вы решили ее сериализовать, особенно если вы решили переместить некоторую часть информации (переместить ее из одного объекта в другой) ... потому что как вы собираетесь декодировать "старый" сериализованныйверсия?
Теперь, когда все прояснено ...
... Я порекомендую буфер протокола Google.
Вы можете прекрасно переписать свой собственный, используя STL, нов конечном итоге вы будете выполнять работу, которая уже сделана, и если вы не хотите учиться на ней, это совершенно бессмысленно.
Одна замечательная вещь в protobuf
заключается в том, что она не зависит от языка в некотором смысле: то есть вы можетегенерировать кодер / декодер данного сообщения для C ++, Java или Python.Использование Python удобно для внедрения сообщений (тестирования) или декодирования сообщений (для проверки вывода зарегистрированного сообщения).Это было бы не просто, если бы вы использовали STL.