WSDL編寫的五個(gè)步驟
我們以http://blog.csdn.net/hongbo781202/archive/2004/07/21/47135.aspx中的案例來說明.
1)聲明名稱空間
必須在 <definitions> 元素中提供各種名稱空間的聲明.
<definitions
????? targetNamespace="http://loans.org/wsdl/loan-approval"
????? xmlns="http://schemas.xmlsoap.org/wsdl/"
????? xmlns:xsd="http://www.w3.org/2001/XMLSchema"???
????? xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"?????
????? xmlns:lns="http://loans.org/wsdl/loan-approval">
三個(gè)必須做的外部名稱空間聲明是 WSDL、SOAP 和 XSD(XML 模式定義)
xmlns="http://schemas.xmlsoap.org/wsdl/"是WSDL名稱空間
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 是SOAP名稱空間,這里因?yàn)槭怯米鯞PEL4WS,所以
不需要該名稱空間
xmlns:xsd="http://www.w3.org/2001/XMLSchema"是XSD名稱空間
2)編寫服務(wù)
<definitions> 元素包含一個(gè)或多個(gè) <portType> 元素,實(shí)際上,每個(gè)元素都是您希望表示的一系列
operation。或者,您也可以將單個(gè) portType 元素看作是將各種方法組成類的一個(gè)邏輯分組。我們稱
portType為服務(wù)---這就是"WEB服務(wù)"這個(gè)名稱的由來.
<portType name="loanServicePT">
?? <operation name="request">
????? <input message="lns:creditInformationMessage"/>
????? <output message="lns:approvalMessage"/>
????? <fault name="unableToHandleRequest"
???????????? message="lns:errorMessage"/>
?? </operation>
</portType>
可以看出,portType是operation的集合.一個(gè)operation是一個(gè)方法,那一個(gè)portType不就是一個(gè)類嗎?一個(gè)
類,我們可以看作一個(gè)服務(wù).
3)指定參數(shù)
operation指定了輸入的參數(shù)和輸出的參數(shù),在 WSDL 術(shù)語中,所有參數(shù)稱為“消息”。
<message name="creditInformationMessage">
?? <part name="firstName" type="xsd:string"/>
?? <part name="name" type="xsd:string"/>
?? <part name="amount" type="xsd:integer"/>
</message>
一個(gè)消息可以有多個(gè)part元素,part元素指定名稱和類型.
4)與SOAP綁定
WSDL以一種抽象方式定義了操作和消息,而不考慮實(shí)現(xiàn)的細(xì)節(jié)。實(shí)際上,WSDL 的任務(wù)是定義或描述 Web
服務(wù),然后提供一個(gè)對(duì)外部框架的引用來定義 WSDL 用戶將如何實(shí)現(xiàn)這些服務(wù)。可以將這個(gè)框架當(dāng)作
WSDL 抽象定義和它們的實(shí)現(xiàn)之間的“綁定(binding)”。一般是與SOAP綁定,當(dāng)然,也不是必須的.
5)指定實(shí)現(xiàn)
當(dāng)您在 UDDI 注冊(cè)中心發(fā)布 Web 服務(wù)時(shí),會(huì)使用它.
最后兩個(gè)步驟把WSDL與SOAP/UDDI結(jié)合起來了.