生成协议缓冲区定义

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

我想利用谷歌的协议缓冲技术。

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

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

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

但是,我没有弄清楚我是否可以将它用于我的项目(它可能在那里有.proto格式的对象模型,但可能只有代码可以解析这种格式而不是写出来)

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

如果这有用,请告诉我。

有关信息,protobuf-net引擎与大多数XmlSerializer类(和DataContractSerializer ,以及最近的BinaryFormatter )兼容 – 所以如果你的代码目前用作xml,我们可以在protobuf-net中使用它。 当然没有保证……

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