SOAP北京航空航天大學(xué)課件_第1頁
SOAP北京航空航天大學(xué)課件_第2頁
SOAP北京航空航天大學(xué)課件_第3頁
SOAP北京航空航天大學(xué)課件_第4頁
SOAP北京航空航天大學(xué)課件_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SOAP2006-05主要內(nèi)容SOAP發(fā)展歷史SOAP的主要功能SOAP協(xié)議組成部分信封標(biāo)題RPC相關(guān)應(yīng)用發(fā)展歷史SOAP最早由DaveWinner、DonBox和BodAtkinson提出。在1987年,Microsoft開始考慮基于XML的分布式計(jì)算,其目標(biāo)是使應(yīng)用程序能夠使用HTTP上層的遠(yuǎn)程過程調(diào)用(RPC)相互通信。DevelopMentor和Userland加入到了討論。在1998年初,S0AP名字就已經(jīng)被確定。Userland在1998年發(fā)布了一個(gè)XML-RPC規(guī)范。1999年9月SOAP0.9提交IETF。2000年5月8日,SOAP1.1作為Note提交W3C。IBM發(fā)布JavaSOAP實(shí)現(xiàn),并給開放源代碼組織ApacheXMLProject。Sun公司將Web服務(wù)集成到J2EE中。2000年9月13日,W3C組建了XML協(xié)議工作組,專門負(fù)責(zé)設(shè)計(jì)XML協(xié)議,以便成為基于XML分布式計(jì)算的核心。這個(gè)工作組將SOAP1.1作為基礎(chǔ),并于2001年7月9日提交了第一份工作組草案SOAP1.2。SOAP概述SOAP主要功能:定義通信單元的機(jī)制:一個(gè)SOAP封套封裝了所有其他的信息。一個(gè)消息可以有一個(gè)消息體,消息體中可以包含任何XML格式文檔。錯(cuò)誤處理機(jī)制:標(biāo)識(shí)錯(cuò)誤源和導(dǎo)致錯(cuò)誤的原因,并允許錯(cuò)誤診斷信息在共享者和交互者之間傳遞??蓴U(kuò)展件機(jī)制:使用XML模式和名字空間技術(shù),靈活擴(kuò)展元素。靈活的數(shù)據(jù)表示機(jī)制:允許交換已經(jīng)以某種格式序列化的數(shù)據(jù),同時(shí)也提供了以XML格式表示諸如編程語言數(shù)據(jù)類型這樣的抽象數(shù)據(jù)結(jié)構(gòu)的規(guī)則。表示遠(yuǎn)程過程調(diào)用(RPC)和作為響應(yīng)的SOAP消息的約定,并且便于映射為過程式編程語言結(jié)構(gòu)。支持以文檔為中心的方法。將SOAP消息束定到HTTP的機(jī)制,因?yàn)镠TTP是Internd上最常用的通信協(xié)議。SOAP基于XML的協(xié)議,由四部分組成:信封(Envelope):定義了一個(gè)消息框架,描述消息的內(nèi)容是什么,是誰發(fā)送的,誰應(yīng)當(dāng)接受并處理它以及如何處理。編碼規(guī)則(EncodingRules):用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例。綁定(Binding):定義底層通信協(xié)議,進(jìn)行消息交換。RPC:表示遠(yuǎn)程過程調(diào)用和應(yīng)答的協(xié)定。命名空間"""""http://""oding""wsdl/""wsdl/soap"""

SOAP用例<env:Envelopexmlns:env=""><env:Header>

<n:alertcontrolxmlns:n=""><n:priority>1</n:priority><n:expires>2001-06-22T14:00:00-05:00</n:expires>

</n:alertcontrol></env:Header>

<env:Body>

<m:alertxmlns:m=""><m:msg>PickupMaryatschoolat2pm</m:msg>

