在 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

能否结合来自 WCF 服务的 WSDL 和 XSD 数据?

这些 WCF 服务参考文件是啥

XSD 第一个合约 - WCF Soap Web 服务

如何更改 WCf 服务的 wsdl 文件中的默认模式位置?

如何使用 MSXML 针对 XML Schema.xsd 验证我自己的 Schema XSD 文件?

如何在 WCF 服务中使用 RequestContext 映射路径