从WSDL生成Web服务

12

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

我需要主机一个webservice来为客户提供服务。客户已经发送了一份wsdl文件,这个 webservice 应该“实现”它。我该如何操作呢?我已经生成了很多客户端代理,但这是另一个方法。我可以使用ASP.NET 2.0 webservices 或者 Windows Communication Foundation。


生成现有类的WSDL =“自下而上的策略”[相对于]给定现有WSDL的类骨架=“自上而下的策略”(维基百科) - JohnB
4个回答

15

wsdl.exe /server

基于契约生成一个XML Web服务的抽象类。默认为生成客户端代理类。使用 /parameters 参数选项时,该值是包含“server”的 element。

您可以使用 svcutil.exe 来完成与 WCF 相关的类似操作,像这样:

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

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


这真的那么简单吗?我已经多次使用了wsdl.exe,但不知道/server开关。我会测试并报告。 - edosoft
1
是的。WSDL优先开发是一种有效的方法-请参阅此文章:http://blogs.msdn.com/dotnetinterop/archive/2008/09/24/wsdl-first-development-with-wcf.aspx - RichardOD
如果你想在C#中得到结果,这非常简单:使用svcutil.exe thefile.wsdl命令即可。 - Torben Junker Kjær

14

实际上,你应该使用svcutil.exe来完成这个任务,而不是使用wsdl.exe。WSDL.EXE是ASMX web服务技术的一部分,微软现在认为它是“遗留”代码,将不会修复其中的错误。


这就是重点所在。想法是生成制造商不认为是“遗留”的代码,他们仍然计划增强它并修复错误。 - John Saunders
更多信息请参考:https://dev59.com/2XNA5IYBdhLWcg3wdtr5 - Torben Junker Kjær

2
你可以用那个 WSDL 文件做很多事情。
从手动创建 WS 类到使用 wsdl.exe 自动生成的类。
让我们想象一下,对于你的示例,你有这个 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 Files文件夹中执行dir /s命令。
如果您想在Visual Basic中使用,请使用/language:vb或/l:vb选项。
/language: 生成代理类所使用的语言。可选择'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 - rasputino

0

你可以使用微软的wsdl实用工具来生成服务器接口并实现它们。

以下是WSDL实用工具的简要说明。

wsdl.exe - 实用工具,可从WSDL合同文件、XSD模式和.discomap发现文档中为XML Web服务客户端和XML Web服务生成代码。此工具可与disco.exe配合使用。


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