WCF 以及客户端和服务之间的共享参考库

2023-12-15

Visual Studio 和 SvcUtil 可用于生成代理代码以与服务集成。在 VS 2010 及更早版本中,如果您想维护共享类型的跨层参考库,则会出现问题。这迫使采取多种解决方法来解决数据协定类型的等效问题以及无法正确使用本地类型的问题。

问题的 URL 参考:WCF 客户端代码生成 - “重用引用程序集中的类型”问题

我正在使用 Visual Studio 2012、ASP.NET 4.5、C# 代码

我的问题:“VS 2012 中修复了跨程序集类型的重用吗?”我现在正在移植一些代码,但也担心这个错误可能会再次出现。我可以运行测试用例,但如果有人已经有了答案,速度会更快。根据我的经验,如果您似乎无法在网上找到答案(用谷歌搜索并不断得到 2011 - 问题仍然存在),则修复可能没有到位。

我的目标:允许我未来的开发团队在企业 .Net 应用程序层和层中重用相同类型的库 [演示文稿(网站、移动应用程序层 - 服务器端,...)、域(服务、业务逻辑层、数据访问)层)]。我想确保一定的一致性和代码重用。每层中的代码将尽可能“松散耦合”,但类型将通过参考程序集来确保。同样,我希望代码能够支持第三方的外部集成。因此,我需要从 DataContractAttribute 修饰类型构造面向外服务的所有代理类型,并维护服务器端应用程序的引用类型。

我会在这里陷入泥潭吗?上面链接中的问题已经解决了吗?请指教。


您报告的错误存在于重用引用程序集中的类型发生该选项的原因是通过指定重用 VS 在后台使用 /r 标志调用 svcutil.exe。

但是,svcutil.exe 使用DataContractSerializer帮助生成代码,不幸的是这有一个相当严格的规则当涉及到解析您的服务合同时。

因此,除非您维护 XSD 并遵守这组规则,否则 svcutil.exe 将改用XmlSerializer,它不支持 /r 标志(或重复使用)。因此您将无法重用类型。

如果您可以引用实际的服务合同类型(通过二进制引用),这是一个更好的解决方案,因为您可以一起取消服务引用。您还可以使用WSCF.蓝色生成您的服务合同,因为它有自己的自定义序列化程序并支持类型的重用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 以及客户端和服务之间的共享参考库 的相关文章

随机推荐