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

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

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

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

任何帮助表示赞赏!

附:我对此还有另一个问题,但我试图在同一问题中放入太多内容 - 所以现在让我们保持简单。

有帮助吗?

解决方案

你有两个选择:

选项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 文件的文件名:

Add Service Reference dialog

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

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

如果 WSDL 的添加服务引用不会自动转换所有相关且必要的 XSD 文件,您可能需要将它们添加到您的项目中,然后使用类似 XSD2代码 为您将它们转换为 C#(或 VB.NET)类。

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

至于如何创建正确且最小的 WCF 配置,请查看 Miguel Castro 的 DotNet Rocks TV Show #122,标题为 极限WCF. 。Miguel 提供了一种构建 WCF 项目的好方法,并创建与实际需要一样多的配置(因此可以比 svcutil 生成的混乱更好地理解)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top