对 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

protobuf-net 和 wcf web api

我可以为 protobuf-net WCF 使用 net.tcp 绑定吗?

将单个枚举值传递给 WCF 服务时,protobuf-net 引发有关无效线路类型的异常

Protobuf-net.Grpc 服务契约继承

将WCF迁移到gRPC