版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向效勞架構(gòu)第7章效勞描述—WSDLServicesDescription:WSDLWeb效勞描述語(yǔ)言WSDL〔WebServicesDescriptionLanguage〕是一個(gè)推薦標(biāo)準(zhǔn)。用于描述Web效勞的技術(shù)調(diào)用語(yǔ)法。1999年HP〔惠普〕公司是第一個(gè)引入Web效勞概念,eSpeak實(shí)現(xiàn)了“電子效勞〞平臺(tái)。2000年6月Microsoft提出了“Web效勞〞術(shù)語(yǔ),把Web效勞作為.NET方案重要組件。在Microsoft的SDL〔ServiceDescriptionLanguage和SCL〔SOAPContractLanguage〕和IBM的NASSL〔NetworkAccessibleServiceSpecificationLanguage〕這兩項(xiàng)技術(shù)的結(jié)合,形成了WSDL的根底。SCL采用XML來(lái)描述應(yīng)用程序所交換的消息,NASSL描述效勞接口和實(shí)現(xiàn)細(xì)節(jié)。2000年9月25日IBM、Microsoft和Ariba提出WSDL1.0。2001年3月15日,他們提交的WSDL1.1成為W3C的Note。2002年7月9日提出WSDL1.2,2003年11月10日提出WSDL2.0,WSDL2.0在2007年6月26日成為W3C正式推薦標(biāo)準(zhǔn)。開(kāi)展歷史WSDL描述web效勞的三個(gè)根本屬性:效勞做些什么?效勞所提供的操作(方法);如何訪問(wèn)效勞?數(shù)據(jù)格式以及訪問(wèn)效勞操作的必要協(xié)議;效勞位于何處?由特定協(xié)議決定的網(wǎng)絡(luò)地址,如URL。WebService接口消息格式約定訪問(wèn)地址根本屬性告訴效勞的使用者如何將請(qǐng)求消息格式化,通過(guò)何種通信協(xié)議在何處訪問(wèn)webservice。WSDL的本質(zhì)面向效勞視圖標(biāo)準(zhǔn)描述資源與協(xié)議變換實(shí)現(xiàn)自動(dòng)效勞部署和調(diào)用ContentJAVA2WSDLWSDL2JAVAUDDI資源效勞運(yùn)行時(shí)客戶端〔人〕客戶端〔機(jī)器〕發(fā)布發(fā)現(xiàn)與定位發(fā)現(xiàn)與定位操作瀏覽器AJAX實(shí)現(xiàn)Web效勞體系結(jié)構(gòu)的松散耦合;無(wú)論是請(qǐng)求者還是提供者可以各自獨(dú)立地使用平臺(tái)、編程語(yǔ)言或分布式對(duì)象模型。與IDL的不同:在描述webservice接口的同時(shí),還要定義訪問(wèn)webservice的機(jī)制;需要定義webservice的有效訪問(wèn)位置,因?yàn)樵陂_(kāi)放的計(jì)算環(huán)境下,沒(méi)有一個(gè)公共模塊提供效勞的訪問(wèn)地址。WSDL特點(diǎn)協(xié)議、消息格式WSDL是XML描述的網(wǎng)絡(luò)效勞,基于消息機(jī)制、包含面向文本或面向過(guò)程信息的操作集合操作及消息的抽象定義與它們具體的網(wǎng)絡(luò)實(shí)現(xiàn)和數(shù)據(jù)格式綁定是別離的,這樣就可以重用這些抽象定義WSDL文檔框架OperationPortTypeMessageBindingPortServiceSupportsInput&OutputProvidesHowtoencodeFormats&ProtocolsHowtoinvokeImplementsInterfaceAccess
specificationEndpointsWSDL的組成WSDL概念模型return1return1<definitionsnamespace=“://…〞> <types>XMLschematypes</type> <message>definitionofamessage</message> <portType>asetofoperations</portType> <binding>communicationprotocols</binding> <service>alistofbindingandports</service></definitions>WSDL的結(jié)構(gòu)方法名輸入?yún)?shù)1參數(shù)2參數(shù)x輸出類型類型定義類型定義消息消息操作Echo.java源代碼效勞接口組成了效勞描述中的可重用局部,包括type元素、message和portType。types元素中描述消息中復(fù)雜數(shù)據(jù)類型的使用。message元素指定XML數(shù)據(jù)類型組成消息的各個(gè)局部。操作的輸入或輸出〔參數(shù)〕被定義為message元素。Operation元素定義了輸入和輸出數(shù)據(jù)流中可以出現(xiàn)的XML消息,作為Web效勞交互根本傳輸單元。portType元素中定義了Web效勞的操作,與傳統(tǒng)中間件IDL的接口相似。效勞接口定義Seeconceptmodel效勞實(shí)現(xiàn)定義是一個(gè)描述給定效勞提供者如何實(shí)現(xiàn)特定效勞接口的WSDL文檔。有binding和services。binding元素描述特定效勞接口在作為負(fù)載傳輸時(shí)的消息傳輸協(xié)議(如SOAP)、網(wǎng)絡(luò)傳輸協(xié)議(如Http)、消息風(fēng)格(如SOAP/RPCorSOAP/Document)和消息的編碼規(guī)那么(如SOAP或literal)Port與binding一一對(duì)應(yīng),以URI的形式描述了綁定對(duì)應(yīng)的端口類型的Internet訪問(wèn)地址。service元素。效勞元素包含一組port元素,將port邏輯分組,如同一訪問(wèn)地址的port可以歸為一組,或一個(gè)端口類型對(duì)應(yīng)的多個(gè)綁定歸為一組。效勞實(shí)現(xiàn)定義Seeconceptmodelwsdl soap
mime soapenc soapenv xsi xsd 名稱空間types元素包含了交換消息的數(shù)據(jù)類型定義。為了實(shí)現(xiàn)最大的互操作性〔interoperability〕和平臺(tái)中立性〔neutrality〕,WSDL選用XMLSchemaDataTypes,簡(jiǎn)稱XSD作為標(biāo)準(zhǔn)類型系統(tǒng),并將它作為固有類型系統(tǒng)。<definitions....><types><xsd:schema..../>*</types></definitions>1.類型使用元素〔element〕形式,而不使用屬性(attribute)形式;不包括僅在特殊的協(xié)議和數(shù)據(jù)格式中使用的元素或者屬性;數(shù)組類型使用Soap:Array類型,并使用ArrayOfXXX作為數(shù)組類型的名;使用XSD編碼表示xsd:anyType。類型—XSD編碼抽象數(shù)據(jù)類型建議<types><schema……>
<elementname="PO"type="tns:POType"/>
<complexTypename="POType">
<elementname="id"type="string"/>
<elementname="name"type="string"/>
<elementname="items">
<complexType>
<elementname="item"type="tns:Item"minOccurs="0"maxOccurs="unbounded"/>
</complexType>
</element>
</complexType>
<complexTypename="Item">
<elementname="quantity"type="int"/>
<elementname="product"type="string"/>
</complexType>
<elementname="Customer"type="tns:CustomerType"/>
<complexTypename="CustomerType">
<elementname="name"type="string"/>
</complexType>
</schema></types>消息由假設(shè)干個(gè)邏輯部件〔part〕構(gòu)成。每個(gè)部件使用一個(gè)消息類型屬性與某個(gè)類型系統(tǒng)的類型相關(guān)聯(lián)。消息定義語(yǔ)法如下:<definitions....><messagename="nmtoken">*<partname="nmtoken"element="qname"?type="qname"?/>*</message></definitions>消息(message)name屬性指定了消息的名稱。如果消息具有多個(gè)邏輯單位,那么需要使用多個(gè)part元素。2.消息<messagename="PO"><partname="po"element="tns:PO"/><partname="customer"element="tns:Customer"/></message><messagename="P1"><partname=“address"type=“XSD:string"/></message><messagename="P2"><partname="composite"type="tns:Composite"/></message>可以用XMLSchema定義的元素來(lái)描述part消息例如端口類型是一個(gè)由抽象操作和抽象消息構(gòu)成的有名稱的集合。<wsdl:definitions....><wsdl:portTypename="nmtoken">*<wsdl:operationname="nmtoken"><wsdl:inputname="nmtoken"?message="qname"/><wsdl:outputname="nmtoken"?message="qname"/><wsdl:faultname="nmtoken"message="qname"/>*</wsdl:operation></wsdl:portType></wsdl:definitions>表示端口類型名稱表示操作名稱操作中引用到的消息通過(guò)message屬性指定3.端口類型定義(portType)消息操作echo.wsdl為一個(gè)端口類型定義了四方面的內(nèi)容:消息傳輸協(xié)議網(wǎng)絡(luò)傳輸協(xié)議消息風(fēng)格RPC風(fēng)格操作的輸入輸出消息包含的是對(duì)遠(yuǎn)程過(guò)程調(diào)用的輸入和輸出參數(shù),而文檔風(fēng)格的輸入和輸出消息包含的是交互雙方事先約定的任意XML文檔。編碼規(guī)那么定義把消息的各個(gè)局部序列化為XML文檔流是所采用的編碼規(guī)那么。通常有兩種:字面(literal)和SOAP。字面編碼規(guī)那么直接使用types元素或XMLSchema定義的類型來(lái)表示消息內(nèi)容;而SOAP編碼規(guī)那么需要把用XMLSchema定義的類型根據(jù)SOAP標(biāo)準(zhǔn)定義的編碼規(guī)那么轉(zhuǎn)換后填充為消息內(nèi)容。4.binding元素<bindingname="TimeServiceSoap"type="s0:TimeServiceSoap"> <soap:bindingstyle="document"transport=":///soap/"/> <operationname="getUTCTime"> <soap:operationsoapAction="://"style="document"/> <input> <soap:bodyuse="literal"/></input> <output><soap:bodyuse="literal"/></output> </operation> <operationname="getOffesetUTCTime"> <soap:operationsoapAction="://"style="document"/> <input> <soap:bodyuse="literal"/> </input> <output> <soap:bodyuse="literal"/> </output> </operation></binding>binding例子關(guān)聯(lián)的端口類型消息協(xié)議消息風(fēng)格傳輸協(xié)議Http包頭的屬性消息內(nèi)容在SOAP消息體中的表現(xiàn)形式literal/encoded<wsdl:bindingname="nmtoken"type="qname">*<wsdl:documentation..../>?<--extensibilityelement-->*<wsdl:operationname="nmtoken">*<wsdl:documentation..../>?<--extensibilityelement-->*<wsdl:input>?<wsdl:documentation..../>?<--extensibilityelement--></wsdl:input><wsdl:output>?<wsdl:documentation..../>?<--extensibilityelement-->*</wsdl:output><wsdl:faultname="nmtoken">*<wsdl:documentation..../>?<--extensibilityelement-->*</wsdl:fault></wsdl:operation></wsdl:binding>binding元素結(jié)構(gòu)<servicename="TimeService"> <documentation>AsampleTimeservice</documentation> <portname="TimeServiceSoap"binding="s0:TimeServiceSoap"> <soap:addresslocation="://"/> </port> <portname="TimeServiceHttpGet"binding="s0:TimeServiceHttpGet"> <:addresslocation="://"/> </port> <portname="TimeServiceHttpPost"binding="s0:TimeServiceHttpPost"> <:addresslocation="://"/> </port></service>為綁定指定唯一地址來(lái)定義一個(gè)訪問(wèn)端口。5.service元素<wsdl:servicename="nmtoken">*<wsdl:documentation..../>?<wsdl:portname="nmtoken"binding="qname">*<wsdl:documentation..../>?<--extensibilityelement--></wsdl:port><--extensibilityelement--></wsdl:service>service元素結(jié)構(gòu)綁定效勞端口“echo.wsdl〞文件Service中的port具有如下的關(guān)系:如果一個(gè)效勞中有多個(gè)訪問(wèn)端口屬于同一端口類型,但是對(duì)應(yīng)不同的綁定或者地址,那么這些訪問(wèn)端口可以相互替換。這使得WSDL文檔使用者根據(jù)需要選擇訪問(wèn)端口。通過(guò)檢查訪問(wèn)端口可以確定效勞的端口類型。這使得WSDL文檔的使用者能夠根據(jù)它支持的端口類型決定是否與一個(gè)特定的效勞通訊。所有訪問(wèn)端口都不相互通信,即一個(gè)效勞的訪問(wèn)端口的輸出不會(huì)是另一個(gè)訪問(wèn)端口的輸入。實(shí)例WSDL1.1支持4種消息交換方式,來(lái)訪問(wèn)效勞端口。單向〔One-way〕:效勞訪問(wèn)端口接收消息;請(qǐng)求響應(yīng)〔Request-response〕:效勞訪問(wèn)端口接收請(qǐng)求消息,然后發(fā)送響應(yīng)消息;要求應(yīng)答〔Solicit-response〕:效勞訪問(wèn)端口發(fā)送要求消息,然后接收應(yīng)答消息;通知〔Notification〕:效勞訪問(wèn)端口發(fā)送通知消息。消息交換方式單向操作語(yǔ)法:<wsdl:definitions....><wsdl:portType....>*<wsdl:operationname="nmtoken"><wsdl:inputname="nmtoken"?message="qname"/></wsdl:operation></wsdl:portType></wsdl:definitions>input元素指定用于單向操作的抽象消息格式。單向操作請(qǐng)求響應(yīng)操作語(yǔ)法<wsdl:definitions....><wsdl:portType....>*<wsdl:operationname="nmtoken"parameterOrder="nmtokens"><wsdl:inputname="nmtoken"?message="qname"/><wsdl:outputname="nmtoken"?message="qname"/><wsdl:faultname="nmtoken"message="qname"/>*</wsdl:operation></wsdl:portType></wsdl:definitions>請(qǐng)求響應(yīng)操作要求應(yīng)答操作語(yǔ)法<wsdl:definitions....><wsdl:portType....>*<wsdl:operationname="nmtoken"parameterOrder="nmtokens"><wsdl:outputname="nmtoken"?message="qname"/><wsdl:inputname="nmtoken"?message="qname"/><wsdl:faultname="nmtoken"message="qname"/>*</wsdl:operation></wsdl:portType></wsdl:definitions>要求應(yīng)答操作通知操作語(yǔ)法<wsdl:definitions....><wsdl:portType....>*<wsdl:operationname="nmtoken"><wsdl:outputname="nmtoken"?message="qname"/></wsdl:operation></wsdl:portType></wsdl:definitions>通知操作如果單向操作和通知操作未指定name屬性,那么該屬性名默認(rèn)為是操作名。如果請(qǐng)求響應(yīng)或要求應(yīng)答操作中未指定name屬性,那么該屬性名默認(rèn)為是操作名+“Request〞/“Responese〞/“Solicit〞。針對(duì)于請(qǐng)求應(yīng)答和要求應(yīng)答操作可以通過(guò)parameterOrder指定一個(gè)參數(shù)名列表。該屬性的值是一個(gè)用空格分開(kāi)的消息構(gòu)件名序列。操作中的元素名稱SOAP:binding元素說(shuō)明WSDL文檔綁定到SOAP協(xié)議格式,該元素在使用SOAP綁定時(shí)是必需的。<definitions....><binding....><soap:bindingtransport="uri"?style="rpc|document"?></binding></definitions>style屬性值是它所包含的操作子元素的style屬性的默認(rèn)值。transport屬性是必需的,它的值表示綁定的傳輸方式與SOAP的何種傳輸方式一致。URI值:///soap/表示傳輸方式和SOAP標(biāo)準(zhǔn)的HTTP綁定相一致。soap:binding元素
<definitions....><binding....><operation....><soap:operationsoapAction="uri"?style="rpc|document"?>?</operation></binding></definitions>soap:operation<definitions....><binding....><operation....><input><soap:bodyparts="nmtokens"?use="literal|encoded"?encodingStyle="uri-list"?namespace="uri"?></input><output><soap:bodyparts="nmtokens"?use="literal|encoded"?encodingStyle="uri-list"?namespace="uri"?></output></operation></binding></definitions>soap:body<definitions....><binding....><operation....><fault>*<soap:faultname="nmtoken"use="literal|encoded"encodingStyle="uri-list"?namespace="uri"?></fault></operation></binding></definitions>soap:fault<definitions....><binding....><operation....><input><soap:headermessage="qname"part="nmtoken"use="literal|encoded"encodingStyle="uri-list"?namespace="uri"?>*<soap:headerfaultmessage="qname"part="nmtoken"use="literal|encoded"encodingStyle="uri-list"?namespace="uri"?/>*<soap:header></input><output><soap:headermessage="qname"part="nmtoken"use="literal|encoded"encodingStyle="uri-list"?namespace="uri"?>*<soap:headerfaultmessage="qname"part="nmtoken"use="literal|encoded"encodingStyle="uri-list"?namespace="uri"?/>*<soap:header></output></operation></binding></definitions>soap:header和soap:headerfault<definitions....><port....><soap:addresslocation="uri"/></port></definitions>soap:address1.rpc/encoded2.rpc/literal3.document/encoded4.document/literal消息傳遞模式publicclassmyServices{publicvoidmyMethod(intx){return}}效勞WSDL文檔內(nèi)容<messagename="myMethodRequest"><partname="x"type="xsd:int"/></message><messagename="empty"/><portTypename="PT"><operationname="myMethod"><inputmessage="myMethodRequest"/><outputmessage="empty"/></operation></portType>1.rpc/encoded樣式SOAP文檔內(nèi)容<soap:envelope><soap:body><myMethod><xxsi:type="xsd:int">5</x></myMethod></soap:body></soap:envelope>1.rpc/encoded樣式WSDL文檔內(nèi)容<messagename="myMethodRequest"><partname="x"type="xsd:int"/></message><messagename="empty"/><portTypename="PT"><operationname="myMethod"><inputmessage="myMethodRequest"/><outputmessage="empty"/></operation></portType>2.rpc/literal樣式SOAP文檔內(nèi)容<soap:envelope><soap:body><myMethod><x>5</x></myMethod></soap:body></soap:envelope>2.rpc/literal樣式WSDL文檔內(nèi)容<types><schema><elementname="xElement"type="xsd:int"/></schema></types><messagename="myMethodRequest"><partname="x"element="xElement"/></message><messagename="empty"/><portTypename="PT"><operationname="myMethod"><inputmessage="myMethodRequest"/><outputmessage="empty"/></operation></portType>3.document/encodedSOAP文檔內(nèi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新冠患者的早期活動(dòng)
- 2023-2024學(xué)年重慶市九年級(jí)(上)月考數(shù)學(xué)試卷(10月份)
- 滬科版八年級(jí)數(shù)學(xué)上冊(cè)第15章軸對(duì)稱圖形與等腰三角形15-1軸對(duì)稱圖形第1課時(shí)軸對(duì)稱圖形與軸對(duì)稱課件
- 七年級(jí)英語(yǔ)重點(diǎn)語(yǔ)法專練(附答案)
- 七年級(jí)下冊(cè)期中語(yǔ)法與作文英語(yǔ)復(fù)習(xí)
- 九年級(jí)英語(yǔ)語(yǔ)法學(xué)案(三)
- 2024-2025學(xué)年版塊9 壓強(qiáng) 專題9-4 不規(guī)則容器中液體壓強(qiáng)、壓力比較 (含答案) 初中物理尖子生自主招生培優(yōu)講義83講
- DB1410T 065-2024冬小麥滴灌生產(chǎn)技術(shù)規(guī)程
- 江蘇省宿遷市2024年中考數(shù)學(xué)試卷(含答案)
- 【四年級(jí)】上冊(cè)道德與法治-7.2 健康看電視 第二課時(shí) 別讓它搶走太多 課件
- 匯川變頻器MD380變頻器在拉絲上的應(yīng)用
- 二次結(jié)構(gòu)工程技術(shù)標(biāo)
- 半導(dǎo)體-硅片生產(chǎn)工藝流程及工藝注意要點(diǎn)
- 工地安全日志范例52007
- 《湖南省住宅工程質(zhì)量通病防治技術(shù)規(guī)程》
- 服裝質(zhì)量控制及流程(共6頁(yè))
- 昆明地區(qū)廢棄花卉秸稈資源化利用現(xiàn)狀及建議
- 煤巷掘錨一體機(jī)化快速掘進(jìn)技術(shù)與應(yīng)用分析
- 有理數(shù)全章復(fù)習(xí)教案
- 《2021國(guó)標(biāo)暖通圖集資料》14K117-2 傘形風(fēng)帽
- 低壓配電房設(shè)備操作流程
評(píng)論
0/150
提交評(píng)論