14

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

有没有我可以使用的教程?(更具体地Dictionary<TKey,TValue>为仿制药和合同)

有没有与之相关的提示?

我可以简单地将它插入我当前的代码库还是我需要做任何更改?

4

2 回答 2

14

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

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

  • 入门(在 wiki 中还有一些其他页面)
  • 后备箱有很多东西;“示例”项目兼作单元测试,因此可能会有所帮助
  • 我的博客

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

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

时间是我最大的敌人。但是,如果您有特定情况,请随时联系我,我会尽快回复您。

回复“我可以简单地将其插入”;这取决于您的代码;-p

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

一些选项可以自动推断数字,但这很脆弱,不推荐。仅当您知道永远不需要添加更多成员时才使用此选项(它按字母顺序排列它们,因此添加新成员AardvarkCount会破坏一切)。

In "v2" (unreleased, but works), you can now handle the metadata independently of the types - i.e. you can use protobuf-net with POCO, unattributed types. You can also bypass the constructors etc (WCF-style). Much more flexible, if you want it. The attribute approach is supported too, of course.

于 2010-05-23T20:27:11.900 回答
2

有趣的是,我刚刚用protobuf-net的链接回答了另一个问题。

我发现它做起来相对简单,而且 Marc 通过电子邮件非常敏感。(呵呵,抱歉,如果我邀请人们向您发送垃圾邮件问题!)

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

我有一个基于 XML 的消息传递系统,它有点过于冗长。所以我想用可以编码相同信息但更紧凑的东西来替换这些消息。事实证明,Protobuf-net 非常适合这一点,而且我没有用基于 proto 的模块替换基于 xmlserialzer 的模块。

这很简单。我浏览了我的项目,用 [ProtoInclude] 替换了 [XmlInclude] 和类似属性,当然我也用 proto 序列化程序替换了 xml 序列化程序。在 Marc 的帮助下,关于哪些类型可以序列化的一两个问题得到了解决,并且没有进行太多的代码重构。

于 2010-05-23T14:29:21.347 回答