Двоичная сериализация / десериализация в C ++ и C #

Я работаю над распределенным приложением, состоящим из двух компонентов. Один написан на стандартном 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? Каковы их плюсы и минусы?

Спасибо

5
задан 6pack kid 13 January 2011 в 12:33
поделиться