为什么WSDL引入了wsdl:message?和消息部分?
在操作参数(输入,输出,故障)中直接使用XSD会带来什么好处?
他们(带有wsdl消息部分的wsdl消息)如何比XSD更抽象?
为什么它没有以这种方式组织:
<operation name="GetEndorsingBoarder">
<input type="xsd:string"/>
<output type="xsd:string, xsd:int, xsd:boolean"/>
<fault "type="xsd:string""/>
</operation>
答案 0 :(得分:1)
我明白了:
消息不只是指定操作的参数。
消息及其部分在绑定中引用。应该可以以不同的方式绑定不同的部分:
<message name="m1">
<part name="body" element="tns:GetCompanyInfo"/>
</message>
<message name="m2">
<part name="body" element="tns:GetCompanyInfoResult"/>
<part name="docs" type="xsd:string"/>
<part name="logo" type="tns:ArrayOfBinary"/>
</message>
<portType name="pt1">
<operation name="GetCompanyInfo">
<input message="m1"/>
<output message="m2"/>
</operation>
</portType>
<binding name="b1" type="tns:pt1">
<operation name="GetCompanyInfo">
<soap:operation soapAction="http://example.com/GetCompanyInfo"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<mime:multipartRelated>
<mime:part>
<soap:body parts="body" use="literal"/>
</mime:part>
<mime:part>
<mime:content part="docs" type="text/html"/>
</mime:part>
<mime:part>
<mime:content part="logo" type="image/gif"/>
<mime:content part="logo" type="image/jpeg"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
</binding>
我错过了这个,因为“非SOAP'文字'”绑定非常罕见。
答案 1 :(得分:0)
XSD
描述了DATA
方面,例如webservice调用的数据方面,而WSDL
描述了Web服务的目的(方法调用)。您通常无法单独从数据中找出方法调用。
查看Generating a WSDL from an XSD file
上的Cheeso和Marc答案编辑:source
message
描述了Web服务提供者和消费者之间交换的数据,每个Web服务都有两条消息:
1)输入:Web服务的参数
2)输出:从Web服务返回数据
每个message
都有零个或多个part
个参数(一个用于Web服务函数的每个参数)每个part
参数与types
中定义的具体类型相关联容器元素。
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
这里定义了两个消息元素。第一个表示请求消息SayHelloRequest,第二个表示响应消息SayHelloResponse。
这些消息中的每一个都包含单个部分元素。对于请求,该部分指定函数参数;在这种情况下,我们指定一个firstName参数。对于响应,该部分指定函数返回值;在这种情况下,我们指定一个问候语返回值。