WSDL(網(wǎng)絡(luò)服務(wù)描述語(yǔ)言涧黄,Web Service Description Language)
是一門基于XML的語(yǔ)言惯退,用于描述Web Service及如何對(duì)其進(jìn)行訪問(wèn)
WSDL文檔是基于XML的它碎,不僅人可以閱讀旷余,及其也可以閱讀空闲,一些新的開(kāi)發(fā)工具可以根據(jù)Web Service生成WSDL文檔丙挽,還能導(dǎo)入WSDl文檔肺孵,生成相應(yīng)調(diào)用Web Service的代碼。
WSDL文檔結(jié)構(gòu)
WSDL文檔是利用這些主要的元素來(lái)描述某個(gè)Web Services的
<portType> : Web Service執(zhí)行的操作
<message> : Web Service執(zhí)行的消息
<types> : Web Service使用的數(shù)據(jù)類型
<binding> : Web Service使用的通信協(xié)議
WSDL端口:
<portType>元素是最重要的WSDL元素
它可以描述一個(gè)web service颜阐,可被執(zhí)行的操作平窘,以及相關(guān)的消息。
可以把<portType>元素當(dāng)做一個(gè)傳統(tǒng)編程語(yǔ)言的函數(shù)庫(kù)(或一個(gè)模塊凳怨,一個(gè)類)
操作類型:
請(qǐng)求-響應(yīng)是最普通的操作類型瑰艘,不過(guò)WSDL定義了四種類型
1. One-way : 此操作可接受消息,但不會(huì)返回響應(yīng)
2. Request-response : 此操作可接受請(qǐng)求猿棉,并返回一個(gè)響應(yīng)
3. Solicit-response : 此操作會(huì)發(fā)送一個(gè)請(qǐng)求磅叛,并等待響應(yīng)
4. Notification : 此操作會(huì)發(fā)送一個(gè)請(qǐng)求屑咳,并不會(huì)等待響應(yīng)
WSDL消息
<message>元素定義一個(gè)操作的數(shù)據(jù)元素
每個(gè)消息均由一個(gè)或多個(gè)部件組成萨赁。可以把這些部件比作傳統(tǒng)編程語(yǔ)言中一個(gè)函數(shù)調(diào)用的參數(shù)兆龙。
WSDL types
<types>元素定義web service使用的數(shù)據(jù)類型
為了最大程度的平臺(tái)中立性杖爽,WSDL使用XML Schema語(yǔ)法來(lái)定義數(shù)據(jù)類型
WSDL 綁定
<binding>元素為每個(gè)端口定義消息格式和協(xié)議細(xì)節(jié)
綁定到SOAP
一個(gè)請(qǐng)求-響應(yīng)的例子
<massage name="getTermRequest">
? ? <part name="term" type="xs:string" />
</message>
<message name="getTermReponse">
? ? <part name="value" type="xs:string">
</message>
<portType name="glossaryTerms">
? ? <operation name="getTerm">
? ? ? ? <input message="getTermResquest"? />
? ? ? ? <output message="getTermResponse" />
? ? </operation>
</portType>
<binding type="glossaryTerms" name="b1">
? ? <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
? ? <operation>
? ? ? ? <soap:operation soapAction="http://example.com/getTerm" />
? ? ? ? <input><soap:body use="literal" /></input>
? ? ? ? <output><soap:body use="literal" /></output>
? ? </operation>
</binding>
binding元素有兩個(gè)屬性:name屬性和type屬性
name屬性定義binding的名稱敲董,而type屬性指向用于binding的端口。
soap:binding元素有兩個(gè)屬性:style屬性和transport屬性
style屬性可取值“rpc”和“document”. transport屬性定義了要使用的SOAP協(xié)議慰安。
operation元素定義了每個(gè)端口提供的操作符腋寨。
對(duì)于每個(gè)操作,相應(yīng)的SOAP行為都需要被定義化焕。同時(shí)必須對(duì)如何輸入和輸出進(jìn)行編碼萄窜。
WSDL UDDI
UDDI是一種目錄服務(wù),企業(yè)可以使用他對(duì)Web Sevice進(jìn)行搜索和注冊(cè)
UDDI (Universal Description, Discovery and Integration),可譯為“通用描述撒桨,發(fā)現(xiàn)與集成服務(wù)”查刻。
什么是UDDI?
UDDI是一個(gè)獨(dú)立于平臺(tái)的框架凤类,用于通過(guò)Internet來(lái)描述服務(wù)穗泵,發(fā)現(xiàn)企業(yè),并對(duì)企業(yè)服務(wù)進(jìn)行集成谜疤。
1. UDDI指的是通用描述佃延,發(fā)現(xiàn)與集成服務(wù)
2. UDDI是一種用于存儲(chǔ)有關(guān)Web Services的信息的目錄
3. UDDI是用WSDL描述的Web Services界面的目錄
4. UDDI通過(guò)SOAP進(jìn)行通信
5 UDDI被構(gòu)建入了微軟的.NET平臺(tái)
UDDI 基于什么?
UDDI 使用 W3C 和 IETF* 的因特網(wǎng)標(biāo)準(zhǔn)夷磕,比如 XML履肃、HTTP 和 DNS 協(xié)議。
UDDI 使用 WSDL 來(lái)描述到達(dá) web services 的界面
此外坐桩,通過(guò)采用 SOAP榆浓,還可以實(shí)現(xiàn)跨平臺(tái)的編程特性,大家知道撕攒,SOAP 是 XML 的協(xié)議通信規(guī)范陡鹃,可在 W3C 的網(wǎng)站找到相關(guān)的信息。
UDDI 如何被使用
假如行業(yè)發(fā)布了一個(gè)用于航班比率檢測(cè)和預(yù)訂的 UDDI 標(biāo)準(zhǔn)抖坪,航空公司就可以把它們的服務(wù)注冊(cè)到一個(gè) UDDI 目錄中萍鲸。然后旅行社就能夠搜索這個(gè) UDDI 目錄以找到航空公司預(yù)訂界面。當(dāng)此界面被找到后擦俐,旅行社就能夠立即與此服務(wù)進(jìn)行通信脊阴,這樣由于它使用了一套定義良好的預(yù)訂界面。
誰(shuí)在支持 UDDI蚯瞧?
UDDI 是一個(gè)跨行業(yè)的研究項(xiàng)目嘿期,由所有主要的平臺(tái)和軟件提供商驅(qū)動(dòng),比如:Dell, Fujitsu, HP, Hitachi, IBM, Intel, Microsoft, Oracle, SAP, 以及 Sun, 它既是一個(gè)市場(chǎng)經(jīng)營(yíng)者的團(tuán)體埋合,也是一個(gè)電子商務(wù)的領(lǐng)導(dǎo)者备徐。
已有數(shù)百家公司參與了這個(gè) UDDI 團(tuán)體。