【问题标题】:Protocol Buffer to Serialize C++ and and Deserialize to C# class用于序列化 C++ 和反序列化为 C# 类的协议缓冲区
【发布时间】:2012-10-25 06:11:23
【问题描述】:

是否可以在 C++ 中序列化一个类并使用协议缓冲区将其反序列化为 C# 中的类似类?我已经尝试过 Json 序列化来克服不同平台中的序列化问题,但它在某些数据类型(如数组列表等)上存在问题。那么关于使用 google 的协议缓冲区有什么建议吗?

【问题讨论】:

    标签: c# c++ protocol-buffers binary-serialization


    【解决方案1】:

    Protocol Buffers 将允许您描述数据结构,并将其序列化/反序列化为 C++、Java、C# 和其他平台中的对象。你不会(通常,无论如何)序列化你自己的类的实例——你序列化生成的类的实例。 (我知道 protobuf-net 允许您使用描述如何将它们序列化到协议缓冲区的属性来装饰自己的类,而不必使用生成的类。我不知道这是否已经在 C++ 中完成。)

    不清楚这是否真的满足您的要求,但 protobufs 肯定允许跨平台数据交换。它在可以序列化哪些数据方面确实存在限制——它们都是相当原始的,并且您可以从原始结构构建更复杂的结构。如果您已经在代码中获得了数据模型,然后必须在协议缓冲区中重新实现它,那可能会令人沮丧,但它确实有效......

    【讨论】:

    • 谢谢。 C# 方面我已经得到了我的数据模型.. 但我可以在序列化层上做一些改变.. 但我仍然猜想当涉及到诸如字典、数组列表等类型时我会很艰难.. 谢谢很多评论
    • @Navin:嗯,你只需要适当地建模。究竟如何构建应用程序(例如,是仅在序列化边界处使用 proto 类,还是在整个代码中使用)取决于您。
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多