在 WCF 服务中使用我们自己的 xsd 文件
Posted
技术标签:
【中文标题】在 WCF 服务中使用我们自己的 xsd 文件【英文标题】:Using our own xsd file in WCF service 【发布时间】:2012-11-25 20:54:18 【问题描述】:我们有一个 xsd 文件,其中已经定义了合同。我们使用xsd.exe
为我们的WCF 服务生成类,并再次为我们的Web 服务使用XmlSerializerFormat
。
在我看来,这是一件很奇怪的事情,让 WCF 为 xsd.exe
为我们生成的类生成一个新的 XSD,而我们已经有了 XSD 定义。 .
虽然xsd.exe
为我们生成类做得很好,但它也简化了复杂类型,正如您在我的previous question 中看到的那样;意思是,xsd在生成类并再次在webservice中使用时实际上会发生一些变化; ArrayOfStringXXX 问题..
我们能否告诉 WCF 服务将我们自己的 xsd 文件用于其合同,而不是根据 xsd.exe 提供的内容生成新合同?
我尝试了什么:
我已经看过这个示例:IWsdlExportExtension interface sample,这似乎很有帮助,但我无法替换导出方法中的 xsd,因为它从来没有 调用。TL;DR:我们能否将 WCF 服务指向我们自己的 xsd 文件,而不是让它自己生成?
谢谢
【问题讨论】:
【参考方案1】:您可以使用WSCF.blue 等工具从您的XSD 文件生成数据协定类。我有这方面的经验,在大多数情况下都可以。 See this blog for a good explanation.
还有其他工具可以实现这一点,请参阅this question 获取一些建议。
Visual Studio 2012 中似乎也为此提供了一个新选项,请参阅the documentation。我自己没有检查过。
这种开发方式被称为契约优先,所以你可以在谷歌上找到更多信息:-)
【讨论】:
我已经尝试过 WSCF.blue,它还使用 string[] 而不是类...将研究 Contract-First 工具! 似乎 WCF 选项窗格仅在“WCF 服务库”项目上可见,而不在“WCF 服务应用程序”上可见。以上是关于在 WCF 服务中使用我们自己的 xsd 文件的主要内容,如果未能解决你的问题,请参考以下文章