我正在开发一个具有两个组件的分布式应用程序。一种是用标准 C++ 编写的(非托管 C++并在 Linux 平台上运行),另一种是用 C# 编写的。两者都通过消息总线进行通信。
我有一种情况,我需要将对象从 C++ 传递到 C# 应用程序,为此我需要在 C++ 中序列化这些对象并在 C# 中反序列化它们(类似于 .NET 中的编组/取消编组)。我需要以二进制而不是 XML 执行此序列化(由于性能原因)。
Boost.Serialization
当两端都用 C++ 实现时,我曾经这样做过,但现在我在一端有一个 .NET 应用程序,Boost.Serialization
这不是一个可行的解决方案。
我正在寻找一种解决方案,允许我跨 C++ 和 .NET 边界执行(反)序列化,即跨平台二进制序列化。
我知道我可以在 C++ dll 中实现(反)序列化代码并P/Invoke
在 .NET 应用程序中使用,但我想保留它作为最后的手段。
另外,我想知道如果我使用像gzip这样的标准,那会有效吗?gzip还有其他替代品吗?它们的优点/缺点是什么?
谢谢