我一直在阅读有关 protobuf-net 的内容,这太棒了!
有没有我可以使用的教程?(更具体地Dictionary<TKey,TValue>
为仿制药和合同)
有没有与之相关的提示?
我可以简单地将它插入我当前的代码库还是我需要做任何更改?
我一直在阅读有关 protobuf-net 的内容,这太棒了!
有没有我可以使用的教程?(更具体地Dictionary<TKey,TValue>
为仿制药和合同)
有没有与之相关的提示?
我可以简单地将它插入我当前的代码库还是我需要做任何更改?
Dictionary<TKey,TValue>
应该在很大程度上正常工作(至少在“v1”中;我还没有为“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.
有趣的是,我刚刚用protobuf-net的链接回答了另一个问题。
我发现它做起来相对简单,而且 Marc 通过电子邮件非常敏感。(呵呵,抱歉,如果我邀请人们向您发送垃圾邮件问题!)
对于文档,我确实提到它有点稀疏。但这是我使用它的目的:
我有一个基于 XML 的消息传递系统,它有点过于冗长。所以我想用可以编码相同信息但更紧凑的东西来替换这些消息。事实证明,Protobuf-net 非常适合这一点,而且我没有用基于 proto 的模块替换基于 xmlserialzer 的模块。
这很简单。我浏览了我的项目,用 [ProtoInclude] 替换了 [XmlInclude] 和类似属性,当然我也用 proto 序列化程序替换了 xml 序列化程序。在 Marc 的帮助下,关于哪些类型可以序列化的一两个问题得到了解决,并且没有进行太多的代码重构。