7

我知道这是一个基本主题,但在从 wsdl 开始之前从未这样做过。

我收到了一个 wsdl 文件和一堆带有类型定义的 xsd。我不知道它们是否是从 WCF 服务创建的(我猜是因为拆分格式),但我确实需要创建一个实现合同的 WCF 服务。

问题:如何获取服务合约接口?

我知道 wsdl.exe 和 svcutil.exe - 但不太熟悉是什么。我想在那之后剩下的就是实施服务合同了。

任何帮助表示赞赏!

PS我对此有另一个问题,但我试图在同一个问题中加入太多东西 - 所以现在让我们保持简单。

4

1 回答 1

13

你有两个选择:

选项 1:svcutil.exe在命令行上使用该实用程序。它应该安装在您的C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin目录中(或类似的东西,取决于您拥有的机器和操作系统)

使用 svcutil -? 对于所有许多参数的列表。基本上,以最简单的形式,使用:

svcutil  (name of your service).wsdl (name of your datafile).xsd

这将创建一个(name of your service).cs包含服务和数据合同的相应 C# 文件,以及一个示例配置文件。

生成的 *.cs 文件(或 *.vb,如果您需要 VB.NET)将包含您的服务的服务合同(方法,来自 WSDL)和数据合同(数据部分,来自 XSD) .

选项 2:使用 Visual Studio 中的“添加服务引用”对话框(在解决方案资源管理器中的“引用”节点上),然后输入 WSDL 文件的文件名:

添加服务引用对话框

这将创建一个服务引用,它与实用程序的输出基本相同svcutil.exe- 加上一些用于 Visual Studio 的帮助程序类和文件。

不幸的是,在这两种情况下,导入都会创建一个严重超载的配置文件,这可能是许多程序员认为 WCF 非常复杂的原因之一 - 事实并非如此,但这两个导入工具在创建基本配置方面做得非常糟糕为你配置......不要让那吓跑你!

如果 WSDL 的添加服务引用没有自动转换所有相关和必要的 XSD 文件,您可能需要将它们添加到您的项目中,然后使用XSD2Code 之类的东西为您将它们转换为 C#(或 VB.NET)类.

wsdl.exe是将 WSDL 文件转换为 ASMX(ASP.NET Web 服务)存根的已弃用实用程序 - 不再使用它,请使用svcutil.exeVisual Studio 的 WCF 添加服务参考。

至于如何创建适当且最小的 WCF 配置,请查看 Miguel Castro 的 DotNet Rocks TV Show #122,标题为Extreme WCF。Miguel 提供了一种很好的方式来构建 WCF 项目,并根据实际需要创建尽可能多的配置(因此可以比 svcutil 生成的混乱更好地理解)。

于 2010-01-23T14:26:16.003 回答