版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
SOAP2006-05主要內(nèi)容SOAP發(fā)展歷史SOAP的主要功能SOAP協(xié)議組成部分信封標題RPC相關(guān)應(yīng)用發(fā)展歷史SOAP最早由DaveWinner、DonBox和BodAtkinson提出。在1987年,Microsoft開始考慮基于XML的分布式計算,其目標是使應(yīng)用程序能夠使用HTTP上層的遠程過程調(diào)用(RPC)相互通信。DevelopMentor和Userland加入到了討論。在1998年初,S0AP名字就已經(jīng)被確定。Userland在1998年發(fā)布了一個XML-RPC規(guī)范。1999年9月SOAP0.9提交IETF。2000年5月8日,SOAP1.1作為Note提交W3C。IBM發(fā)布JavaSOAP實現(xiàn),并給開放源代碼組織ApacheXMLProject。Sun公司將Web服務(wù)集成到J2EE中。2000年9月13日,W3C組建了XML協(xié)議工作組,專門負責設(shè)計XML協(xié)議,以便成為基于XML分布式計算的核心。這個工作組將SOAP1.1作為基礎(chǔ),并于2001年7月9日提交了第一份工作組草案SOAP1.2。SOAP概述SOAP主要功能:定義通信單元的機制:一個SOAP封套封裝了所有其他的信息。一個消息可以有一個消息體,消息體中可以包含任何XML格式文檔。錯誤處理機制:標識錯誤源和導(dǎo)致錯誤的原因,并允許錯誤診斷信息在共享者和交互者之間傳遞。可擴展件機制:使用XML模式和名字空間技術(shù),靈活擴展元素。靈活的數(shù)據(jù)表示機制:允許交換已經(jīng)以某種格式序列化的數(shù)據(jù),同時也提供了以XML格式表示諸如編程語言數(shù)據(jù)類型這樣的抽象數(shù)據(jù)結(jié)構(gòu)的規(guī)則。表示遠程過程調(diào)用(RPC)和作為響應(yīng)的SOAP消息的約定,并且便于映射為過程式編程語言結(jié)構(gòu)。支持以文檔為中心的方法。將SOAP消息束定到HTTP的機制,因為HTTP是Internd上最常用的通信協(xié)議。SOAP基于XML的協(xié)議,由四部分組成:信封(Envelope):定義了一個消息框架,描述消息的內(nèi)容是什么,是誰發(fā)送的,誰應(yīng)當接受并處理它以及如何處理。編碼規(guī)則(EncodingRules):用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實例。綁定(Binding):定義底層通信協(xié)議,進行消息交換。RPC:表示遠程過程調(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消息是由一個SOAPEnvelope、一個可選的SOAPHeader和一個SOAPBody組成的XML文檔。元素和屬性的命名空間標識是""。SOAP消息應(yīng)當包含如下部分:一個SOAPenvelope。Envelope是表示該消息的XML文檔的根級元素。一個SOAPHeader。Header是為了支持在松散環(huán)境下在通訊方之間尚未預(yù)先達成一致的情況下為SOAP消息增加特性的通用機制。SOAP定義了很少的一些屬性來用于指明誰可以處理該特性以及它是可選的還是強制的。一個SOAPBody。Body為該消息的最終接收者所想要得到的信息提供了一個容器。此外,SOAP定義了Body的一個子元素Fault用于報告錯誤。SOAPHeaderSOAP提供了一個可伸縮的機制用于在分散的模塊化的環(huán)境下擴展SOAP消息,而通訊雙方并不需要有預(yù)先的約定知識。典型的擴展例子可以是實現(xiàn)一些諸如認證、事務(wù)管理以及支付的Header條目。Header元素應(yīng)當被編碼為SOAPEnvelopeXML文檔的第一直接子元素。Header的所有直接子元素都被稱為Header條目。Header條目的編碼規(guī)則包括:一個SOAPHeader條目由一個完整修飾的元素名來標識,所謂完整修飾的元素名是由一個命名空間URI和局部名來組成。SOAPHeader元素的所有直接子元素都必須是完整修飾的。encodingStyle屬性可以用于指明Header條目的編碼風格。actor屬性和SOAPmustUnderstand屬性可以用于指明由哪個SOAP結(jié)點來處理條目以及如何處理條目。SOAPHeader描述安全憑證事務(wù)ID路由調(diào)試信息支付令牌……actor屬性SOAP消息從生成者到達最終接受者,將潛在地沿著消息路徑經(jīng)過一系列的SOAP中間結(jié)點。SOAP中間結(jié)點是一個能夠接受和轉(zhuǎn)發(fā)SOAP消息的應(yīng)用程序。所有的中間結(jié)點都如同最終接受者一樣由一個URI來標識。
actor屬性用一個RUI標識節(jié)點處理對應(yīng)的文件頭時必須扮演的角色。當一個節(jié)點接收到一個SOAP消息時,它要分析文件頭,以確定哪些代碼塊是由該節(jié)點支持的角色。Header元素中接收者角色類似和約的接受者。一個接收者接到其想要的一個Header元素必須不轉(zhuǎn)發(fā)該Header給SOAP消息路徑中的下一個應(yīng)用程序。SOAPactor全局屬性可以被用于指明Header元素的接收者。而SOAPactor屬性的值是一個URI。這個特別的URI""指明該Header元素是直接的下一個進行消息處理的SOAP應(yīng)用程序想要的。這與HTTP的連接頭字段的hop-by-hopscopemodel的表示。若省略SOAPactor屬性,則表明接收者是SOAP消息的最終接收者。SOAPBodySOAPBody元素提供一個簡單的用于與消息的最終接收者交換強制信息的機制。而Body元素的典型應(yīng)用包含序列的RPC調(diào)用和錯誤報告。Body元素在編碼上作為SOAPEnvelope元素的一個直接子元素。如果包含Header元素,則Body元素必須直接跟隨Header元素,否則Body元素必須是Envelope元素的第一直接子元素。所有Body元素的直接子元素被成為SOAPBody條目,同時每一個Body條目都應(yīng)當編碼為SOAPBody元素里的一個獨立元素。SOAPBodyBody條目的編碼規(guī)則包括:1.一個Body條目由一個完整修飾的元素名來標識,所謂完整修飾的元素名是由一個命名空間URI和局部名來組成。SOAPBody元素的直接子元素可以是命名空間修飾的。2.SOAPencodingStyle屬性可以被用來表明Body條目中使用的編碼規(guī)則。3.SOAP定義了一個Body條目,用于報告錯誤的Fault條目。SOAP錯誤SOAPFault元素是用于在SOAP消息中傳輸錯誤或狀態(tài)信息。如果SOAP消息需要包含SOAPFault元素的話,它必須作為一個Body條目出現(xiàn),同時在Body元素內(nèi)它必須至多出現(xiàn)一次。SOAPFault元素定義了如下子元素:1.faultcode元素是應(yīng)那些要提供一個算法上的機制來標識錯誤的軟件的需要。faultcode必須在SOAPFault元素中出現(xiàn)。SOAP定義了一個很小的SOAP錯誤代碼的集合用于覆蓋基本的SOAP錯誤。2.faultstring元素是為那些錯誤代碼提供一個人可以讀懂的錯誤解釋,它不是為程序處理而設(shè),提供一些解釋該錯誤種類的信息。3.faultactor元素是為在SOAP消息路徑中是誰引起了該錯誤的發(fā)生這一情況描述信息。faultactor屬性的值是一個標識該源的一個URI。所謂并非作為SOAP消息最終接收者的應(yīng)用程序必須在SOAPFault元素中包含faultactor元素。而消息的最終接收者可以使用faultactor元素來明確地指明是它生成了該錯誤。4.detail元素是用于傳輸與SOAPBody元素相關(guān)的應(yīng)用程序特別的錯誤信息。如果Body元素中的內(nèi)容不能被成功地處理的時候,它必須出現(xiàn)。它必須不能被用于傳輸屬于Header條目的錯誤信息。SOAP編碼簡單類型SOAP采用了在“XMLSchemaPart2:Datatypes”的“Build-indatatypes”節(jié)中定義的所有類型,包括值和詞匯空間(lexicalspaces)1.字符串:“string”數(shù)據(jù)類型在“XMLSchemaPart2:Datatypes”中被定義。2.枚舉:“XMLSchemaPart2:Datatypes”規(guī)范定義了一種稱為“玫舉(enumeration)”的機制。3.字節(jié)數(shù)組:一個Byte數(shù)組可以編碼為單引用或多引用值。對一個不透明的Byte數(shù)組的推薦表示是使用在XMLSchema規(guī)范中定義的“base64”編碼方式。4.多態(tài)存取標識:多態(tài)地訪問數(shù)個類型的值,在運行時刻每個類型都是可使用的。一個多態(tài)存取標識實例必須包含一個“xsi:type”屬性以描述類型的實際值。SOAP編碼復(fù)合類型SOAP依照在程序語言中常??匆姷囊韵陆Y(jié)構(gòu)模式來定義復(fù)合類型:1.“struct”是一個復(fù)合類型值,其成員的存取標識名是相互區(qū)別的唯一標志,應(yīng)彼此各不相同。2.“array”是一個復(fù)合類型值,其成員的順序位置是相互區(qū)別的唯一標志。SOAP中的RPCSOAP的一個設(shè)計目標就是要利用XML的可擴展性和可伸縮性來包裝和交換RPC調(diào)用。在RPC中,使用HTTP作為SOAP協(xié)議綁定媒介的情況下,一個RPC調(diào)用可以很自然地映射到一個HTTP請求,而RPC響應(yīng)則可以映射到HTTP響應(yīng)。使用SOAP方式的RPC并不限于HTTP協(xié)議綁定。為實施一個方法調(diào)用,需要以下信息:1.目標SOAP結(jié)點的URI2.方法名3.可選的方法或過程的特征4.方法或過程的參數(shù)5.可選的頭數(shù)據(jù)
SOAP依賴協(xié)議綁定來提供傳送URI的機制。SOAP請求消息<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)顯示為一個簡單結(jié)構(gòu)struct,包含每個[out]或[in/out]參數(shù)的存取標識。而第一個存取標識是返回值,而隨后則是按照原來次序的返回參數(shù)。每個[out]或[in/out]參數(shù)都被表示為一個存取標識,該存取標識的名和類型都對應(yīng)于相應(yīng)參數(shù)的名和類型。返回值的存取標識名并沒有多少語義。同樣的,結(jié)構(gòu)的名也并沒有多少語義。當然,無論如何,在添加了“Response”字串的方法名后,要有一個約定來命名它。方法調(diào)用出錯應(yīng)使用SOAPFault元素來編碼。如果一個綁定協(xié)議對于錯誤表達還有額外規(guī)則,那么這些規(guī)則都應(yīng)當被遵守。方法和響應(yīng)的結(jié)構(gòu)可以使用規(guī)則來編碼,也可以使用在encodingStyle屬性中描述的其他編碼。應(yīng)用程序可以處理漏寫參數(shù)的請求不過也可以返回一個錯誤。因為在響應(yīng)中若包含“result”則表明成功,若包含“fault”則表明失敗,所以如果方法響應(yīng)中同時包含了“result”和“fault”則是錯誤的。在HTTP中使用SOAP
SOAP利用HTTP的請求/響應(yīng)消息模型,將SOAP請求的參數(shù)放在HTTP請求里,而將SOAP響應(yīng)的參數(shù)放在HTTP響應(yīng)里。SOAPActionHTTP請求頭字段(headerfield)可以用于指示SOAPHTTP請求的目的。它的值是一個標識該目的的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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融行業(yè)前臺咨詢工作總結(jié)
- 營銷行業(yè)創(chuàng)新實踐總結(jié)
- 無人駕駛技術(shù)的前景展望
- IT行業(yè)銷售員工作總結(jié)
- 電力行業(yè)可再生能源發(fā)展顧問工作總結(jié)
- 書店美容院保安工作經(jīng)驗
- 金融行業(yè)中理財咨詢顧問的工作要求
- 旅游行業(yè)導(dǎo)游培訓(xùn)總結(jié)
- 【八年級下冊地理湘教版】專項04 時政地理
- 2024年稅務(wù)師題庫附參考答案【輕巧奪冠】
- 衛(wèi)生化學期末考試習題2
- 瓣周漏護理查房
- 歷代反腐完整
- 《現(xiàn)代控制理論》(劉豹-唐萬生)
- 廣東省佛山市南海區(qū)三水區(qū)2022-2023學年七年級上學期期末歷史試題(無答案)
- 重視心血管-腎臟-代謝綜合征(CKM)
- 譯林版小學英語六年級上冊英文作文范文
- 學術(shù)英語(理工類)
- 淺談“五育并舉”背景下中小學勞動教育的探索與研究 論文
- 大樹的故事 單元作業(yè)設(shè)計
- 六年級道德與法治學情分析
評論
0/150
提交評論