第八講 SOAP協(xié)議_第1頁
第八講 SOAP協(xié)議_第2頁
第八講 SOAP協(xié)議_第3頁
第八講 SOAP協(xié)議_第4頁
第八講 SOAP協(xié)議_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、SOAPSOAP協(xié)議協(xié)議西源軟件培訓(xùn)中心西源軟件培訓(xùn)中心回顧uXML DSO 是一個(gè) Microsoft ActiveX 控件,嵌入到 Microsoft Internet Explorer 中uDSO 有助于格式化數(shù)據(jù)并將這些數(shù)據(jù)顯示在 HTML 頁面上 uDSO 可用于從外部 XML 文檔或從嵌入到 HTML 文檔的 XML 數(shù)據(jù)中提取數(shù)據(jù)u 和 標(biāo)簽之間綁定的 XML 數(shù)據(jù)稱為 XML 數(shù)據(jù)島回顧u可以通過在 HTML 文檔中使用 標(biāo)簽或通過使用 JavaScript 創(chuàng)建函數(shù),將外部 XML 文檔鏈接到 HTML 文檔u可以使用 datasrc 和 datafld 屬性從數(shù)據(jù)島中提取數(shù)

2、據(jù)uDSO 可用于使用樣式表中定義的樣式來顯示 XML 數(shù)據(jù)島的數(shù)據(jù)目標(biāo)u了解了解SOAP概述概述u理解理解SOAP消息消息u理解理解SOAP消息交換模型消息交換模型u了解了解SOAP協(xié)議綁定框架協(xié)議綁定框架u理解理解SOAP編碼編碼u了解把了解把SOAP用于用于RPCSOAP概述u SOAP(simpleobJectAcce眺PNtoc01,簡單對象訪問協(xié)議)是一個(gè)用來在分散/分布式的環(huán)境中交換信息的簡單協(xié)議,它是一個(gè)基于XML的協(xié)議。因?yàn)镾OAP消息的格式是標(biāo)準(zhǔn)的,并且是基于XML標(biāo)準(zhǔn)的,所以,SOAP可以用來在不同的計(jì)算機(jī)體系結(jié)構(gòu)、不同的語言和不同的操作系統(tǒng)之間進(jìn)行通信。web服務(wù)就是使

3、用SOAP作為它的標(biāo)準(zhǔn)通信協(xié)議。 SOAP概述uSOAP本身是一個(gè)無狀態(tài)的、單向的消息交換機(jī)制,但是應(yīng)用程序可以在此基礎(chǔ)上,通過結(jié)合單向交換與底層傳輸協(xié)議的特性或應(yīng)用程序信息來創(chuàng)建更加復(fù)雜的交互模型,例如請求響應(yīng)和請求/多重響應(yīng)等。u SOAP中沒有包含應(yīng)用于SOAP消息路由、可靠數(shù)據(jù)傳輸和穿越防火墻等方面的應(yīng)用程序數(shù)據(jù)傳送語義,但是它提供了一個(gè)機(jī)制,通過這個(gè)機(jī)制,特定于應(yīng)用程序的信息能夠以一種可靠的方式傳送。同時(shí),SOAP描述了SOAP處理器如何對所接收SOAP稍息進(jìn)行操作。SOAP協(xié)議的四個(gè)部分uSOAP封裝封裝 封裝定義了一個(gè)描述消息中的內(nèi)容劇十么、是誰發(fā)送的、誰應(yīng)當(dāng)接受并處理它以及如何

4、處理它們的框架。uSOAP編碼規(guī)則編碼規(guī)則 用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例即如何把語言類型映射到SOAP消息中的XML上。uSOAP RPC表示表示 描述如何使用盼AP進(jìn)行遠(yuǎn)程過程調(diào)用和響應(yīng)。uSOAP綁定綁定 描述如何使用底層協(xié)議交換信息。 SOAP規(guī)范中包含一個(gè)默認(rèn)的HTTP綁定,它定義了如何通過HTTP交換SOAP消息。SOAP 消息 SOAP消息完全基于XML,它包含以下部分:u封裝封裝(Envelope): 封裝是表示SOAP消息的頂級元素,它是必需的EnvelOpe元素,包含兩個(gè)子元素Header和Body元素,這兩個(gè)元素中的內(nèi)容是由應(yīng)用程序定義的并且不屬于SOAP規(guī)范。

