2

我想使用 3 个 xsd 文件创建一个 wsdl。你是怎么做到的?

我在命令提示符下试过这个:

wsdl.exe /language:cs /parameters: c:\myService\Contract\HeaderData.xsd c:\myService\Contract\MyData.xsd c:\myService\Contract\Messages.xsd /out: MyWsdl.wsdl

我错了什么?

4

3 回答 3

5

我相信这里有一个误解。您插图中的最有可能wsdl.exe指的是Microsoft 的 tool,它被描述为:

Web 服务描述语言工具从 WSDL 契约文件、XSD 模式和 .discomap 发现文档为 XML Web 服务和 XML Web 服务客户端生成代码

从您通过要求输出为 WSDL 文件所暗示的内容来看,我可以安全地假设您确实尝试从 XSD 文件开始创建 WSDL 文件。下面我试图解释为什么你不能那么容易地做到这一点,以及你有什么选择。

下图向您展示了 WSDL 1.1 规范背后的模型。

WSDL 1.1 XSD 的 QTAssistant DataSet 视图

您的 XSD 完全适合,并且types下。它是 WSDL 术语,types表示您的类型系统,用于描述组成消息的部分,然后用于描述操作的输入/输出和故障,这些操作组织为绑定到应用程序/传输协议的端口(抽象接口),并最终生成(物理上) ) 可作为服务在一个或多个网络端点访问。

要从 XSD 生成 WSDL,您现在已经意识到您需要向可以自动为您生成 WSDL 的工具提供更多数据。例如,您想在 WSDL 中描述哪些操作?对于它们中的每一个,输入是什么,最有可能是输出,可能还有一个或多个故障?您将如何对它们进行分组(portType = interface)?您想使用什么绑定:HTTP、SOAP?什么版本的 SOAP?SOAP over:HTTP、MQ?SOAP 动作?多少个 WSDL 文件:1 个,或者 3 个?

一些工具可能会按照上述思路向您提出一系列问题(数据输入/向导),然后为您创建 WSDL。其他人,在 XSD 模式构造的实现中使用预定义的模式(例如,IFX有某种方式来定义请求/响应元素),所以基于这些假设,一个专门的工具,如QTAssistant(我与它相关联)会问你更少问题,同时仍然创建 WSDL。

我记得有一两个在线工具能够允许用户上传 XSD 文件,然后在提示您几个问题后创建 WSDL,但我似乎再也找不到它们了......有点像这个...... .

于 2013-03-28T00:06:16.030 回答
0

据我了解,您不会使用 xsd->wsdl,但我可能是错的。

不过,从 XSD 文件生成 WSDL可能会帮助您清除它。

于 2013-03-27T21:12:31.607 回答
0

您不能以这种方式从 XSD 自动生成 WSDL。为了创建 WSDL,您需要从一个新的 WSDL 开始并导入这个 XSD。

XSD 定义了可用于服务的数据类型。有些 XSD 通常嵌入在 WSDL 中,有些是专门导入的。

另一种方法是使用 C# 中的 XSD 生成服务,然后从该服务中提取具体的 WSDL,但这不是首选,因为许多团队更喜欢契约优先的 Web 服务

于 2013-03-27T21:25:51.550 回答