对 protobuf-net WCF 的使用感到困惑
Posted
技术标签:
【中文标题】对 protobuf-net WCF 的使用感到困惑【英文标题】:Confused about protobuf-net WCF usage 【发布时间】:2015-03-17 13:24:37 【问题描述】:我一直关注this tutorial 将protobuf-net
添加到我的WCF 项目中。我有一个共享的 DTO 库。服务器和客户端都使用这些 DTO 类。我已将我的所有 Service 方法归因于 [OperationContract]
属性,但我没有在我的 DTO 类上分配任何 [DataContract]
属性。
我添加了protobuf-net
Nuget 包并将配置添加到web.config
。
我正在使用 IIS Express 来测试我的服务,并认为我应该可以接受目前所做的一切。然而,在测试了几个调用之后,我注意到我忘记将protobuf-net
添加到我的客户端,但一切都按预期工作(即序列化或反序列化没有错误)。
我怀疑我的程序中根本没有使用 protobuf,而且我遗漏了一些东西。 I'd like to avoid using [DataContract]
attributes 但我可以忍受添加它们,如果这是让 protobuf-net
工作所需要的。
我还缺少什么?
【问题讨论】:
内容协商和回退到不同的序列化格式? 注解:从 .NET 3.5 SP1 开始,您不需要使用数据协定属性,默认情况下所有公共成员都是序列化的。但是,如果您应用一个属性,那么您需要将它们应用到任何地方。 您找到解决方案了吗?如果是这样,您可以在此处添加它作为答案吗?我正在寻找这方面的信息。 【参考方案1】:一年前我遇到了同样的问题,protoBuf 似乎是一个很好的选择,但 WCF 有一些缺点。
我创建了一个开源项目来克服这些缺点,它使用 protobu-net 库并为其添加了功能,这样您就不需要再与客户端共享程序集了。然而,它再次要求您在当前放置 DataContract 属性。
你可以试试:https://github.com/maingi4/ProtoBuf.Wcf
免责声明:我是上述项目的创建者和所有者。
【讨论】:
以上是关于对 protobuf-net WCF 的使用感到困惑的主要内容,如果未能解决你的问题,请参考以下文章
我可以为 protobuf-net WCF 使用 net.tcp 绑定吗?