我一直在读有关protobuf-net的文章,它太棒了!
有没有我可以用到的教程?(更具体地说,用于泛型的Dictionary<TKey,TValue>和契约)
有什么与之相关的提示吗?
我可以简单地将它插入到我当前的代码库中吗?或者我需要做任何更改吗?
发布于 2010-05-24 04:27:12
Dictionary<TKey,TValue>在很大程度上应该是可以工作的(至少在"v1“中是这样的;我还没有为”v2“写过这个)。
我完全承认文档是...稀疏。浮现在脑海中的事情:
目前我有很多事情要做(我刚换了工作,等等),但我的优先事项是:
时间是我最大的敌人。但如果您有特定的场景,请随时联系我,我会尽快回复您的。
Re“我可以简单地插入吗?”;这取决于您的代码;-p
它需要某种方法来确定您想要序列化的每个成员的唯一编号。最简单的方法是通过属性;它支持[XmlElement(Order=n)]、[DataMember(Order=n)]或[ProtoMember(n)]中的任何一个。如果您已经有了其中至少一个(例如,LINQ-to-SQL包含[DataMember] ),那么它可能会简单地工作。
有自动推断数字的选项,但这是脆弱的,不建议这样做。只有当你知道你永远不需要添加更多的成员时才使用它(它按字母顺序排序,所以添加一个新的AardvarkCount会破坏所有的东西)。
在"v2“(未发布,但可以工作)中,您现在可以独立于类型处理元数据-即,您可以将protobuf-net与POCO、非属性类型一起使用。你也可以绕过构造函数等(WCF风格)。更灵活,如果你想要的话。当然,也支持属性方法。
发布于 2010-05-23 22:29:21
有趣的是,我刚刚用protobuf-net的链接回答了另一个问题。
我发现做起来相对简单,而且Marc通过电子邮件回复很快。(哈哈,如果我邀请别人给你发垃圾邮件,我很抱歉!)
对于文档,我确实提到过它有点稀疏。但这是我使用它的目的:
我有一个基于XML的消息传递系统,有点太冗长了。因此,我想用编码相同信息但更紧凑的东西来替换这些消息。Protobuf-net被证明非常适合这一点,我还没有用基于proto的模块替换我的基于xmlserialzer的模块。
这很简单。我完成了我的项目,用ProtoInclude替换了xml和类似的属性,当然我也用proto序列化程序替换了XmlInclude序列化程序。关于哪些类型可以序列化的一两个问题在Marc的帮助下得到了解决,代码重构也不是很多。
https://stackoverflow.com/questions/2892082
复制相似问题