Protobuf-net有没有教程?

时间:2010-05-23 14:22:32

标签: c# .net protocol-buffers protobuf-net

我一直在阅读有关protobuf-net的内容,这太棒了!

我可以使用任何教程吗? (更具体地针对Dictionary<TKey,TValue>和泛型合同)

有没有与之相关的提示?

我可以简单地将其插入我当前的代码库中,还是需要进行任何更改?

2 个答案:

答案 0 :(得分:14)

Dictionary<TKey,TValue>应该在很大程度上起作用(至少在“v1”中;我还没有写过“v2”)。

我完全承认文档是......稀疏的。想到的事情:

  • Getting Started(维基中还有其他一些页面)
  • trunk中有主机; “示例”项目兼作单元测试,因此可能会有所帮助
  • my blog

我现在正在发生很多(我刚刚换了工作等),但我的优先事项是:

  • 发布稳定的“v2”测试版,至少是核心功能集
  • 改进文档

时间是我最大的敌人。但如果你有一个特定的场景,请随时ping我,我会尽快回复你。

重新“我可以简单地将其插入”;这取决于你的代码;-p

它需要一些方法来确定要序列化的每个成员的唯一编号。最简单的方法是通过属性;它支持[XmlElement(Order=n)][DataMember(Order=n)][ProtoMember(n)]中的任何一个。如果您已经至少有其中一个(例如,LINQ-to-SQL包括[DataMember]),那么它可能只是工作。

选项可以自动推断数字,但这很脆弱,不推荐使用。只有在知道时才使用此功能,您永远不需要添加更多成员(按字母顺序排序,因此添加新的AardvarkCount会破坏所有内容。)

在“v2”(未发布,但有效)中,您现在可以独立于类型处理元数据 - 即您可以将protobuf-net与POCO,未归因类型一起使用。您也可以绕过构造函数等(WCF样式)。如果你想要的话,更加灵活。当然,也支持属性方法。

答案 1 :(得分:2)

有趣的是,我刚回答了另一个问题,其中包含指向protobuf-net的链接。

我发现它相对简单,而且Marc通过电子邮件非常敏感。 (呵呵,对不起,如果我邀请别人给你发问题!)

对于文档,我确实提到它有点稀疏。但这就是我用它的原因:

我有一个基于XML的消息传递系统,有点过于冗长。所以我想用一些可以编码相同信息但更紧凑的信息来替换这些信息。 Protobuf-net对此非常完美,我没有用基于proto的模块替换我的基于xmlserialzer的模块。

这很简单。我完成了我的项目,用[ProtoInclude]替换了[XmlInclude]和类似的属性,我当然用原型序列化器替换了xml序列化器。关于哪些类型可以序列化的一两个问题可以通过Marc的帮助解决,而不是代码重构。