Я работаю над распределенным приложением, которое состоит из двух компонентов.Один написан на стандартном C ++ ( не управляется C ++ и работает на платформе Linux), а другой написан на C #.Оба взаимодействуют через шину сообщений.
У меня есть ситуация, в которой мне нужно передать объекты из C ++ в приложение C # и для этого мне нужно сериализовать эти объекты в C ++ и десериализовать их в C # (что-токак маршалинг / немаршалинг в .NET).Мне нужно выполнить эту сериализацию в двоичном, а не в XML (по соображениям производительности).
Я использовал Boost.Serialization
, чтобы сделать это, когда оба конца были реализованы в C ++, но теперь, когда у меня есть приложение .NETс одной стороны, Boost.Serialization
не является жизнеспособным решением.
Я ищу решение, которое позволило бы мне выполнить (де) сериализацию через границы C ++ и .NET, т.е. кросс-платформенная двоичная сериализация .
Я знаю, что могу реализовать код (de) сериализации в DLL C ++ и использовать P/Invoke
в приложении .NET, но я хочу сохранить это в качестве крайней меры.
Кроме того, я хочу знать, буду ли я использовать какой-нибудь стандарт, такой как gzip, это будет эффективно?Есть ли другие альтернативы gzip?Каковы плюсы / минусы их?
Спасибо