Можно ли сериализовать класс на С++ и десериализовать его в аналогичный класс на С#, используя буфер протокола? Я пробовал сериализацию Json, чтобы преодолеть эту проблему сериализации на разных платформах, но у нее есть проблемы с некоторыми типами данных, такими как список массивов и т. Д. Итак, какие-либо советы по использованию буфера протокола Google?
Буфер протокола для сериализации C++ и десериализации в класс C#
Ответы (1)
Буферы протоколов позволят вам описать структуру данных и сериализовать/десериализовать ее в объекты на C++, Java, C# и других платформах. Вы не сериализуете (во всяком случае, как правило) экземпляры ваших собственных классов — вы сериализуете экземпляры сгенерированных классов. (Я знаю, что protobuf-net позволяет вам украшать ваши собственные классы атрибутами, описывающими, как сериализовать их в буферы протокола, вместо того, чтобы использовать сгенерированные классы. Я не знаю, было ли это сделано в C++.)
Неясно, действительно ли это соответствует вашим требованиям, но protobufs, безусловно, позволяют осуществлять межплатформенный обмен данными. У него есть ограничения с точки зрения того, какие данные могут быть сериализованы — все это достаточно примитивно, и вы создаете более сложные структуры из примитивных. Это может разочаровать, если у вас уже есть модель данных в коде, а затем вам нужно повторно реализовать ее в буферах протокола, но это работает...