这些 WCF 服务参考文件是啥

Posted

技术标签:

【中文标题】这些 WCF 服务参考文件是啥【英文标题】:What are these WCF service reference files这些 WCF 服务参考文件是什么 【发布时间】:2010-12-17 19:59:18 【问题描述】:

当我在 Visual Studio 2008 中添加 WCF 服务引用时,会创建一个名为 Service Reference\ServiceReferenceNamespace 的目录。

在这个目录下,有名为Service.xsd、Service1.xsd、Service2.xsd、Service3.xsd和Service4.xsd的文件。这些文件不是重复的——不同的文件定义了不同的类型和元素。当我第一次创建服务引用时,只有一个文件,但当我添加更多 DataContract 和 OperationContracts 时,添加了更多 Service*-files。

生成了 5 个不同的文件,而不仅仅是一个,这看起来有点奇怪。如果我删除了服务引用(因此也删除了目录),然后再次添加它,则会再次添加相同的文件。

谁能解释为什么要创建多个文件而不是一个?

【问题讨论】:

【参考方案1】:

当您添加服务引用时,VS 首先下载描述服务的元数据——作为 WSDL 和 XSD 文件。这些存储在 ServiceReference 目录中。然后 VS 使用这些文件作为输入运行代码生成步骤,生成 Reference.cs 或 .vb 作为输出。

【讨论】:

也许我不清楚。我的问题是为什么会有 Service1.xsd、Service2.xsd、Service3.xsd 和 Service4.xsd 而不仅仅是 Service.xsd。 每个类型命名空间都会得到一个 xsd 文件。对于使用 DataContractSerializer 的 WCF 服务,您通常会为您的类型使用的每个 CLR 命名空间获得一个 XSD 命名空间,另外还有一个用于内置类型。如果您想将所有应用程序定义的类型放入一个 XSD 命名空间,您可以使用 [DataContract(Namespace=".​​..")] 将其设置为任何 URI。

以上是关于这些 WCF 服务参考文件是啥的主要内容,如果未能解决你的问题,请参考以下文章

下载 WCF 服务公开的所有 WSDL 文件的最佳方法是啥?

下载 WCF 服务公开的所有 WSDL 文件的最佳方法是啥?

WCF 可靠会话的目的是啥?

从 Excel 访问 WCF 服务的最佳方式是啥?

从 WCF 客户端传播到 WCF 服务的事务的隔离是啥意思?

测试 WCF 服务的最佳方法是啥?