我一直在阅读有关protobuf-net的内容,这太棒了!
我可以使用任何教程吗? (更具体地针对Dictionary<TKey,TValue>
和泛型合同)
有没有与之相关的提示?
我可以简单地将其插入我当前的代码库中,还是需要进行任何更改?
答案 0 :(得分:14)
Dictionary<TKey,TValue>
应该在很大程度上起作用(至少在“v1”中;我还没有写过“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的帮助解决,而不是代码重构。