5、u報(bào)頭報(bào)頭(Header): 報(bào)頭是可選的,它是一種用來以分散方式向SOAP消息上添加額外特性的通用機(jī)制。通過這種機(jī)制,添加額外特性時(shí)不需要得到通信雙方的事先同意。正是通過這種機(jī)制,應(yīng)用程序才能以特定的方式對SOAP消息進(jìn)行擴(kuò)充。報(bào)頭的直接子元素稱為報(bào)頭條目,它表示一些邏旗數(shù)據(jù)分組,可被傳輸路徑中的SOAP節(jié)點(diǎn)進(jìn)行處理。SOAP定義了一些屬性來指出誰應(yīng)該處理某個(gè)特性以及這個(gè)特性是可選的還是必須要處理的。SOAP 消息u報(bào)體(Body): 報(bào)體是一個(gè)包含發(fā)送給最終目標(biāo)節(jié)點(diǎn)的必需信息的容器,它是必需的。SOAP消息的最終接收者必須要正確處理Body元素。最終SOAP接收者使用Body元素的子元素的

6、局部名和命名空間名來確定所要執(zhí)行的處理。實(shí)際上,SOAP RPC約定就是使用這種方式。SOAP為報(bào)體定義了一個(gè)Fault元素,它用來報(bào)告錯(cuò)誤。SOAP 消息結(jié)構(gòu)SOAP封裝SOAP報(bào)體報(bào)體SOAP報(bào)頭報(bào)頭Envelope元素uSOAP 射裝對應(yīng)的元素是Envelope,它是SOAP 消息的頂級元素,它必須要出現(xiàn)在SOAP 叫目息中,并且報(bào)頭和報(bào)體都必須位于Envelope元素中, 在Envelope 中可以包含命名空間聲明和其他一些屬性,并且這些屬性必須要使用命名空間進(jìn)行限定。 示例ENV:Envelope xmlns:SOAP-ENV=/s

7、oap/encelope/ENV:encodingStyle=/soap/encoding/uEnvelope元素的聲明中就包含了一個(gè)命名空間聲明SOAPENV和一個(gè)屬性encodingStyleHeader元素u 報(bào)頭對應(yīng)的元素為Header這個(gè)元素是可選的,如果出現(xiàn),則必須是Envelope元素的第一個(gè)于元素,并使用命名空間進(jìn)行完全限定。 Header元素中可以包含一些屬性和報(bào)頭條目,每一個(gè)條目都是Header的直接子元素,并且必須要使用命名空間進(jìn)行限定。uactor屬性屬性(next、ultimate receiver) Actor是由

8、SOAP注釋定義的,在SOAP 1.2中,actor屬性已經(jīng)被更名為role。Actor屬性和XML命名空間組合在一起使用,以確定要用哪個(gè)代碼模塊處理具體的Header。Next角色表示消息路徑中的下一個(gè)節(jié)點(diǎn)必須處理文件頭。 Ultimate receiver角色表示只有消息的最終接收方才能處理指定的Header。u mustUnderstand屬性屬性 表示處理是否為強(qiáng)制性處理,如果一個(gè)節(jié)點(diǎn)不能識別某一個(gè)強(qiáng)制性Header,那么必定會產(chǎn)生SOAP錯(cuò)誤。如果MustUnderstand屬性的值是0,如果應(yīng)用程序沒有能夠識別該文件頭,那么必須刪除此文件頭。Body元素u報(bào)體對應(yīng)的元素是Body,

9、它是Envelope元素的直接子元素并且必須出現(xiàn)在SOAP消息中,它通過完全限定名標(biāo)識。如果Envelope元素中包含Header元素,則Body元素必須位于Header元素的后面,否則的話,Body元素必須是Envelope元素的第一個(gè)子元素。uBody元素中可以包含一些條目,每一個(gè)條目都是它的直接子元素,并且必須使用命名空間進(jìn)行限定,用戶可以在Body元素中使用encodingStryle屬性來指出這些條目所使用的編碼方式。u Body元素提供了一個(gè)簡單的機(jī)制來與消息的最終接收者交換必須的信息。Body的典型用法包括調(diào)度RPC調(diào)用和錯(cuò)誤報(bào)告。uS0AP定義了一個(gè)報(bào)體條目Fault,它用來報(bào)

