【问题标题】:Can Protocol Buffer be partially serialized?Protocol Buffer 可以部分序列化吗?
【发布时间】:2014-06-16 03:10:00
【问题描述】:

最初,程序通过自己定义的行为将数据保存到文件中。首先,数据定义如下:

struct Data{
    DWORD       m_Location;
    BYTE        m_StableCount;
    BYTE        extra[3]; /* nice 4 byte divisible value */

    // the following data is not stored in the file
    DWORD       m_Uid;
    WORD        m_Address;
};

m_Uid 之前的那些字段将被存储到文件中,但是,其他的则不会。

现在,我想将Data 转换为protocol buffer message。据我所知,消息中定义的所有字段都可以序列化。所以我必须将Data 分成两部分:一个包括所有已保存的字段,另一个包括其余字段。

这是我的问题:如果我在一条消息中声明Data 的所有字段,并且只序列化协议缓冲区中的部分字段怎么办?有没有 API 支持或不支持?

提前致谢。

【问题讨论】:

    标签: serialization protocol-buffers


    【解决方案1】:

    这在很大程度上取决于您使用的库。许多协议缓冲区实现作为模式中的代码生成工作,您必须使用生成的 DTO - 因此您已经需要将数据推送到不同的对象模型中。不过,这是一个实现细节——它不是协议要求。例如,protobuf-net 允许使用您现有的模型,并且可以忽略/包含 一般具体 的值(即它允许每个实例条件序列化,使用 .NET 世界的标准约定来处理此类事情)。但是,我假设您的问题专门与非 .NET 代码有关,在这种情况下,挑战将是找到一个允许这种方法的 C/C++ 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多