gpt4 book ai didi

WCF 和客户端与服务之间的共享引用库

转载 作者:行者123 更新时间:2023-12-04 19:48:43 24 4
gpt4 key购买 nike

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

问题的 URL 引用:WCF Client Code Generation - Issue with "Reuse types from referenced assemblies"

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

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

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

我会在这里遇到任何泥潭吗?上面链接中的问题是否得到解决?请指教。

最佳答案

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

但是,svcutil.exe 使用 DataContractSerializer 来帮助生成代码,不幸的是,它有一个 strict set of rules在解析您的服务契约(Contract)时。

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

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

关于WCF 和客户端与服务之间的共享引用库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com