10、告錯(cuò)誤。Fault元素u當(dāng)在處理消息的過程中發(fā)生錯(cuò)誤時(shí),SOAP Fault元素用來在SOAP消息中攜帶錯(cuò)誤和或狀態(tài)信息,如果消息中包含F(xiàn)ault元素,則它必須作為Body元素的直接子元素出現(xiàn),并且最多只能出現(xiàn)一次。SOAP消息的交換模式uSOAP消息是一個(gè)從發(fā)送方到接受方的單向傳送,實(shí)際上SOAP消息經(jīng)常以請求/響應(yīng)的方式實(shí)現(xiàn)。SOAP消息的交換模式 SOAP處理模型描述了一個(gè)節(jié)點(diǎn)上的處理模型描述了一個(gè)節(jié)點(diǎn)上的SOAP處理器在接收到一條處理器在接收到一條SOAP消息時(shí)所采取的動(dòng)作。一個(gè)消息時(shí)所采取的動(dòng)作。一個(gè)SOAP節(jié)點(diǎn)必須按照以下的順節(jié)點(diǎn)必須按照以下的順序來處理序來處理SOAP消息:消息:

11、u 確定節(jié)點(diǎn)的角色,這可以使用SOAP封裝(包括報(bào)頭條目和報(bào)體)中的內(nèi)容來確定。u 識別所有定向到該節(jié)點(diǎn)的強(qiáng)制報(bào)頭條目。u 如果上一步中識別的一個(gè)或多個(gè)報(bào)頭條目不被該節(jié)點(diǎn)所理解,則產(chǎn)生一個(gè)SOAP MustUnderstand錯(cuò)誤,并取消所有后續(xù)的處理。與報(bào)體相關(guān)的錯(cuò)誤不能在這一步里產(chǎn)生。u 處理所有定向到該節(jié)點(diǎn)的報(bào)頭條目,并且如果該節(jié)點(diǎn)是最終接收者,則還要處理報(bào)體。S0AP節(jié)點(diǎn)必須處理所有定向到它的報(bào)頭條目,但可以選擇忽略哪些定向到它的非強(qiáng)制報(bào)頭條目的處理。u 在中間節(jié)點(diǎn)的情況下,刪除所有定向到該節(jié)點(diǎn)的報(bào)頭條目(不管報(bào)頭條目是被處理還是被忽略,都必須刪除),并可以插入新的報(bào)頭條目。SOAP協(xié)

12、議綁定框架u SOAP消息交換模型描述了對所有SOAP節(jié)點(diǎn)都通用的處理過程,綁定規(guī)范的目的是擴(kuò)充這些核心規(guī)則,主要是通過添加特定于綁定和底層協(xié)議通信方式的處理過程來實(shí)現(xiàn)。SOAP協(xié)議綁定框架 綁定框架的日標(biāo)是:u 描述對所有綁定規(guī)范都通用的需求和概念。u 方便對支持通用特性的綁定曲描述。多個(gè)綁定可以提供某個(gè)指定的可選特性,比如消息的可靠分發(fā),這可以直接依賴于底層協(xié)議的特性來實(shí)現(xiàn),也可以通過在綁定中提供相應(yīng)的程序邏輯來實(shí)現(xiàn)。這種特性可以以一種一致的方式呈現(xiàn)給應(yīng)用程序,而不管使用哪一個(gè)綁定。SOAP編碼uXML允許非常靈活的數(shù)據(jù)編碼方式。S0AP定義了一個(gè)較小的編碼規(guī)則集合。u SOAP編碼格式基

13、于一個(gè)簡單的類型系統(tǒng),概括了程序語言、數(shù)據(jù)庫和半結(jié)構(gòu)化數(shù)據(jù)等類型系統(tǒng)的共同特性。一個(gè)類型可以是一個(gè)簡單類型,比如字符串、整數(shù)和故舉等,也可以是由幾個(gè)部分組合而成的復(fù)合類型,其中,每個(gè)部分都有自己的類型,比如定單類和報(bào)表類等。簡單類型uSOAP采用XML架構(gòu)規(guī)范中定義的內(nèi)建數(shù)據(jù)類型作來它的簡單類型,示例:500(int類型),3141592653E+1(float類型),”XML Web Service”(String類型)等等。uSOAP聲明元素45 枚舉u XML架構(gòu)規(guī)范中定義丁一種稱為枚舉(enumeration)的機(jī)制。SOAP數(shù)據(jù)模型直接采用了這種機(jī)制。u 枚舉表示一組不同的名字。一個(gè)

