** 什么是 WSDL? **
- WSDL 指網(wǎng)絡服務描述語言
- WSDL 使用 XML 編寫
- WSDL 是一種 XML 文檔
- WSDL 用于描述網(wǎng)絡服務
- WSDL 也可用于定位網(wǎng)絡服務
- WSDL 還不是 W3C 標準
** WSDL 可描述網(wǎng)絡服務(Web Services)**
- WSDL 指網(wǎng)絡服務描述語言 (Web Services Description Language)抬驴。
- WSDL 是一種使用 XML 編寫的文檔掀亩。這種文檔可描述某個 Web service。它可規(guī)定服務的位置员帮,以及此服務提供的操作(或方法)悼沈。
** WSDL文檔結構 **
元素 | 定義 |
---|---|
Types | 數(shù)據(jù)類型定義的容器,它使用某種類型系統(tǒng)(一般地使用XML Schema中的類型系統(tǒng)) |
Message | 通信消息的數(shù)據(jù)結構的抽象類型化定義。使用Types所定義的類型來定義整個消息的數(shù)據(jù)結構 |
Operation | 對服務中所支持的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應消息對 |
PortType | 對于某個訪問入口點類型所支持的操作的抽象集合仑乌,這些操作可以由一個或多個服務訪問點來支持 |
Binding | 特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定。 |
Service | 相關服務訪問點的集合 |
** WSDL文檔 **
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://service.zlb.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="HelloWSService" targetNamespace="http://service.zlb.com/">
<!-- types -->
<wsdl:types>
<!-- 定義 schema 約束 自己引用自己定義的約束 方便下面的應用 tns:命名 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://service.zlb.com/" elementFormDefault="unqualified" targetNamespace="http://service.zlb.com/" version="1.0">
<xs:element name="sayHello" type="tns:sayHello"/>
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<!-- 復合類型 -->
<xs:complexType name="sayHello"> <!-- 方法名 -->
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string"/><!-- 參數(shù) 以及參數(shù)的類型 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<!-- message -->
<!-- 定義消息 -->
<wsdl:message name="sayHelloResponse"> <!-- 響應消息 -->
<wsdl:part element="tns:sayHelloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sayHello"> <!-- 請求消息 -->
<wsdl:part element="tns:sayHello" name="parameters">
</wsdl:part>
</wsdl:message>
<!-- portType -->
<!-- 用來定義接口 -->
<wsdl:portType name="helloWS">
<wsdl:operation name="sayHello"> <!-- 用來指定處理請求的方法 -->
<wsdl:input message="tns:sayHello" name="sayHello"> <!-- 指定客戶端傳過來的數(shù)據(jù) 引用上面定義的message -->
</wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> <!-- 指定服務器端返回的數(shù)據(jù) 引用上面定義的message -->
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<!-- wsdl:binding -->
<!-- 用來定義實現(xiàn)類 -->
<wsdl:binding name="HelloWSServiceSoapBinding" type="tns:helloWS"> <!-- type 引用上面的portType -->
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <!-- 指定樣式為 XML格式的數(shù)據(jù) -->
<wsdl:operation name="sayHello"> <!-- operation 定義實現(xiàn)類的方法 -->
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHello">
<soap:body use="literal"/> <!-- 指定客戶端傳過來的數(shù)據(jù) 基于文本形式 -->
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal"/> <!-- 指定服務器返回給客戶端的數(shù)據(jù) 基于文本形式 -->
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!-- wsdl:service -->
<!-- 發(fā)布出去 并指定地址 -->
<wsdl:service name="HelloWSService">
<wsdl:port binding="tns:HelloWSServiceSoapBinding" name="helloWSPort"><!-- 引用 binding -->
<soap:address location="http://127.0.0.1:8989/WebServices_service/helloWS"/> <!-- 地址 -->
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
這個WSDL的結構需要按照從下面往上面的順序看