</m:alert></env:Body></env:Envelope>MessageEnvelopeSOAP結(jié)構(gòu)SOAP消息是由一個(gè)SOAPEnvelope、一個(gè)可選的SOAPHeader和一個(gè)SOAPBody組成的XML文檔。元素和屬性的命名空間標(biāo)識(shí)是""。SOAP消息應(yīng)當(dāng)包含如下部分:一個(gè)SOAPenvelope。Envelope是表示該消息的XML文檔的根級(jí)元素。一個(gè)SOAPHeader。Header是為了支持在松散環(huán)境下在通訊方之間尚未預(yù)先達(dá)成一致的情況下為SOAP消息增加特性的通用機(jī)制。SOAP定義了很少的一些屬性來用于指明誰可以處理該特性以及它是可選的還是強(qiáng)制的。一個(gè)SOAPBody。Body為該消息的最終接收者所想要得到的信息提供了一個(gè)容器。此外,SOAP定義了Body的一個(gè)子元素Fault用于報(bào)告錯(cuò)誤。SOAPHeaderSOAP提供了一個(gè)可伸縮的機(jī)制用于在分散的模塊化的環(huán)境下擴(kuò)展SOAP消息,而通訊雙方并不需要有預(yù)先的約定知識(shí)。典型的擴(kuò)展例子可以是實(shí)現(xiàn)一些諸如認(rèn)證、事務(wù)管理以及支付的Header條目。Header元素應(yīng)當(dāng)被編碼為SOAPEnvelopeXML文檔的第一直接子元素。Header的所有直接子元素都被稱為Header條目。Header條目的編碼規(guī)則包括:一個(gè)SOAPHeader條目由一個(gè)完整修飾的元素名來標(biāo)識(shí),所謂完整修飾的元素名是由一個(gè)命名空間URI和局部名來組成。SOAPHeader元素的所有直接子元素都必須是完整修飾的。encodingStyle屬性可以用于指明Header條目的編碼風(fēng)格。actor屬性和SOAPmustUnderstand屬性可以用于指明由哪個(gè)SOAP結(jié)點(diǎn)來處理?xiàng)l目以及如何處理?xiàng)l目。SOAPHeader描述安全憑證事務(wù)ID路由調(diào)試信息支付令牌……actor屬性SOAP消息從生成者到達(dá)最終接受者,將潛在地沿著消息路徑經(jīng)過一系列的SOAP中間結(jié)點(diǎn)。SOAP中間結(jié)點(diǎn)是一個(gè)能夠接受和轉(zhuǎn)發(fā)SOAP消息的應(yīng)用程序。所有的中間結(jié)點(diǎn)都如同最終接受者一樣由一個(gè)URI來標(biāo)識(shí)。

