SOAP北京航空航天大學課件_第1頁
SOAP北京航空航天大學課件_第2頁
SOAP北京航空航天大學課件_第3頁
SOAP北京航空航天大學課件_第4頁
SOAP北京航空航天大學課件_第5頁
已閱讀5頁,還剩26頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

SOAP2006-05主要內容SOAP發展歷史SOAP的主要功能SOAP協議組成部分信封標題RPC相關應用發展歷史SOAP最早由DaveWinner、DonBox和BodAtkinson提出。在1987年,Microsoft開始考慮基于XML的分布式計算,其目標是使應用程序能夠使用HTTP上層的遠程過程調用(RPC)相互通信。DevelopMentor和Userland加入到了討論。在1998年初,S0AP名字就已經被確定。Userland在1998年發布了一個XML-RPC規范。1999年9月SOAP0.9提交IETF。2000年5月8日,SOAP1.1作為Note提交W3C。IBM發布JavaSOAP實現,并給開放源代碼組織ApacheXMLProject。Sun公司將Web服務集成到J2EE中。2000年9月13日,W3C組建了XML協議工作組,專門負責設計XML協議,以便成為基于XML分布式計算的核心。這個工作組將SOAP1.1作為基礎,并于2001年7月9日提交了第一份工作組草案SOAP1.2。SOAP概述SOAP主要功能:定義通信單元的機制:一個SOAP封套封裝了所有其他的信息。一個消息可以有一個消息體,消息體中可以包含任何XML格式文檔。錯誤處理機制:標識錯誤源和導致錯誤的原因,并允許錯誤診斷信息在共享者和交互者之間傳遞??蓴U展件機制:使用XML模式和名字空間技術,靈活擴展元素。靈活的數據表示機制:允許交換已經以某種格式序列化的數據,同時也提供了以XML格式表示諸如編程語言數據類型這樣的抽象數據結構的規則。表示遠程過程調用(RPC)和作為響應的SOAP消息的約定,并且便于映射為過程式編程語言結構。支持以文檔為中心的方法。將SOAP消息束定到HTTP的機制,因為HTTP是Internd上最常用的通信協議。SOAP基于XML的協議,由四部分組成:信封(Envelope):定義了一個消息框架,描述消息的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理。編碼規則(EncodingRules):用于表示應用程序需要使用的數據類型的實例。綁定(Binding):定義底層通信協議,進行消息交換。RPC:表示遠程過程調用和應答的協定。命名空間"""""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結構SOAP消息是由一個SOAPEnvelope、一個可選的SOAPHeader和一個SOAPBody組成的XML文檔。元素和屬性的命名空間標識是""。SOAP消息應當包含如下部分:一個SOAPenvelope。Envelope是表示該消息的XML文檔的根級元素。一個SOAPHeader。Header是為了支持在松散環境下在通訊方之間尚未預先達成一致的情況下為SOAP消息增加特性的通用機制。SOAP定義了很少的一些屬性來用于指明誰可以處理該特性以及它是可選的還是強制的。一個SOAPBody。Body為該消息的最終接收者所想要得到的信息提供了一個容器。此外,SOAP定義了Body的一個子元素Fault用于報告錯誤。SOAPHeaderSOAP提供了一個可伸縮的機制用于在分散的模塊化的環境下擴展SOAP消息,而通訊雙方并不需要有預先的約定知識。典型的擴展例子可以是實現一些諸如認證、事務管理以及支付的Header條目。Header元素應當被編碼為SOAPEnvelopeXML文檔的第一直接子元素。Header的所有直接子元素都被稱為Header條目。Header條目的編碼規則包括:一個SOAPHeader條目由一個完整修飾的元素名來標識,所謂完整修飾的元素名是由一個命名空間URI和局部名來組成。SOAPHeader元素的所有直接子元素都必須是完整修飾的。encodingStyle屬性可以用于指明Header條目的編碼風格。actor屬性和SOAPmustUnderstand屬性可以用于指明由哪個SOAP結點來處理條目以及如何處理條目。SOAPHeader描述安全憑證事務ID路由調試信息支付令牌……actor屬性SOAP消息從生成者到達最終接受者,將潛在地沿著消息路徑經過一系列的SOAP中間結點。SOAP中間結點是一個能夠接受和轉發SOAP消息的應用程序。所有的中間結點都如同最終接受者一樣由一個URI來標識。

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

SOAP依賴協議綁定來提供傳送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該方法響應顯示為一個簡單結構struct,包含每個[out]或[in/out]參數的存取標識。而第一個存取標識是返回值,而隨后則是按照原來次序的返回參數。每個[out]或[in/out]參數都被表示為一個存取標識,該存取標識的名和類型都對應于相應參數的名和類型。返回值的存取標識名并沒有多少語義。同樣的,結構的名也并沒有多少語義。當然,無論如何,在添加了“Response”字串的方法名后,要有一個約定來命名它。方法調用出錯應使用SOAPFault元素來編碼。如果一個綁定協議對于錯誤表達還有額外規則,那么這些規則都應當被遵守。方法和響應的結構可以使用規則來編碼,也可以使用在encodingStyle屬性中描述的其他編碼。應用程序可以處理漏寫參數的請求不過也可以返回一個錯誤。因為在響應中若包含“result”則表明成功,若包含“fault”則表明失敗,所以如果方法響應中同時包含了“result”和“fault”則是錯誤的。在HTTP中使用SOAP

SOAP利用HTTP的請求/響應消息模型,將SOAP請求的參數放在HTTP請求里,而將SOAP響應的參數放在HTTP響應里。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中表示通訊狀態的HTTP狀態代碼的語義。

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論