14、特定的枚舉就是對應(yīng)于特定基類型的不同值的列表。例如,顏色名稱集合(“Green”、“Blue”和“Brown”)可以定義為基于字符串類型的枚舉,而值(“1”、“3”和“5)則可能是一個(gè)基于整數(shù)類型的枚舉等。XML架構(gòu)規(guī)范可以用來定義放舉類型。在下面架構(gòu)示例中, EyeColor定義為基類型是字符串的枚舉,可能的值是“Green”、 “Blue”或“Brown其他還可以使用字節(jié)數(shù)組,多態(tài)訪問器,復(fù)合類型等等SOAP用于RPCu S0AP的設(shè)計(jì)目標(biāo)之一就是使用XML的可擴(kuò)充性和靈活性來封裝遠(yuǎn)程過程調(diào)用功能。在使用HTTP作為底層傳輸協(xié)議的情況下,RPC調(diào)用映射到Http請求,RPC響應(yīng)映射到Htt

15、p響應(yīng)。但是,把SOAP用于RPC并不局限于HTTP協(xié)議綁定。調(diào)用一個(gè)RPC需要以下信息:u 日標(biāo)SOAP節(jié)點(diǎn)的URlu 過程或方法的名稱u 可選的過程或方法簽名u 過程或方法的參數(shù)u 可選的報(bào)頭數(shù)據(jù)u SOAP依賴于協(xié)議綁定來提供攜帶URL的機(jī)制。例如,對于HTTP來說,請求URL表示被調(diào)用的資源除了必須是一個(gè)合法的URL外,SOAP沒有對它的形式施加其他的限制。傳輸層消息交換模式 uTMEP(Transport Message Exchange Pattem,傳輸層消息交換模式)是一個(gè)用于在SOAP節(jié)點(diǎn)之間交換消息的模板。u傳輸層消息交換模式描述了一個(gè)傳輸層消息交換的生命周期、多個(gè)消息之間

16、的關(guān)系以及消息交換的正常和異常終止。u傳輸層綁定規(guī)范可以支持一個(gè)或多個(gè)使用URL命名的傳輸層消息交換模式。默認(rèn)的HTTP綁定uHTTP是一個(gè)眾所周知的連接模型和消息交換模型??蛻敉ㄟ^URL標(biāo)識服務(wù)器并通過底層的TCPIP 網(wǎng)絡(luò)連接到它,然后在相同的連接上發(fā)出HTTP請求消息并接收HTTP響應(yīng)消息。HTTP隱含地把它的請求消息與響應(yīng)消息相關(guān)聯(lián),因此,使用這個(gè)綁定的應(yīng)用程序可以推斷HTTP請求主體中的SOAP消息與HTTP響應(yīng)返問的SOAP消息之間的關(guān)系。類似地,HTTP通過URL標(biāo)識服務(wù)器端點(diǎn),它也可以用來標(biāo)識節(jié)點(diǎn)上的SOAP處理器。u HTTP允許初始客戶與請求URL標(biāo)識的服務(wù)器之間存在多個(gè)中

17、間節(jié)點(diǎn),在這種情況下,請求響應(yīng)模型就由一系列的請求響應(yīng)對組成。注意:uHTTP中間節(jié)點(diǎn)與SOAP中間節(jié)點(diǎn)是不同的消息交換操作u請求SOAP節(jié)點(diǎn)的行為失敗請求SOAP節(jié)點(diǎn)的狀態(tài)轉(zhuǎn)換等待接受成功響應(yīng)SOAP節(jié)點(diǎn)的行為u響應(yīng)SOAP節(jié)點(diǎn)上的狀態(tài)轉(zhuǎn)換。失敗接受響應(yīng)S0AP節(jié)點(diǎn)上的狀態(tài)轉(zhuǎn)換處理響應(yīng)成功SOAPAction特性u默認(rèn)的HTTP綁定規(guī)范在“http://2001/12/soap/bindings/defaultHTTP/SOAPAction/”中定義了一個(gè)特定于綁定的特性SOAPAction,這個(gè)特性是一個(gè)可選的特性,它位于SOAP消息封裝(Envelope元素)的外部,以HTTP標(biāo)題字段的形式使用。這個(gè)特性的用法中SOAP接收者指定??偨Y(jié)uSOAP

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論