actor屬性用一個(gè)RUI標(biāo)識(shí)節(jié)點(diǎn)處理對(duì)應(yīng)的文件頭時(shí)必須扮演的角色。當(dāng)一個(gè)節(jié)點(diǎn)接收到一個(gè)SOAP消息時(shí),它要分析文件頭,以確定哪些代碼塊是由該節(jié)點(diǎn)支持的角色。Header元素中接收者角色類似和約的接受者。一個(gè)接收者接到其想要的一個(gè)Header元素必須不轉(zhuǎn)發(fā)該Header給SOAP消息路徑中的下一個(gè)應(yīng)用程序。SOAPactor全局屬性可以被用于指明Header元素的接收者。而SOAPactor屬性的值是一個(gè)URI。這個(gè)特別的URI""指明該Header元素是直接的下一個(gè)進(jìn)行消息處理的SOAP應(yīng)用程序想要的。這與HTTP的連接頭字段的hop-by-hopscopemodel的表示。若省略SOAPactor屬性,則表明接收者是SOAP消息的最終接收者。SOAPBodySOAPBody元素提供一個(gè)簡(jiǎn)單的用于與消息的最終接收者交換強(qiáng)制信息的機(jī)制。而Body元素的典型應(yīng)用包含序列的RPC調(diào)用和錯(cuò)誤報(bào)告。Body元素在編碼上作為SOAPEnvelope元素的一個(gè)直接子元素。如果包含Header元素,則Body元素必須直接跟隨Header元素,否則Body元素必須是Envelope元素的第一直接子元素。所有Body元素的直接子元素被成為SOAPBody條目,同時(shí)每一個(gè)Body條目都應(yīng)當(dāng)編碼為SOAPBody元素里的一個(gè)獨(dú)立元素。SOAPBodyBody條目的編碼規(guī)則包括:1.一個(gè)Body條目由一個(gè)完整修飾的元素名來標(biāo)識(shí),所謂完整修飾的元素名是由一個(gè)命名空間URI和局部名來組成。SOAPBody元素的直接子元素可以是命名空間修飾的。2.SOAPencodingStyle屬性可以被用來表明Body條目中使用的編碼規(guī)則。3.SOAP定義了一個(gè)Body條目,用于報(bào)告錯(cuò)誤的Fault條目。SOAP錯(cuò)誤SOAPFault元素是用于在SOAP消息中傳輸錯(cuò)誤或狀態(tài)信息。如果SOAP消息需要包含SOAPFault元素的話,它必須作為一個(gè)Body條目出現(xiàn),同時(shí)在Body元素內(nèi)它必須至多出現(xiàn)一次。SOAPFault元素定義了如下子元素:1.faultcode元素是應(yīng)那些要提供一個(gè)算法上的機(jī)制來標(biāo)識(shí)錯(cuò)誤的軟件的需要。faultcode必須在SOAPFault元素中出現(xiàn)。SOAP定義了一個(gè)很小的SOAP錯(cuò)誤代碼的集合用于覆蓋基本的SOAP錯(cuò)誤。2.faultstring元素是為那些錯(cuò)誤代碼提供一個(gè)人可以讀懂的錯(cuò)誤解釋,它不是為程序處理而設(shè),提供一些解釋該錯(cuò)誤種類的信息。3.faultactor元素是為在SOAP消息路徑中是誰引起了該錯(cuò)誤的發(fā)生這一情況描述信息。faultactor屬性的值是一個(gè)標(biāo)識(shí)該源的一個(gè)URI。所謂并非作為SOAP消息最終接收者的應(yīng)用程序必須在SOAPFault元素中包含faultactor元素。而消息的最終接收者可以使用faultactor元素來明確地指明是它生成了該錯(cuò)誤。4.detail元素是用于傳輸與SOAPBody元素相關(guān)的應(yīng)用程序特別的錯(cuò)誤信息。如果Body元素中的內(nèi)容不能被成功地處理的時(shí)候,它必須出現(xiàn)。它必須不能被用于傳輸屬于Header條目的錯(cuò)誤信息。SOAP編碼簡(jiǎn)單類型SOAP采用了在“XMLSchemaPart2:Datatypes”的“Build-indatatypes”節(jié)中定義的所有類型,包括值和詞匯空間(lexicalspaces)1.字符串:“string”數(shù)據(jù)類型在“XMLSchemaPart2:Datatypes”中被定義。2.枚舉:“XMLSchemaPart2:Datatypes”規(guī)范定義了一種稱為“玫舉(enumeration)”的機(jī)制。3.字節(jié)數(shù)組:一個(gè)Byte數(shù)組可以編碼為單引用或多引用值。對(duì)一個(gè)不透明的Byte數(shù)組的推薦表示是使用在XMLSchema規(guī)范中定義的“base64”編碼方式。4.多態(tài)存取標(biāo)識(shí):多態(tài)地訪問數(shù)個(gè)類型的值,在運(yùn)行時(shí)刻每個(gè)類型都是可使用的。一個(gè)多態(tài)存取標(biāo)識(shí)實(shí)例必須包含一個(gè)“xsi:type”屬性以描述類型的實(shí)際值。SOAP編碼復(fù)合類型SOAP依照在程序語言中常??匆姷囊韵陆Y(jié)構(gòu)模式來定義復(fù)合類型:1.“struct”是一個(gè)復(fù)合類型值,其成員的存取標(biāo)識(shí)名是相互區(qū)別的唯一標(biāo)志,應(yīng)彼此各不相同。2.“array”是一個(gè)復(fù)合類型值,其成員的順序位置是相互區(qū)別的唯一標(biāo)志。SOAP中的RPCSOAP的一個(gè)設(shè)計(jì)目標(biāo)就是要利用XML的可擴(kuò)展性和可伸縮性來包裝和交換RPC調(diào)用。在RPC中,使用HTTP作為SOAP協(xié)議綁定媒介的情況下,一個(gè)RPC調(diào)用可以很自然地映射到一個(gè)HTTP請(qǐng)求,而RPC響應(yīng)則可以映射到HTTP響應(yīng)。使用SOAP方式的RPC并不限于HTTP協(xié)議綁定。為實(shí)施一個(gè)方法調(diào)用,需要以下信息:1.目標(biāo)SOAP結(jié)點(diǎn)的URI2.方法名3.可選的方法或過程的特征4.方法或過程的參數(shù)5.可選的頭數(shù)據(jù)

SOAP依賴協(xié)議綁定來提供傳送URI的機(jī)制。SOAP請(qǐng)求消息<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://{soaporg}/envelope/"

SOAP-ENV:encodingStyle=

