这些WCF服务引用文件是什么?

12

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

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

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

有人能解释一下为什么会创建多个文件而不是只有一个吗?

1个回答

5

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接