gpt4 book ai didi

c# - C++ 和 C# 中的二进制序列化/反序列化

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:58 29 4
gpt4 key购买 nike

我正在开发一个包含两个组件的分布式应用程序。一个是用标准 C++ 编写的(非托管 C++,在 Linux 平台上运行),另一个是用 C# 编写的。两者都通过消息总线进行通信。

我有一种情况需要将对象从 C++ 传递到 C# 应用程序,为此我需要在 C++ 中序列化这些对象并在 C# 中反序列化它们(类似于 .NET 中的编码(marshal)处理/取消编码(marshal)处理)。我需要以二进制形式而不是 XML 形式执行此序列化(出于性能原因)。

当两端都在 C++ 中实现时,我使用 Boost.Serialization 来执行此操作,但现在我在一端有一个 .NET 应用程序,Boost.Serialization 是不是一个可行的解决方案。

我正在寻找一种解决方案,使我能够跨 C++ 和 .NET 边界执行(反)序列化,即跨平台二进制序列化

我知道我可以在 C++ dll 中实现(反)序列化代码并在 .NET 应用程序中使用 P/Invoke,但我想保留它作为最后的手段。

另外,我想知道如果我使用像 gzip 这样的标准,效率会高吗?除了gzip还有其他选择吗?它们的优点/缺点是什么?

谢谢

最佳答案

我会推荐 Protocol Buffers,它是 Google 自己的序列化库。它同时具有.Net、C++ 和Java 序列化程序。大多数实现也非常快。

http://code.google.com/p/protobuf/

关于c# - C++ 和 C# 中的二进制序列化/反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4677669/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com