【问题标题】:Are there any Tutorials for Protobuf-net? [closed]Protobuf-net 有教程吗? [关闭]
【发布时间】:2011-02-22 22:33:46
【问题描述】:

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

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

有相关的提示吗?

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

【问题讨论】:

  • 你能多谈谈你的代码库目前在做什么吗?

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


【解决方案1】:

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

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

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

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

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

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

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

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

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

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

【讨论】:

  • 嘿,谢谢马克。那么,在 v1 中使用 Dictionary 并且 v1 已经准备好生产了吗?我对使用最新版本或任何东西没有任何限制。唯一的问题是,它在 .net 4.0 中有效吗?它的线程安全性如何?
  • @AKRamkumar "v1" 确实是可作为预编译 dll 下载的版本。它应该是完全线程安全的,并且应该在 .NET 4.0 中正常工作。 “v2”版本有很多优点,但不必切换 - 它们完全兼容有线。
  • 那么 Dictionary 的用法可以在 v2 中使用吗? TKey 或 TValue 的任何类型都可以工作吗,或者我是否会被限制为特定类型。 (对不起,如果我听起来很菜,我不是一个好的程序员)
  • @AKRamkumar - 它在“v2”中工作 - 它还不能;p TKey / TValue 必须是either可识别为合同(通过属性等),或具有内置支持的一系列类型之一(所有常见类型 - intstring 等)。在“v1”中,合同只支持类;这在“v2”中变得更好。
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多