版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、04服務(wù)計(jì)算基礎(chǔ)(SOAP),1,服務(wù)計(jì)算基礎(chǔ),主講:李偉剛 西北工業(yè)大學(xué)軟件與微電子學(xué)院,04服務(wù)計(jì)算基礎(chǔ)(SOAP),2,第三章 SOAP,04服務(wù)計(jì)算基礎(chǔ)(SOAP),3,主要內(nèi)容,SOAP概述 SOAP消息結(jié)構(gòu) SOAP編碼 SOAP消息交換 SOAP處理技術(shù),04服務(wù)計(jì)算基礎(chǔ)(SOAP),4,第一節(jié) SOAP概述,04服務(wù)計(jì)算基礎(chǔ)(SOAP),5,SOAP是一個(gè)獨(dú)立于任何特定傳輸協(xié)議的XML消息協(xié)議 是復(fù)雜的分布式對(duì)象通信技術(shù)的輕量級(jí)替代物 源自 BizTalk (Microsoft/UserLand/DevelopMentor ) W3C的標(biāo)準(zhǔn) Based on XML,SOAP,
2、04服務(wù)計(jì)算基礎(chǔ)(SOAP),6,SOAP最早由Dave Winner、Don Box和Bod Atkinson提出。 在1997年,Microsoft開(kāi)始考慮基于XML的分布式計(jì)算,其目標(biāo)是使應(yīng)用程序能夠使用HTTP上層的遠(yuǎn)程過(guò)程調(diào)用(RPC)相互通信。DevelopMentor和Userland加入到了討論。 在1998年初,SOAP名字就已經(jīng)被確定。Userland在1998年發(fā)布了一個(gè)XML-RPC規(guī)范。 1999年9月SOAP0.9提交IETF(Internet工程任務(wù)組)。 2000年5月8日,SOAP1.1作為Note提交W3C。IBM發(fā)布Java SOAP實(shí)現(xiàn),并捐給開(kāi)放源代碼
3、組織Apache XML Project。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。2003年6月24日SOAP1.2成為W3C推薦標(biāo)準(zhǔn)。2007年4月27日W3C發(fā)布SOAP1.2推薦標(biāo)準(zhǔn)第二版。,SOAP發(fā)展史,04服務(wù)計(jì)算基礎(chǔ)(SOAP),7,SOAP 為在一個(gè)松散的、分布的環(huán)境中使用XML對(duì)等地交換結(jié)構(gòu)化和類型化信息提供了一個(gè)簡(jiǎn)單且輕量級(jí)的機(jī)制。 支持應(yīng)用程序與應(yīng)用程序之間的通信。
4、 應(yīng)用于B2B的通信以及企業(yè)應(yīng)用集成。 以獨(dú)立于各種編程語(yǔ)言或平臺(tái)的方式來(lái)構(gòu)造消息、處理消息,從而使用不同編程語(yǔ)言編寫(xiě)的程序之間具有互操作性,并能夠在不同的操作系統(tǒng)上運(yùn)行。 通過(guò)對(duì)模塊中特定格式編碼的數(shù)據(jù)的重編碼機(jī)制來(lái)表示應(yīng)用語(yǔ)義。,SOAP-What?,04服務(wù)計(jì)算基礎(chǔ)(SOAP),8,SOAP-What?,04服務(wù)計(jì)算基礎(chǔ)(SOAP),9,SOAP-What?,SOAP,Network Protocol,Intermediator,04服務(wù)計(jì)算基礎(chǔ)(SOAP),10,使用RPC進(jìn)行通信 需對(duì)服務(wù)接口達(dá)成一致 需對(duì)通信協(xié)議達(dá)成一致 使用ORB服務(wù) 可以使用Internet,但是需要更改安全設(shè)
5、置,SOAP-What?,04服務(wù)計(jì)算基礎(chǔ)(SOAP),11,使用XML消息,信封可封裝任意內(nèi)容和附件 不需要特殊的網(wǎng)絡(luò)設(shè)置 用XML描述服務(wù)(即WSDL) 用XML描述消息,SOAP-What?,04服務(wù)計(jì)算基礎(chǔ)(SOAP),12,定義通信單元的構(gòu)成: 一個(gè)SOAP封套封裝了所有其他的信息。 一個(gè)消息可以有一個(gè)消息體,消息體中可以包含任何XML格式數(shù)據(jù)。 錯(cuò)誤處理機(jī)制: 標(biāo)識(shí)錯(cuò)誤源和導(dǎo)致錯(cuò)誤的原因,并允許錯(cuò)誤診斷信息在共享者和交互者之間傳遞。 可擴(kuò)展機(jī)制: 使用XML Schema和名字空間技術(shù),靈活擴(kuò)展元素。 靈活的數(shù)據(jù)表示機(jī)制: 允許交換已經(jīng)以某種格式序列化的數(shù)據(jù),同時(shí)也提供了以XML格
6、式表示諸如編程語(yǔ)言數(shù)據(jù)類型這樣的抽象數(shù)據(jù)結(jié)構(gòu)的規(guī)則。 表示遠(yuǎn)程過(guò)程調(diào)用(RPC)和作為響應(yīng)的SOAP消息的約定,并且便于映射為過(guò)程式編程語(yǔ)言結(jié)構(gòu)。 支持以文檔為中心的方法。 將SOAP消息綁定到HTTP上,因?yàn)镠TTP是Internet上最常用的通信協(xié)議。,SOAP的功能,04服務(wù)計(jì)算基礎(chǔ)(SOAP),13,第二節(jié) SOAP消息結(jié)構(gòu),04服務(wù)計(jì)算基礎(chǔ)(SOAP),14,基于XML的協(xié)議,由四部分組成: 信封(Envelope):作為描述消息中的內(nèi)容以及如何處理消息的信息框架 編碼規(guī)則(Encoding Rules):用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例 綁定(Binding):定義底層通信
7、協(xié)議,進(jìn)行消息交換 RPC:遠(yuǎn)程過(guò)程調(diào)用和返回的約定,SOAP的內(nèi)容,04服務(wù)計(jì)算基礎(chǔ)(SOAP),15,SOAP消息處理模型,04服務(wù)計(jì)算基礎(chǔ)(SOAP),16,SOAP消息結(jié)構(gòu),Envelope contains Header Body Header is optional Out-of-band information (帶外信息) such as Authentication information Message routes Logging Transaction flow Body contains XML body of RPC call,04服務(wù)計(jì)算基礎(chǔ)(SOAP),17,S
8、OAP消息剖析,注:是省略寫(xiě)法,04服務(wù)計(jì)算基礎(chǔ)(SOAP),18,SOAP消息例子,A SOAP Request Message,04服務(wù)計(jì)算基礎(chǔ)(SOAP),19,SOAP消息例子,A SOAP Request Message,app-specific message, IBM ,message namespace,SOAP Envelope Namespace,SOAP envelope,04服務(wù)計(jì)算基礎(chǔ)(SOAP),20,SOAP消息例子,A SOAP Respond Message,SOAP envelope,app-specific message,Result returned
9、in Body, 134 ,04服務(wù)計(jì)算基礎(chǔ)(SOAP),21,SOAP Envelope元素信息項(xiàng)是SOAP消息的最外層元素,它具有: 值為Envelope的本地名稱 值為的命名空間名稱 在它的attributes中有零個(gè)、一個(gè)或多個(gè)由命名空間限定的屬性信息項(xiàng) 在它的children中按順序有一個(gè)或兩個(gè)元素信息項(xiàng),次序如下: 一個(gè)可選的頭元素信息項(xiàng): Header 一個(gè)必選的體元素信息項(xiàng): Body,SOAP信封,04服務(wù)計(jì)算基礎(chǔ)(SOAP),22,encodingStyle屬性: encodingStyle屬性信息項(xiàng)指出了對(duì)SOAP消息部分內(nèi)容進(jìn)行序列化的編碼規(guī)則 SOAP的全局encod
10、ingStyle屬性被用于指明在SOAP消息中使用哪種編碼規(guī)則。 encodingStyle屬性信息項(xiàng)可以在下述地方出現(xiàn),其作用范圍包括該元素的內(nèi)容和所有其子元素中未使用該屬性的所有子元素: SOAP頭塊 SOAP體元素信息項(xiàng)的子元素信息項(xiàng)如果該子元素不是SOAP故障元素信息項(xiàng) SOAP Detail元素信息項(xiàng)的子元素信息項(xiàng) 上述三者的任意子元素 encodingStyle屬性信息項(xiàng)不能出現(xiàn)在除上述SOAP信息集之外的其它任何元素中,SOAP 主要屬性,04服務(wù)計(jì)算基礎(chǔ)(SOAP),23,SOAP提供了一個(gè)可伸縮的機(jī)制用于在分散的模塊化的環(huán)境下擴(kuò)展SOAP消息,而通訊雙方并不需要有預(yù)先的約定知
11、識(shí)。典型的擴(kuò)展例子可以是實(shí)現(xiàn)一些諸如認(rèn)證、事務(wù)管理以及支付的Header條目 Header元素應(yīng)當(dāng)被編碼為SOAP Envelope XML文檔的第一直接子元素。Header的所有直接子元素都被稱為Header條目,SOAP Header,04服務(wù)計(jì)算基礎(chǔ)(SOAP),24, 5 ,04服務(wù)計(jì)算基礎(chǔ)(SOAP),25,Header條目的編碼規(guī)則包括: 一個(gè)SOAP Header條目由一個(gè)完整修飾的元素名來(lái)標(biāo)識(shí),所謂完整修飾的元素名是由一個(gè)命名空間URI和局部名來(lái)組成 SOAP Header元素的所有直接子元素都必須是完整修飾的 encodingStyle屬性可以用于指明Header條目的編碼風(fēng)
12、格 role屬性和SOAP mustUnderstand屬性可以用于指明由哪個(gè)SOAP結(jié)點(diǎn)來(lái)處理?xiàng)l目以及如何處理?xiàng)l目,SOAP Header,04服務(wù)計(jì)算基礎(chǔ)(SOAP),26,描述安全憑證 事務(wù)ID 路由 調(diào)試信息 支付令牌 安全 ,SOAP Header,04服務(wù)計(jì)算基礎(chǔ)(SOAP),27,SOAP消息從生成者到達(dá)最終接受者,將潛在地沿著消息路徑經(jīng)過(guò)一系列的SOAP中間結(jié)點(diǎn)。SOAP中間結(jié)點(diǎn)是一個(gè)能夠接受和轉(zhuǎn)發(fā)SOAP消息的應(yīng)用程序。所有的中間結(jié)點(diǎn)都如同最終接受者一樣由一個(gè)URI來(lái)標(biāo)識(shí) role屬性信息項(xiàng)的類型是xs:anyURI。role屬性信息項(xiàng)的值是一個(gè)URI,該URI標(biāo)識(shí)了該頭塊期
13、望SOAP結(jié)點(diǎn)擔(dān)任的角色 當(dāng)一個(gè)節(jié)點(diǎn)接收到一個(gè)SOAP消息時(shí),它要分析文件頭,以確定哪些代碼塊是由該節(jié)點(diǎn)支持的角色,role屬性,04服務(wù)計(jì)算基礎(chǔ)(SOAP),28,除了表中所定義的SOAP角色的名字之外,具體的SOAP應(yīng)用可根據(jù)自身需要定義其它角色,role屬性,04服務(wù)計(jì)算基礎(chǔ)(SOAP),29,若省略SOAP role屬性,等價(jià)于role屬性的值為,表明接收者是SOAP消息的最終接收者,role屬性,04服務(wù)計(jì)算基礎(chǔ)(SOAP),30,mustUnderstand全局屬性用于指明一個(gè)Header條目是強(qiáng)制的還是可選的要求接收者處理 Header條目的接收結(jié)點(diǎn)由SOAP role屬性來(lái)定義
14、mustUnderstand屬性的值可為“false”或“true”。若沒(méi)有使用SOAP mustUnderstand屬性,則在語(yǔ)義上等價(jià)于mustUderstand屬性出現(xiàn)同時(shí)取值為“false” 若Header條目帶有值為“true”的mustUnderstand屬性,則該Header條目的接收結(jié)點(diǎn)要么必須遵循語(yǔ)義并正確地處理這些語(yǔ)義,要么必須宣稱處理消息失敗 mustUnderstand屬性是為了考慮健壯地升級(jí)而設(shè)置的。所有用值為“true”的SOAP mustUnderstand屬性來(lái)標(biāo)記的元素必須被認(rèn)為是可以影響該元素的上級(jí)元素或同級(jí)元素的語(yǔ)義,mustUnderstand屬性,04
15、服務(wù)計(jì)算基礎(chǔ)(SOAP),31,SOAP relay屬性信息項(xiàng)用于指出,如果定位于SOAP接收者的SOAP頭塊沒(méi)有被處理,那么是否必須轉(zhuǎn)發(fā)該頭塊 relay屬性信息項(xiàng)的類型為xs:boolean 省略該屬性,在語(yǔ)義上等價(jià)于包含值為”false”的relay屬性 如果生成SOAP relay屬性信息項(xiàng),SOAP發(fā)送者應(yīng)該使用規(guī)范的形式表示屬性值“true”。SOAP接收者必須接收該屬性值任何有效的詞法表示 生成SOAP消息的SOAP發(fā)送者應(yīng)該只在SOAP頭塊中使用relay屬性信息項(xiàng),SOAP relay屬性,04服務(wù)計(jì)算基礎(chǔ)(SOAP),32,SOAP Body元素提供一個(gè)簡(jiǎn)單的用于與消息的最
16、終接收者交換強(qiáng)制信息的機(jī)制。而B(niǎo)ody元素的典型應(yīng)用包含序列的RPC調(diào)用和錯(cuò)誤報(bào)告 Body元素在編碼上作為SOAP Envelope元素的一個(gè)直接子元素。如果包含Header元素,則Body元素必須直接跟隨Header元素,否則Body元素必須是Envelope元素的第一直接子元素 所有Body元素的直接子元素被稱為SOAP Body條目,同時(shí)每一個(gè)Body條目都應(yīng)當(dāng)編碼為SOAP Body元素里的一個(gè)獨(dú)立元素,SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),33,Body條目的編碼規(guī)則: 一個(gè)Body條目由一個(gè)完整修飾的元素名來(lái)標(biāo)識(shí),所謂完整修飾的元素名是由一個(gè)命名空間URI和局部名來(lái)組
17、成。SOAP Body元素的直接子元素可以是命名空間修飾的 SOAP encodingStyle屬性可以被用來(lái)表明Body條目中使用的編碼規(guī)則 SOAP定義了一個(gè)Body條目,用于報(bào)告錯(cuò)誤的Fault條目,SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),34,SOAP Fault元素是用于在SOAP消息中傳輸錯(cuò)誤或狀態(tài)信息。如果SOAP消息需要包含SOAP Fault元素的話,它必須作為一個(gè)Body條目出現(xiàn),同時(shí)在Body元素內(nèi)它必須至多出現(xiàn)一次 SOAP Fault元素定義了如下子元素: 1faultcode元素為那些要提供一個(gè)算法上的機(jī)制來(lái)標(biāo)識(shí)錯(cuò)誤的軟件之用。faultcode必須在SO
18、AP Fault元素中出現(xiàn)。SOAP定義了一個(gè)很小的SOAP錯(cuò)誤代碼的集合用于覆蓋基本的SOAP錯(cuò)誤。 2faultstring元素是為那些錯(cuò)誤代碼提供一個(gè)人可以讀懂的錯(cuò)誤解釋,它不是為程序處理而設(shè),提供一些解釋該錯(cuò)誤種類的信息。 3faultactor元素指明SOAP消息路徑中是誰(shuí)引起了該錯(cuò)誤的發(fā)生。faultactor屬性的值是一個(gè)標(biāo)識(shí)該源的一個(gè)URI。不作為SOAP消息最終接收者的應(yīng)用程序必須在SOAP Fault元素中包含faultactor元素。而消息的最終接收者可以使用faultactor元素來(lái)明確地指明是它生成了該錯(cuò)誤。 4detail元素是用于傳輸與SOAP Body元素相關(guān)的
19、應(yīng)用程序特定的錯(cuò)誤信息。如果Body元素中的內(nèi)容不能被成功地處理的時(shí)候,它必須出現(xiàn)。它不能被用于傳輸屬于Header條目的錯(cuò)誤信息。,SOAP Fault,04服務(wù)計(jì)算基礎(chǔ)(SOAP),35,若SOAP Fault元素中不出現(xiàn)detail元素,則表明其中的錯(cuò)誤與Body元素的處理無(wú)關(guān)。這可以用于區(qū)分在錯(cuò)誤情況下Body元素是否被SOAP的最終接受者處理過(guò)。 detail元素的所有直接子元素都被稱為detail條目,同時(shí)每個(gè)detail條目都作為detail元素中的一個(gè)獨(dú)立的元素進(jìn)行編碼。 detail條目的編碼規(guī)則如下: 1一個(gè)detail條目由一個(gè)完整修飾的元素名來(lái)標(biāo)識(shí)。detail元素的直
20、接子元素可以是命名空間修飾的。 2SOAP encodingStyle屬性可以被用來(lái)表明detail條目中使用的編碼規(guī)則。,SOAP Fault,04服務(wù)計(jì)算基礎(chǔ)(SOAP),36,第三節(jié) SOAP編碼,04服務(wù)計(jì)算基礎(chǔ)(SOAP),37,簡(jiǎn)單類型: SOAP采用了在“XML Schema Part 2: Datatypes”的“Build-in datatypes”節(jié)中定義的所有類型,包括值和詞匯空間(lexical spaces) 字符串:“string”數(shù)據(jù)類型在“XML Schema Part 2: Datatypes”中被定義。 枚舉:“XML Schema Part 2: Data
21、types”規(guī)范定義了一種稱為“玫舉(enumeration)”的機(jī)制。 字節(jié)數(shù)組:一個(gè)Byte數(shù)組可以編碼為單引用或多引用值。對(duì)一個(gè)不透明的Byte數(shù)組的推薦表示是使用在XML Schema規(guī)范中定義的“base64”編碼方式。 多態(tài)存取標(biāo)識(shí):多態(tài)地訪問(wèn)多個(gè)類型的值,在運(yùn)行時(shí)刻每個(gè)類型都是可使用的。一個(gè)多態(tài)存取標(biāo)識(shí)實(shí)例必須包含一個(gè)“xsi:type”屬性以描述類型的實(shí)際值。,SOAP 編碼,04服務(wù)計(jì)算基礎(chǔ)(SOAP),38,復(fù)合類型:SOAP依照在程序語(yǔ)言中常??匆?jiàn)的以下結(jié)構(gòu)模式來(lái)定義復(fù)合類型: “struct”是一個(gè)復(fù)合類型值,其成員的存取標(biāo)識(shí)名是相互區(qū)別的唯一標(biāo)志,應(yīng)彼此各不相同。 “
22、array”是一個(gè)復(fù)合類型值,其成員的順序位置是相互區(qū)別的唯一標(biāo)志。,SOAP 編碼,04服務(wù)計(jì)算基礎(chǔ)(SOAP),39,兩種描述數(shù)據(jù)類型實(shí)例的語(yǔ)法 Anonymous accessor: 36 Anonymous because its name is its type rather than a meaningful id for the value Named accessor: 36,SOAP 數(shù)據(jù)類型,04服務(wù)計(jì)算基礎(chǔ)(SOAP),40,int a3 = 1, 2, 3; b = Add(ina);, 1 2 3 ,SOAP 數(shù)據(jù)類型:Arrays,04服務(wù)計(jì)算基礎(chǔ)(SOAP),41
23、,第四節(jié) SOAP消息交換,04服務(wù)計(jì)算基礎(chǔ)(SOAP),42,By value: Add(in int a, in int b); By reference : Square(in, out int , 3 4 , 8,傳值和傳引用,04服務(wù)計(jì)算基礎(chǔ)(SOAP),43,SOAP-RPC: SOAP的一個(gè)設(shè)計(jì)目標(biāo)就是要利用XML的可擴(kuò)展性和可伸縮性來(lái)包裝和交換RPC調(diào)用。 為實(shí)施一個(gè)方法調(diào)用,需要以下信息: 目標(biāo)SOAP結(jié)點(diǎn)的URI 方法名 可選的方法或過(guò)程的特征 方法或過(guò)程的參數(shù) 可選的頭數(shù)據(jù) SOAP依賴協(xié)議綁定來(lái)提供傳送URI的機(jī)制,SOAP消息交換模式,04服務(wù)計(jì)算基礎(chǔ)(SOAP),4
24、4,RPC調(diào)用和響應(yīng)都是在SOAP Body元素中傳送,使用如下表示方式: 一個(gè)方法調(diào)用被建模成一個(gè)結(jié)構(gòu)struct。該方法調(diào)用顯示為一個(gè)簡(jiǎn)單結(jié)構(gòu)struct,包含每個(gè)in或in/out參數(shù)的存取標(biāo)識(shí)。該結(jié)構(gòu)的名和類型可使用過(guò)程或方法的名來(lái)標(biāo)識(shí)。 每個(gè)in或in/out參數(shù)都被表示為一個(gè)存取標(biāo)識(shí),該存取標(biāo)識(shí)的名和類型都對(duì)應(yīng)于相應(yīng)參數(shù)的名和類型。他們的次序也是按照原來(lái)RPC中的次序。 一個(gè)方法響應(yīng)被建模成一個(gè)結(jié)構(gòu)struct。,RPC和SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),45, Computer ,SOAP 請(qǐng)求消息,04服務(wù)計(jì)算基礎(chǔ)(SOAP),46,該方法響應(yīng)顯示為一個(gè)簡(jiǎn)單結(jié)構(gòu)
25、struct,包含每個(gè)out或in/out參數(shù)的存取標(biāo)識(shí)。而第一個(gè)存取標(biāo)識(shí)是返回值,而隨后則是按照原來(lái)次序的返回參數(shù)。 每個(gè)out或in/out參數(shù)都被表示為一個(gè)存取標(biāo)識(shí),該存取標(biāo)識(shí)的名和類型都對(duì)應(yīng)于相應(yīng)參數(shù)的名和類型。返回值的存取標(biāo)識(shí)名并沒(méi)有多少語(yǔ)義。同樣的,結(jié)構(gòu)的名也并沒(méi)有多少語(yǔ)義。當(dāng)然,無(wú)論如何,在添加了“Response”字串的方法名后,要有一個(gè)約定來(lái)命名它。 方法調(diào)用出錯(cuò)應(yīng)使用SOAP Fault元素來(lái)編碼。如果一個(gè)綁定協(xié)議對(duì)于錯(cuò)誤表達(dá)還有額外規(guī)則,那么這些規(guī)則都應(yīng)當(dāng)被遵守。 方法和響應(yīng)的結(jié)構(gòu)可以使用規(guī)則來(lái)編碼,也可以使用在encodingStyle屬性中描述的其他編碼。 應(yīng)用程序可
26、以處理漏寫(xiě)參數(shù)的請(qǐng)求不過(guò)也可以返回一個(gè)錯(cuò)誤。 因?yàn)樵陧憫?yīng)中若包含“result”則表明成功,若包含“fault”則表明失敗,所以如果方法響應(yīng)中同時(shí)包含了“result”和“fault”則是錯(cuò)誤的。,RPC和SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),47, 8000.00 ,SOAP 響應(yīng)消息,04服務(wù)計(jì)算基礎(chǔ)(SOAP),48,RPC (Remote Proceduce Call): SOAP Request Message 的SOAP Body 中, 第一個(gè) sub-element 必須與operation 同名。 ,RPC和SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),49,D
27、ocument: 用于 messaging oriented document exchange. 對(duì)于document-oriented Service 或 messaging-oriented Service, 不強(qiáng)調(diào)“operation” ,允許SOAP Body 可以直接帶message part, 不用跟一個(gè) operation element . . 注:以目前來(lái)說(shuō), 不管是.NET 或 JAVA, 并沒(méi)有將這兩種 operation 的實(shí)現(xiàn)方式明顯區(qū)分,不管是 RPC Operation 亦或是 Document Operation, 后端都是以一個(gè) Method 來(lái)實(shí)現(xiàn),RPC
28、和SOAP Body,04服務(wù)計(jì)算基礎(chǔ)(SOAP),50,1rpc/encoded 2rpc/literal 3document/encoded 4document/literal,消息模式,04服務(wù)計(jì)算基礎(chǔ)(SOAP),51,public class myServices public void myMethod (int x) return; ,服務(wù),04服務(wù)計(jì)算基礎(chǔ)(SOAP),52,SOAP文檔內(nèi)容 5 ,rpc/encoded樣式,04服務(wù)計(jì)算基礎(chǔ)(SOAP),53, 5 ,rpc/literal樣式,04服務(wù)計(jì)算基礎(chǔ)(SOAP),54, 5 ,document /encoded,0
29、4服務(wù)計(jì)算基礎(chǔ)(SOAP),55, 5 ,document /literal,04服務(wù)計(jì)算基礎(chǔ)(SOAP),56, 5 ,document / literal-wrap,04服務(wù)計(jì)算基礎(chǔ)(SOAP),57,Its just that there are two ways to structure a SOAP message. In the early versions of SOAP, SOAP was designed to support only RPC style. When using RPC style, the contents of the SOAP Body must co
30、nform 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 messages (document). When using Document style, you can structure the contents of the SOAP Body any way you like.,消
31、息模式,04服務(wù)計(jì)算基礎(chǔ)(SOAP),58,雖然SOAP可以和多種HTTP請(qǐng)求方法聯(lián)合使用,但這里的綁定只定義了SOAP是如何在HTTP Post請(qǐng)求中傳輸?shù)摹?1HTTP Header中的SOAPAction字段:SOAPAction HTTP請(qǐng)求頭字段(header field)可以用于指示SOAP HTTP請(qǐng)求的目的。它的值是一個(gè)標(biāo)識(shí)該目的的URI。 2SOAP HTTP響應(yīng):在HTTP之上的SOAP遵從用于在HTTP中表示通訊狀態(tài)的HTTP狀態(tài)代碼的語(yǔ)義。例如,2xx狀態(tài)代碼表明這是客戶端包含SOAP構(gòu)件的請(qǐng)求被成功的接收、理解和接受等等。 3當(dāng)處理請(qǐng)求的時(shí)候發(fā)生SOAP錯(cuò)誤的時(shí)候,SOAP HTTP服務(wù)器必須發(fā)出一個(gè)HTTP 500 “Internal Server Error”響應(yīng)同時(shí)在包含于該響應(yīng)的SOAP消息中應(yīng)包含一個(gè)SOAP Fault元素。 4HTTP擴(kuò)展框架:SOAP消息可以與HTTP Extension Framework一起使用來(lái)標(biāo)識(shí)SOAP HTTP請(qǐng)求。,HTTP傳輸SOAP,04服務(wù)計(jì)算基礎(chǔ)(SOAP),59,SOAP利用HTTP的請(qǐng)求/響應(yīng)消息模型,將SOAP請(qǐng)求的參數(shù)放在HTTP請(qǐng)求里,而將SOAP響應(yīng)的參數(shù)放在HTTP響應(yīng)里。 SOAPAction HTTP請(qǐng)求頭字段(header field)可以用于指示
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 結(jié)合中西醫(yī)療技術(shù)的探索
- 化工安全生產(chǎn)與環(huán)境保護(hù)管理措施研究
- 石河子大學(xué)《債法》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《土木工程材料》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《人力資源管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《當(dāng)代國(guó)際共產(chǎn)主義運(yùn)動(dòng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《運(yùn)動(dòng)控制基礎(chǔ)》2022-2023學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《汽車構(gòu)造》2022-2023學(xué)年第一學(xué)期期末試卷
- 造價(jià)年終總結(jié)匯報(bào)
- 沈陽(yáng)理工大學(xué)《工程力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年海南樂(lè)東縣樂(lè)供“菜籃子”發(fā)展有限公司招聘筆試參考題庫(kù)含答案解析
- 裝飾裝修工程質(zhì)量保證措施和創(chuàng)優(yōu)計(jì)劃
- 格林巴利綜合征神經(jīng)內(nèi)科
- 是否混聲四部合唱譜
- 腎挫裂傷護(hù)理查房
- 幼兒園大班健康領(lǐng)域指南目標(biāo)
- 大型機(jī)械設(shè)備安全操作培訓(xùn)
- 《白酒基礎(chǔ)知識(shí)培訓(xùn)》課件
- 莧菜種植技術(shù)要點(diǎn)
- 肝移植免疫排斥反應(yīng)基礎(chǔ)研究
- 物流管理職業(yè)生涯規(guī)劃
評(píng)論
0/150
提交評(píng)論