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 格式。同时,在 HelloWorldBindinghello 操作中,使用了相对于服务地址的路径 "/hello" 来表示该操作的位置。

总结

WSDL 绑定是 Web 服务架构中非常重要的一个概念,它能够将 WSDL 文档与具体的协议绑定在一起,从而实现不同类型的 Web 服务。SOAP 绑定和 HTTP 绑定是 WSDL 中最常用的两种绑定方式,它们分别使用 SOAP 协议和 HTTP 协议来传递消息。