WSDL 绑定学习笔记
什么是 WSDL 绑定?
WSDL(Web Services Description Language)是一种用于描述 Web 服务的语言,它使用 XML 格式来定义 Web 服务的协议和参数。WSDL 绑定则是通过将 WSDL 文档与一个或多个协议绑定在一起来指定 Web 服务的具体实现。
在 WSDL 中,有两种类型的绑定:SOAP 绑定和 HTTP 绑定。SOAP 绑定指定了如何在 SOAP 的消息中表示 WSDL 中定义的操作,而 HTTP 绑定则指定了如何在 HTTP 协议中传递 WSDL 中定义的操作。
SOAP 绑定示例
以下是一个简单的 WSDL 文件示例,其中包含一个名为 HelloWorld
的 Web 服务:
Copy Code<definitions name="HelloWorld"
targetNamespace="http://example.com/helloworld.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.com/helloworld.wsdl">
<message name="helloRequest">
<part name="name" type="xsd:string"/>
</message>
<message name="helloResponse">
<part name="welcome" type="xsd:string"/>
</message>
<portType name="HelloWorldPortType">
<operation name="hello">
<input message="tns:helloRequest"/>
<output message="tns:helloResponse"/>
</operation>
</portType>
<binding name="HelloWorldBinding" type="tns:HelloWorldPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="hello">
<soap:operation soapAction="http://example.com/hello"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="HelloWorldService">
<port name="HelloWorldPort" binding="tns:HelloWorldBinding">
<soap:address location="http://example.com/helloworld"/>
</port>
</service>
</definitions>
在这个示例中,HelloWorldBinding
定义了如何使用 SOAP 协议来传递 HelloWorld
中定义的操作。它指定了使用 HTTP 作为传输协议,且使用 SOAP 1.1 规范定义的消息格式。
HTTP 绑定示例
以下是一个简单的 WSDL 文件示例,其中包含一个名为 HelloWorld
的 Web 服务:
Copy Code<definitions name="HelloWorld"
targetNamespace="http://example.com/helloworld.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:tns="http://example.com/helloworld.wsdl">
<message name="helloRequest">
<part name="name" type="xsd:string"/>
</message>
<message name="helloResponse">
<part name="welcome" type="xsd:string"/>
</message>
<portType name="HelloWorldPortType">
<operation name="hello">
<input message="tns:helloRequest"/>
<output message="tns:helloResponse"/>
</operation>
</portType>
<binding name="HelloWorldBinding" type="tns:HelloWorldPortType">
<http:binding verb="POST"/>
<operation name="hello">
<http:operation location="/hello"/>
<input>
<http:urlEncoded/>
</input>
<output>
<mime:mimeXml xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"/>
</output>
</operation>
</binding>
<service name="HelloWorldService">
<port name="HelloWorldPort" binding="tns:HelloWorldBinding">
<http:address location="http://example.com/helloworld"/>
</port>
</service>
</definitions>
在这个示例中,HelloWorldBinding
定义了如何使用 HTTP 协议来传递 HelloWorld
中定义的操作。它指定了使用 POST 方法进行传输,并设置了输入使用 URL 编码格式,输出使用 MIME XML 格式。同时,在 HelloWorldBinding
的 hello
操作中,使用了相对于服务地址的路径 "/hello"
来表示该操作的位置。
总结
WSDL 绑定是 Web 服务架构中非常重要的一个概念,它能够将 WSDL 文档与具体的协议绑定在一起,从而实现不同类型的 Web 服务。SOAP 绑定和 HTTP 绑定是 WSDL 中最常用的两种绑定方式,它们分别使用 SOAP 协议和 HTTP 协议来传递消息。