版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、Web效力適用技術(shù)主講:李偉剛liweigang西北工業(yè)大學軟件與微電子學院.第三章 SOAP.主要內(nèi)容SOAP概述SOAP音訊構(gòu)造SOAP編碼SOAP音訊交換SOAP處置技術(shù).第一節(jié) SOAP概述.SOAP是一個獨立于任何特定傳輸協(xié)議的XML音訊協(xié)議是復雜的分布式對象通訊技術(shù)的輕量級替代物源自 BizTalk (Microsoft/UserLand/DevelopMentor )W3C的規(guī)范Based on XMLSOAP.SOAP最早由Dave Winner、Don Box和Bod Atkinson提出。在1997年,Microsoft開場思索基于XML的分布式計算,其目的是使運用程序可以
2、運用HTTP上層的遠程過程調(diào)用(RPC)相互通訊。DevelopMentor和Userland參與到了討論。在1998年初,SOAP名字就曾經(jīng)被確定。Userland在1998年發(fā)布了一個XML-RPC規(guī)范。1999年9月SOAP0.9提交IETF(Internet工程義務組)。2000年5月8日,SOAP1.1作為Note提交W3C。IBM發(fā)布Java SOAP實現(xiàn),并捐給開放源代碼組織Apache XML Project。Sun公司將Web效力集成到J2EE中。2000年9月13日,W3C組建了XML協(xié)議任務組,專門擔任設計XML協(xié)議,以便成為基于XML分布式計算的中心。這個任務組將SOA
3、P1.1作為根底,并于2001年7月9日提交了第一份任務組草案SOAP1.2。2003年6月24日SOAP1.2成為W3C引薦規(guī)范。2007年4月27日W3C發(fā)布SOAP1.2引薦規(guī)范第二版。 SOAP開展史.SOAP 為在一個松散的、分布的環(huán)境中運用XML對等地交換構(gòu)造化和類型化信息提供了一個簡單且輕量級的機制。支持運用程序與運用程序之間的通訊。運用于B2B的通訊以及企業(yè)運用集成。以獨立于各種編程言語或平臺的方式來構(gòu)造音訊、處置音訊,從而運用不同編程言語編寫的程序之間具有互操作性,并可以在不同的操作系統(tǒng)上運轉(zhuǎn)。經(jīng)過對模塊中特定格式編碼的數(shù)據(jù)的重編碼機制來表示運用語義。SOAP-What?.S
4、OAP-What?.SOAP-What?SOAPNetwork ProtocolIntermediator.運用RPC進展通訊需對效力接口達成一致需對通訊協(xié)議達成一致運用ORB效力可以運用Internet,但是需求更改平安設置SOAP-What?.運用XML音訊,信封可封裝恣意內(nèi)容和附件不需求特殊的網(wǎng)絡設置用XML描畫效力即WSDL用XML描畫音訊SOAP-What?.定義通訊單元的構(gòu)成:一個SOAP封套封裝了一切其他的信息。一個音訊可以有一個音訊體,音訊體中可以包含任何XML格式數(shù)據(jù)。錯誤處置機制:標識錯誤源和導致錯誤的緣由,并允許錯誤診斷信息在共享者和交互者之間傳送??蓴U展機制:運用XML
5、 Schema和名字空間技術(shù),靈敏擴展元素。靈敏的數(shù)據(jù)表示機制:允許交換曾經(jīng)以某種格式序列化的數(shù)據(jù),同時也提供了以XML格式表示諸如編程言語數(shù)據(jù)類型這樣的籠統(tǒng)數(shù)據(jù)構(gòu)造的規(guī)那么。表示遠程過程調(diào)用(RPC)和作為呼應的SOAP音訊的商定,并且便于映射為過程式編程言語構(gòu)造。支持以文檔為中心的方法。將SOAP音訊綁定到HTTP上,由于HTTP是Internet上最常用的通訊協(xié)議。SOAP的功能.第二節(jié) SOAP音訊構(gòu)造.基于XML的協(xié)議,由四部分組成: 信封Envelope:作為描畫音訊中的內(nèi)容以及如何處置音訊的信息框架 編碼規(guī)那么Encoding Rules:用于表示運用程序需求運用的數(shù)據(jù)類型的實例
6、 綁定Binding:定義底層通訊協(xié)議,進展音訊交換RPC:遠程過程調(diào)用和前往的商定 SOAP的內(nèi)容.SOAP音訊處置模型.SOAP音訊構(gòu)造Envelope containsHeaderBodyHeader is optionalOut-of-band information (帶外信息) such asAuthentication informationMessage routesLoggingTransaction flowBody contains XML body of RPC callSOAP EnvelopeSOAP HeaderHeader BlockHeader Block.
7、. . SOAP BodyBody BlockBody Block. . . .SOAP音訊分析注:是省略寫法.SOAP音訊例子SOAP envelopeapp-specific message IBM A SOAP Request Message.SOAP音訊例子A SOAP Request Messageapp-specific message IBM message namespaceSOAP Envelope NamespaceSOAP envelope.SOAP音訊例子A SOAP Respond MessageSOAP envelopeapp-specific messageRes
8、ult returned in Body 134 .SOAP Envelope元素信息項是SOAP音訊的最外層元素,它具有:值為Envelope的本地稱號值為/2003/05/soap-envelope的命名空間稱號在它的attributes中有零個、一個或多個由命名空間限定的屬性信息項在它的children中按順序有一個或兩個元素信息項,次序如下:一個可選的頭元素信息項: Header一個必選的體元素信息項: BodySOAP信封.encodingStyle屬性: encodingStyle屬性信息項指出了對SOAP音訊部分內(nèi)容進展序列化的編碼規(guī)那么 SOAP的全局encodingStyle
9、屬性被用于指明在SOAP音訊中運用哪種編碼規(guī)那么。encodingStyle屬性信息項可以在下述地方出現(xiàn),其作用范圍包括該元素的內(nèi)容和一切其子元素中未運用該屬性的一切子元素:SOAP頭塊SOAP體元素信息項的子元素信息項假設該子元素不是SOAP缺點元素信息項SOAP Detail元素信息項的子元素信息項上述三者的恣意子元素encodingStyle屬性信息項不能出如今除上述SOAP信息集之外的其它任何元素中SOAP 主要屬性 .SOAP提供了一個可伸縮的機制用于在分散的模塊化的環(huán)境下擴展SOAP音訊,而通訊雙方并不需求有預先的商定知識。典型的擴展例子可以是實現(xiàn)一些諸如認證、事務管理以及支付的H
10、eader條目Header元素該當被編碼為SOAP Envelope XML文檔的第不斷接子元素。Header的一切直接子元素都被稱為Header條目SOAP Header .5 .Header條目的編碼規(guī)那么包括:一個SOAP Header條目由一個完好修飾的元素名來標識,所謂完好修飾的元素名是由一個命名空間URI和部分名來組成SOAP Header元素的一切直接子元素都必需是完好修飾的encodingStyle屬性可以用于指明Header條目的編碼風格role屬性和SOAP mustUnderstand屬性可以用于指明由哪個SOAP結(jié)點來處置條目以及如何處置條目SOAP Header .描
11、畫平安憑證事務ID路由調(diào)試信息支付令牌平安SOAP Header .SOAP音訊從生成者到達最終接受者,將潛在地沿著音訊途徑經(jīng)過一系列的SOAP中間結(jié)點。SOAP中間結(jié)點是一個可以接受和轉(zhuǎn)發(fā)SOAP音訊的運用程序。一切的中間結(jié)點都好像最終接受者一樣由一個URI來標識 role屬性信息項的類型是xs:anyURI。role屬性信息項的值是一個URI,該URI標識了該頭塊期望SOAP結(jié)點擔任的角色當一個節(jié)點接納到一個SOAP音訊時,它要分析文件頭,以確定哪些代碼塊是由該節(jié)點支持的角色role屬性 .簡稱全稱描述Next/2003/05/soap-envelope/role/next擔任該角色的必須
12、是SOAP中介及最終SOAP接收者None/2003/05/soap-envelope/role/none任何SOAP結(jié)點都不能扮演該角色UltimateReceiver/2003/05/soap-envelope/role/ultimateReceiver擔任該角色的必須是最終接收者除了表中所定義的SOAP角色的名字之外,詳細的SOAP運用可根據(jù)本身需求定義其它角色role屬性 .假設省略SOAP role屬性,等價于role屬性的值為/2003/05/soap-envelope/role/ultimateReceiver,闡明接納者是SOAP音訊的最終接納者role屬性 .mustUnde
13、rstand全局屬性用于指明一個Header條目是強迫的還是可選的要求接納者處置Header條目的接納結(jié)點由SOAP role屬性來定義mustUnderstand屬性的值可為“false或“true。假設沒有運用SOAP mustUnderstand屬性,那么在語義上等價于mustUderstand屬性出現(xiàn)同時取值為“false 假設Header條目帶有值為“true的mustUnderstand屬性,那么該Header條目的接納結(jié)點要么必需遵照語義并正確地處置這些語義,要么必需聲稱處置音訊失敗mustUnderstand屬性是為了思索強壯地晉級而設置的。一切用值為“true的SOAP mu
14、stUnderstand屬性來標志的元素必需被以為是可以影響該元素的上級元素或同級元素的語義mustUnderstand屬性 .SOAP relay屬性信息項用于指出,假設定位于SOAP接納者的SOAP頭塊沒有被處置,那么能否必需轉(zhuǎn)發(fā)該頭塊relay屬性信息項的類型為xs:boolean省略該屬性,在語義上等價于包含值為false的relay屬性假設生成SOAP relay屬性信息項,SOAP發(fā)送者應該運用規(guī)范的方式表示屬性值“true。SOAP接納者必需接納該屬性值任何有效的詞法表示 生成SOAP音訊的SOAP發(fā)送者應該只在SOAP頭塊中運用relay屬性信息項SOAP relay屬性.SO
15、AP Body元素提供一個簡單的用于與音訊的最終接納者交換強迫信息的機制。而Body元素的典型運用包含序列的RPC調(diào)用和錯誤報告Body元素在編碼上作為SOAP Envelope元素的一個直接子元素。假設包含Header元素,那么Body元素必需直接跟隨Header元素,否那么Body元素必需是Envelope元素的第不斷接子元素一切Body元素的直接子元素被稱為SOAP Body條目,同時每一個Body條目都該當編碼為SOAP Body元素里的一個獨立元素SOAP Body .Body條目的編碼規(guī)那么:一個Body條目由一個完好修飾的元素名來標識,所謂完好修飾的元素名是由一個命名空間URI和
16、部分名來組成。SOAP Body元素的直接子元素可以是命名空間修飾的SOAP encodingStyle屬性可以被用來闡明Body條目中運用的編碼規(guī)那么SOAP定義了一個Body條目,用于報告錯誤的Fault條目SOAP Body .SOAP Fault元素是用于在SOAP音訊中傳輸錯誤或形狀信息。假設SOAP音訊需求包含SOAP Fault元素的話,它必需作為一個Body條目出現(xiàn),同時在Body元素內(nèi)它必需至多出現(xiàn)一次SOAP Fault元素定義了如下子元素:1faultcode元素為那些要提供一個算法上的機制來標識錯誤的軟件之用。faultcode必需在SOAP Fault元素中出現(xiàn)。SO
17、AP定義了一個很小的SOAP錯誤代碼的集合用于覆蓋根本的SOAP錯誤。2faultstring元素是為那些錯誤代碼提供一個人可以讀懂的錯誤解釋,它不是為程序處置而設,提供一些解釋該錯誤種類的信息。3faultactor元素指明SOAP音訊途徑中是誰引起了該錯誤的發(fā)生。faultactor屬性的值是一個標識該源的一個URI。不作為SOAP音訊最終接納者的運用程序必需在SOAP Fault元素中包含faultactor元素。而音訊的最終接納者可以運用faultactor元素來明確地指明是它生成了該錯誤。4detail元素是用于傳輸與SOAP Body元素相關(guān)的運用程序特定的錯誤信息。假設Body元
18、素中的內(nèi)容不能被勝利地處置的時候,它必需出現(xiàn)。它不能被用于傳輸屬于Header條目的錯誤信息。SOAP Fault .假設SOAP Fault元素中不出現(xiàn)detail元素,那么闡明其中的錯誤與Body元素的處置無關(guān)。這可以用于區(qū)分在錯誤情況下Body元素能否被SOAP的最終接受者處置過。detail元素的一切直接子元素都被稱為detail條目,同時每個detail條目都作為detail元素中的一個獨立的元素進展編碼。detail條目的編碼規(guī)那么如下:1一個detail條目由一個完好修飾的元素名來標識。detail元素的直接子元素可以是命名空間修飾的。2SOAP encodingStyle屬性可
19、以被用來闡明detail條目中運用的編碼規(guī)那么。SOAP Fault .第三節(jié) SOAP編碼.簡單類型: SOAP采用了在“XML Schema Part 2: Datatypes的“Build-in datatypes節(jié)中定義的一切類型,包括值和詞匯空間(lexical spaces)字符串:“string數(shù)據(jù)類型在“XML Schema Part 2: Datatypes中被定義。枚舉:“XML Schema Part 2: Datatypes規(guī)范定義了一種稱為“玫舉(enumeration)的機制。字節(jié)數(shù)組:一個Byte數(shù)組可以編碼為單援用或多援用值。對一個不透明的Byte數(shù)組的引薦表示
20、是運用在XML Schema規(guī)范中定義的“base64編碼方式。多態(tài)存取標識:多態(tài)地訪問多個類型的值,在運轉(zhuǎn)時辰每個類型都是可運用的。一個多態(tài)存取標識實例必需包含一個“xsi:type屬性以描畫類型的實踐值。 SOAP 編碼.復合類型:SOAP按照在程序文語中經(jīng)??匆姷囊韵聵?gòu)造方式來定義復合類型:“struct是一個復合類型值,其成員的存取標識名是相互區(qū)別的獨一標志,應彼此各不一樣?!癮rray是一個復合類型值,其成員的順序位置是相互區(qū)別的獨一標志。SOAP 編碼.兩種描畫數(shù)據(jù)類型實例的語法Anonymous accessor:36Anonymous because its name is i
21、ts type rather than a meaningful id for the valueNamed accessor:36SOAP 數(shù)據(jù)類型.int a3 = 1, 2, 3;b = Add(ina); 1 2 3 SOAP 數(shù)據(jù)類型:Arrays.第四節(jié) SOAP音訊交換.By value: Add(in int a, in int b);By reference : Square(in, out int &a);348傳值和傳援用.SOAP-RPC: SOAP的一個設計目的就是要利用XML的可擴展性和可伸縮性來包裝和交換RPC調(diào)用。為實施一個方法調(diào)用,需求以下信息:目的SOAP結(jié)
22、點的URI方法名可選的方法或過程的特征方法或過程的參數(shù)可選的頭數(shù)據(jù)SOAP依賴協(xié)議綁定來提供傳送URI的機制SOAP音訊交換方式 .RPC調(diào)用和呼應都是在SOAP Body元素中傳送,運用如下表示方式:一個方法調(diào)用被建模成一個構(gòu)造struct。該方法調(diào)用顯示為一個簡單構(gòu)造struct,包含每個in或in/out參數(shù)的存取標識。該構(gòu)造的名和類型可運用過程或方法的名來標識。每個in或in/out參數(shù)都被表示為一個存取標識,該存取標識的名和類型都對應于相應參數(shù)的名和類型。他們的次序也是按照原來RPC中的次序。一個方法呼應被建模成一個構(gòu)造struct。RPC和SOAP Body. Computer S
23、OAP 懇求音訊.該方法呼應顯示為一個簡單構(gòu)造struct,包含每個out或in/out參數(shù)的存取標識。而第一個存取標識是前往值,而隨后那么是按照原來次序的前往參數(shù)。每個out或in/out參數(shù)都被表示為一個存取標識,該存取標識的名和類型都對應于相應參數(shù)的名和類型。前往值的存取標識名并沒有多少語義。同樣的,構(gòu)造的名也并沒有多少語義。當然,無論如何,在添加了“Response字串的方法名后,要有一個商定來命名它。方法調(diào)用出錯應運用SOAP Fault元素來編碼。假設一個綁定協(xié)議對于錯誤表達還有額外規(guī)那么,那么這些規(guī)那么都該當被遵守。方法和呼應的構(gòu)造可以運用規(guī)那么來編碼,也可以運用在encodin
24、gStyle屬性中描畫的其他編碼。運用程序可以處置漏寫參數(shù)的懇求不過也可以前往一個錯誤。由于在呼應中假設包含“result那么闡明勝利,假設包含“fault那么闡明失敗,所以假設方法呼應中同時包含了“result和“fault那么是錯誤的。RPC和SOAP Body. 8000.00 SOAP 呼應音訊.RPC (Remote Proceduce Call): SOAP Request Message 的SOAP Body 中, 第一個 sub-element 必需與operation 同名。 RPC和SOAP Body.Document: 用于 messaging oriented docu
25、ment exchange. 對于document-oriented Service 或 messaging-oriented Service, 不強調(diào)“operation ,允許SOAP Body 可以直接帶message part, 不用跟一個 operation element . . 注:以目前來說, 不論是.NET 或 JAVA, 并沒有將這兩種 operation 的實現(xiàn)方式明顯區(qū)分,不論是 RPC Operation 亦或是 Document Operation, 后端都是以一個 Method 來實現(xiàn)RPC和SOAP Body.1rpc/encoded 2rpc/literal
26、3document/encoded 4document/literal 音訊方式.public class myServices public void myMethod (int x) return; 效力.SOAP文檔內(nèi)容 5 rpc/encoded款式. 5 rpc/literal款式. 5 document /encoded. 5 document /literal. 5 document / literal-wrap.Its just that there are two ways to structure a SOAP message. In the early versions
27、of SOAP, SOAP was designed to support only RPC style. When using RPC style, the contents of the SOAP Body must conform to a structure that indicates the method name and contains a set of parameters. By the time the SOAP 1.0 spec was published, it was expanded to support both RPCs and unstructured me
28、ssages (document). When using Document style, you can structure the contents of the SOAP Body any way you like.音訊方式.雖然SOAP可以和多種HTTP懇求方法結(jié)合運用,但這里的綁定只定義了SOAP是如何在HTTP Post懇求中傳輸?shù)摹? Header中的SOAPAction字段:SOAPAction HTTP懇求頭字段(header field)可以用于指示SOAP HTTP懇求的目的。它的值是一個標識該目的的URI。2SOAP HTTP呼應:在HTTP之上的SOAP服從用于在HT
29、TP中表示通訊形狀的HTTP形狀代碼的語義。例如,2xx形狀代碼闡明這是客戶端包含SOAP構(gòu)件的懇求被勝利的接納、了解和接受等等。3當處置懇求的時候發(fā)生SOAP錯誤的時候,SOAP HTTP效力器必需發(fā)出一個HTTP 500 “Internal Server Error呼應同時在包含于該呼應的SOAP音訊中應包含一個SOAP Fault元素。4HTTP擴展框架:SOAP音訊可以與HTTP Extension Framework一同運用來標識SOAP HTTP懇求。HTTP傳輸SOAP .SOAP利用HTTP的懇求/呼應音訊模型,將SOAP懇求的參數(shù)放在HTTP懇求里,而將SOAP呼應的參數(shù)放在HTTP呼應里。SOAPAction HTTP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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è)育嬰師服務合同
- XX省重點水電工程擴建項目合同2025
- 個人股權(quán)轉(zhuǎn)讓合同書
- 產(chǎn)品售后保養(yǎng)服務合同樣本
- 個人借款抵押存單合同范本
- 互聯(lián)網(wǎng)專線接入合同范本
- 個人借款合同催款函范本
- 二手摩托車分期付款合同
- XX領域XX合同簽訂儀式成功舉辦
- 專有技術(shù)購買合同模板
- 世界古代史-對接選擇性必修(真題再現(xiàn)) 高考歷史一輪復習
- 保險公司防火應急預案
- 動物檢疫技術(shù)-動物檢疫的分類(動物防疫與檢疫技術(shù))
- 2024醫(yī)師資格考試考生誠信考試承諾書
- 煤礦職業(yè)衛(wèi)生培訓課件2023
- GB/T 13364-2008往復泵機械振動測試方法
- 植物的類群及演化
- 老年社會工作課件
- 最新記24小時出入量、護理文書書寫規(guī)范課件
- 普通生物學考試大綱
- DB23T 2714-2020 農(nóng)村生活垃圾非焚燒低溫處理設施大氣污染物排放標準
評論
0/150
提交評論