【问题标题】:Generating a Protocol Buffers definition生成协议缓冲区定义
【发布时间】:2010-09-25 10:19:45
【问题描述】:

我有大量专有模式的 XML 文件 - XML 文件定义二进制通信协议(消息结构)。

我想利用 Google 的协议缓冲区技术。

我正在使用现有代码将 XML 文件加载到对象模型中(在内存中)。 我想从该对象模型生成一个 .proto 文件。

所以基本上我正在寻找的是代码/库(在 C#/.NET 中),它将 .proto 文件格式表示为对象模型,并且可以将该对象模型保存到 .proto 文件中。

我看了 Jon Skeet 的 dotnet-protobufs,我想我明白它的作用(基于 .proto 文件生成 c# 代码)

但是,我不知道是否可以在我的项目中使用它(它可能有 .proto 格式的对象模型,但可能只有代码可以解析这种格式而不是写出来)

【问题讨论】:

    标签: c# .net protocol-buffers


    【解决方案1】:

    protobuf-net(我在 .NET 中的协议缓冲区版本)primitive 支持生成 proto 文件,但填补空白并不难。我首先专注于核心引擎,然后是从 proto 生成 C#。编写一个 xslt 从对象模型生成一个原型不会有太大的不同。不过这需要几天时间……(我目前时间有限)。

    如果有用,请告诉我。

    关于信息,protobuf-net 引擎与大多数 XmlSerializer 类(和 DataContractSerializer,以及最近的 BinaryFormatter)兼容 - 所以如果你的代码当前作为 xml 工作,我们可能可以让它在 protobuf 中工作 -网。当然不能保证......

    【讨论】:

    • 非常有趣!现在支持吗?
    • 有一些代码,但我不能忍受输出 - 原型生成充其量是实验性的。奇怪的是,proto-to-C# 更加发达,尽管这完全是事后的想法!序列化器.GetProto()...
    【解决方案2】:

    我的代码只能序列化和反序列化为二进制和文本。但是,我相信Marc Gravell's project 具有 XML 功能。事实上,我相信他生成 C# 代码的基础是加载 .proto 文件的二进制版本(它本身被编码为 protobuf),将其写为 XML,然后对其应用 XSLT...

    【讨论】:

    • 确实如此;我一直想添加代码来填充内存模型中的描述符,将描述符序列化为 xml,然后通过 xslt 运行它以生成 proto - 即与它现在所做的完全相反。不过它应该可以工作......不过需要几天的努力。
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2011-09-18
    • 2021-02-06
    相关资源
    最近更新 更多