生成协议缓冲区定义

时间:2008-12-04 22:06:38

标签: c# .net protocol-buffers

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

如果这有用,请告诉我。

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