WCF 向后兼容性问题

Posted

技术标签:

【中文标题】WCF 向后兼容性问题【英文标题】:WCF Backward Compatibility Issue 【发布时间】:2010-09-05 18:51:55 【问题描述】:

我有一个必须从 .net 2.0 项目引用的 WCF 服务。

我尝试使用“添加网络引用”方法来引用它,但它弄乱了参数。

例如,我在服务中有一个方法需要传入char[],但是当我添加网络引用时,该方法需要int[]

然后我尝试设置 svcutil 并且它工作......有点。 我只能通过向我的 .net 2.0 项目添加一堆 .net 3.0 引用来编译服务类。建筑师对此并不满意,所以我不得不这样做(而且可能也是最好的)。

所以我想知道是否有人对我如何设置 .net 2.0 项目以引用 WCF 服务有任何指示或资源。

【问题讨论】:

【参考方案1】:

您需要编辑 WSDL 的实例之一。首先是一个有用的工具

http://codeplex.com/storm

【讨论】:

【参考方案2】:

您使用的是什么绑定 - 我认为如果您坚持使用 basicHttp 绑定,您应该能够使用 .net 2 项目中的“添加 Web 引用”方法生成代理?

如果您发布合同/接口定义可能会有所帮助?

干杯 理查德

【讨论】:

【参考方案3】:

感谢资源。它确实帮助我测试了 web 服务,但它对在我的 .net 2.0 应用程序中使用 WCF 服务没有多大帮助。

我最终做的是回到架构师那里并解释我需要引用的 3.0 dll 被编译回以在 2.0 CLR 上运行。我们不一定喜欢这个解决方案,但我们现在会采用它,因为似乎没有太多可行的替代方案

【讨论】:

【参考方案4】:

我使用的是 basicHttp 绑定,但问题实际上出在 XMLSerializer 上。它不能正确识别 WCF 生成的 wsdl(即使使用 basicHttp 绑定),用于除基本值类型之外的任何内容。

我们通过添加对 3.0 dll 的引用并使用 datacontract 序列化程序解决了这个问题。

【讨论】:

以上是关于WCF 向后兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章

如何以向后兼容的方式向 DTO 添加属性?

WCF:单个服务的多个绑定配置

jQuery 对向后兼容性的支持如何?

升级 Newtonsoft.JSON 是不是存在任何已知的向后兼容性问题?

Material Design 向后兼容性

Schema Registry 中的向后兼容性问题和不确定性