"http://{soaporg}/encoding/"><SOAP-ENV:Body><m:QuotePricexmlns:m="Some-URI"><commodity>Computer</commodity></m:QuotePrice></SOAP-ENV:Body></SOAP-ENV:Envelope>RPC和SOAPBody該方法響應(yīng)顯示為一個(gè)簡(jiǎn)單結(jié)構(gòu)struct,包含每個(gè)[out]或[in/out]參數(shù)的存取標(biāo)識(shí)。而第一個(gè)存取標(biāo)識(shí)是返回值,而隨后則是按照原來次序的返回參數(shù)。每個(gè)[out]或[in/out]參數(shù)都被表示為一個(gè)存取標(biāo)識(shí),該存取標(biāo)識(shí)的名和類型都對(duì)應(yīng)于相應(yīng)參數(shù)的名和類型。返回值的存取標(biāo)識(shí)名并沒有多少語義。同樣的,結(jié)構(gòu)的名也并沒有多少語義。當(dāng)然,無論如何,在添加了“Response”字串的方法名后,要有一個(gè)約定來命名它。方法調(diào)用出錯(cuò)應(yīng)使用SOAPFault元素來編碼。如果一個(gè)綁定協(xié)議對(duì)于錯(cuò)誤表達(dá)還有額外規(guī)則,那么這些規(guī)則都應(yīng)當(dāng)被遵守。方法和響應(yīng)的結(jié)構(gòu)可以使用規(guī)則來編碼,也可以使用在encodingStyle屬性中描述的其他編碼。應(yīng)用程序可以處理漏寫參數(shù)的請(qǐng)求不過也可以返回一個(gè)錯(cuò)誤。因?yàn)樵陧憫?yīng)中若包含“result”則表明成功,若包含“fault”則表明失敗,所以如果方法響應(yīng)中同時(shí)包含了“result”和“fault”則是錯(cuò)誤的。在HTTP中使用SOAP

SOAP利用HTTP的請(qǐng)求/響應(yīng)消息模型,將SOAP請(qǐng)求的參數(shù)放在HTTP請(qǐng)求里,而將SOAP響應(yīng)的參數(shù)放在HTTP響應(yīng)里。SOAPActionHTTP請(qǐng)求頭字段(headerfield)可以用于指示SOAPHTTP請(qǐng)求的目的。它的值是一個(gè)標(biāo)識(shí)該目的的URI。POST/StockQuoteHTTP/1.1Content-Type:text/xml;charset="utf-8"Content-Length:nnnn

SOAPAction:"http:///abc#MyMessage"<env:Envelope

xmlns:env="">...</env:Envelope>在HTTP之上的SOAP遵從用于在HTTP中表示通訊狀態(tài)的HTTP狀態(tài)代碼的語義。

HTTP/1.1200OKContent-Type:text/xml;charset="utf-8"Content-Length:nnnn

<env:Envelope

xmlns:env="">...</env:Envelope>SOAP工具列表Company/OrganizationReporting

ImplementationName

ImplementationVersionSpecVersion/CommentApacheGlenDanielsAxisBeta1andafterLimitedsupportforJuneSOAP1.2specinBeta1,andfortheDecemberSOAP1.2specinthecurrentCVSimplementation.Don'tyetfullysupportnewencodingorallfaults,butweplantobefullycompliantsoon,trackingthespecintofuturereleases.BEADavidOrchard

WebLogicServer8.0andlaterBEAprovidesasoap1.2endpointat.EndpointcontactisManojCheenath.MicrosoftHenrikFrystykNielsen

BizTalkInordertohelpmeetingtheW3Cimplementationrequirements,MicrosoftwillprovideapublicendpointthatcanacceptincomingSOAP1.2messagesandbeabletogenerateSOAP1.2messagesandsendthemtootherSOAP1.2endpoints.Endpointisat(Contacts:AlexDeJarnatt<>andJohnKoropchak<>).SOAPLitePaulKulchenko

SOAP::Lite0.55andlaterLimitedsupportforSOAP1.2.PlantosupportmostofthespecbeforeMarch2003.SystinetJacekKopecky

WASPServerforJava4.0WASP4.5supportsmostfeaturesoftheJune2002LastCalldraftofSOAP1.2.Endpointisavailable,seeformoreinformation.TIBCODonMullen

WebServicesSDK2.0TIBCO'sSOAP1.2endpointisavailableatWhiteMesaBobCunnings

WhiteMesaServer3.0EndpointsupportsSOAP1.2,seefordetails.SOAP工具列表Company/OrganizationImplementationName

ImplementationVersionSpecVersion/CommentIBMWebsphere5.0orlaterApacheSOAPhasworkedundereveryversionofWebSpherefrom1.1to3.02.ItwillworkoutoftheboxonWebSphere3.5wit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論