我想使用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
我错了什么?
答案 0 :(得分:3)
我相信这里存在误解。很可能插图中的wsdl.exe
指的是Microsoft's tool,其描述为:
Web服务描述语言工具从WSDL合同文件,XSD架构和.discomap发现文档为XML Web服务和XML Web服务客户端生成代码 的
通过将输出视为WSDL文件,您似乎意味着,我可以放心地假设您真的尝试从XSD文件开始创建WSDL文件。下面我试图解释为什么你不能这么简单,以及你有什么选择。
下图显示了WSDL 1.1规范背后的模型。
您的XSD完全匹配,类型下的仅。它是WSDL术语,types
表示用于描述组成消息的部分的类型系统,然后用于描述组合为绑定到应用程序/传输协议的端口(抽象接口)的操作的输入/输出和故障,并最终在一个或多个网络端点上作为服务进行(物理上)访问。
要从XSD生成WSDL,您现在意识到需要为可以自动为您生成WSDL的工具提供更多数据。例如,您要在WSDL中描述哪些操作?对于它们中的每一个,输入是什么,最有可能是输出,也可能是一个或多个故障?你如何对它们进行分组(portType = interface)?你想要使用什么绑定:HTTP,SOAP?什么版本的SOAP? SOAP over:HTTP,MQ? SOAPAction的?多少个WSDL文件:1个,或者3个?
有些工具可能会在上面的行中向您询问一系列问题(数据输入/向导),然后为您创建WSDL。其他人,在XSD架构构造的实现中使用预定义模式(例如,IFX有一定的方式来定义请求/响应元素)所以基于这些假设,一个专门的工具,如QTAssistant(我是与之相关联的)会问你更少的问题,同时仍然创建WSDL。
我记得有一两个在线工具能够让用户上传XSD文件,然后在提示你几个问题之后创建WSDL,但我似乎无法再找到它们...... like this one ......
答案 1 :(得分:0)
根据我的理解,你不要去xsd-> wsdl,但我可能错了。
Generating a WSDL from an XSD file可能会帮助您清理它。
答案 2 :(得分:0)
您无法以这种方式从XSD自动生成WSDL。为了创建WSDL,您需要从新的WSDL开始并导入此XSD。
XSD定义了可用于服务的数据类型。有些XSD通常嵌入在WSDL中,有些是专门导入的。
另一种方法是使用C#中的XSD生成服务,然后从该服务中提取具体的WSDL,但这不是首选,因为许多团队更喜欢contract first web services。