【问题标题】:How to create wsdl from xsd如何从 xsd 创建 wsdl
【发布时间】:2013-03-27 21:09:39
【问题描述】:

我想使用 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

我做错了什么?

【问题讨论】:

  • 我看到有人这样编码:wsdl.exe /language:cs /parameters: header:c:\myService\Contract\HeaderData.xsd data:c:\myService\Contract\MyData.xsd message : c:\myService\Contract\Messages.xsd /out: MyWsdl.wsdl。这很傻。但是我忘记写这个命令了。

标签: c# xsd wsdl


【解决方案1】:

我认为这里存在误解。您插图中的wsdl.exe 很可能是指Microsoft's tool,其描述为:

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

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

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

您的 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,但我似乎再也找不到它们了......有点@987654324 @...

【讨论】:

  • 如果有时间我会读一读。我通过更改代码解决了这个问题。
【解决方案2】:

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

Generating a WSDL from an XSD file 可能会帮助您解决问题。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2019-05-14
      相关资源
      最近更新 更多