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