从 wsdl 生成 web 服务

Posted

技术标签:

【中文标题】从 wsdl 生成 web 服务【英文标题】:Generate webservice from wsdl 【发布时间】:2010-11-16 07:22:05 【问题描述】:

这可能是一个非常简单的问题,但我找不到答案:

对于客户端,我需要托管一个网络服务。客户向我发送了一个 web 服务应该“实现”的 wsdl 文件。我该怎么做?我已经生成了任意数量的客户端 rpoxies,但这是相反的。我可以同时使用 ASP.NET 2.0 网络服务或 Windows Communication Foundation。

【问题讨论】:

generate WSDL for existing classes = "bottom-up strategy" [与] 给定现有 WSDL = "top-down strategy" (Wikipedia) 生成类骨架 【参考方案1】:

wsdl.exe /server。

为 XML 生成一个抽象类 基于合同的 Web 服务。 默认是生成客户端 代理类。使用时 /parameters 选项,这个值是 包含的元素 “服务器”。

您可以对 WCF 使用 svcutil.exe 执行类似的操作,例如:

svcutil.exe thewsdl.wsdl /language:c# /out:ITheInterface.cs(我没有测试过这个)。

编辑- John Saunders 在他的回答中提出了一个很好的观点来支持 WCF 方法-我也推荐这个。

【讨论】:

真的那么简单吗?我已经多次使用 wsdl.exe 但不知道 /server 开关。我会测试并报告 是的。 WSDL 首先开发是一种有效的方法 - 参见这篇文章:blogs.msdn.com/dotnetinterop/archive/2008/09/24/… 如果你想在 C# 中得到结果,就这么简单:svcutil.exe thefile.wsdl【参考方案2】:

实际上,您应该使用 svcutil.exe 执行此操作,而不是使用 wsdl.exe。 WSDL.EXE 是 Microsoft 现在认为是“遗留”代码的 ASMX Web 服务技术的一部分,不会修复错误。

【讨论】:

这就是重点。这个想法是生成制造商不认为是“遗留”的代码,并且他们仍计划在其中增强它并修复错误。 更多信息在这里:***.com/questions/950150/…【参考方案3】:

您可以使用该 WSDL (wissd'le) 文件做很多事情。

手动执行 WS 类到使用 wsdl.exe 中的 Auto Generated

让我们想象,例如,您有这个WDSL(取自WebServiceX.Net)


创建一个 C# 自动生成的代理,您可以转到命令提示符并编写:

wsdl /language:cs /protocol:soap /out:C:\myProxyScripts http://www.webservicex.net/TranslateService.asmx?wsdl

注意:在您的 C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin 文件夹中,您会找到 wsdl.exe 或在 C:\Program 中执行 dir /s文件\

如果您想使用 Visual Basic,只需使用 /language:vb/l:vb

/语言: 用于生成的代理类的语言。从“CS”中选择, 'VB'、'JS'、'VJS'、'CPP' 或为实现 System.CodeDom.Compiler.CodeDomProvider 的类提供完全限定名称。

默认 语言是“CS”(CSharp)。缩写形式是 '/l:'。

此命令会将自动生成的代理放入您的 C:\myProxyScripts 中。

如果您在计算机中使用WSDL 文件,只需将 URL 更改为您的完整路径,例如

wsdl /language:cs /protocol:soap /out:C:\myProxyScripts C:\myProxyScripts\myWsdlFile.wsdl

注意:您生成的代理将被称为 服务名称,在我们的示例中,您已指定为:

<wsdl:service name="TranslateService">

我希望这对您有所帮助,了解 WSDL、自动生成的代理,并且您现在可以最终管理一切以满足客户的愿望。

【讨论】:

不推荐使用新的 wsdl 版本/server,现在最好使用/serverInterface(并实现它)服务器开关已被弃用。请改用 /serverInterface。【参考方案4】:

您可以使用 microsoft 的 wsdl 实用程序来生成服务器接口并实现它们

这是 WSDL 实用程序的简短描述。

wsdl.exe - 为 xml Web 服务客户端和 xml Web 生成代码的实用程序 服务 从 WSDL 合同文件、XSD 架构和 .discomap 中使用 ASP.NET 发现文件。此工具可与disco.exe 配合使用。

【讨论】:

以上是关于从 wsdl 生成 web 服务的主要内容,如果未能解决你的问题,请参考以下文章

从 wsdl 生成 web 服务

从 WSDL 文件创建 ASMX Web 服务

从 wsdl 生成 html 表单

将 ColdFusion 生成的 WSDL Web 服务从 RPC 编码更改为文档文字会有啥影响?

WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先

从 WSDL 生成请求/响应 XML