XML模式:SOAP
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-17 20:15:49 作者:佚名
我要評(píng)論

簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)實(shí)際上是一種 Web 服務(wù)技術(shù),但 Web 服務(wù)中客戶(hù)機(jī)和服務(wù)器之間的數(shù)據(jù)交換格式是通過(guò)靈活的 XML 模式實(shí)現(xiàn)的。
Web 服務(wù)的主要優(yōu)點(diǎn)是客戶(hù)機(jī)和服務(wù)器通過(guò)網(wǎng)絡(luò)進(jìn)行信息和數(shù)據(jù)交換的互操作性的層次。SOAP 標(biāo)準(zhǔn)使用 XM
簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)實(shí)際上是一種 Web 服務(wù)技術(shù),但 Web 服務(wù)中客戶(hù)機(jī)和服務(wù)器之間的數(shù)據(jù)交換格式是通過(guò)靈活的 XML 模式實(shí)現(xiàn)的。
Web 服務(wù)的主要優(yōu)點(diǎn)是客戶(hù)機(jī)和服務(wù)器通過(guò)網(wǎng)絡(luò)進(jìn)行信息和數(shù)據(jù)交換的互操作性的層次。SOAP 標(biāo)準(zhǔn)使用 XML 以一種體系結(jié)構(gòu)中立的格式來(lái)構(gòu)造數(shù)據(jù),定義數(shù)據(jù)類(lèi)型和信息。
對(duì)于編程語(yǔ)言來(lái)說(shuō),只需要提供數(shù)據(jù)類(lèi)型和需要在遠(yuǎn)程服務(wù)器上調(diào)用的函數(shù)名稱(chēng)即可。SOAP 庫(kù)將用主機(jī)語(yǔ)言編寫(xiě)的信息和格式轉(zhuǎn)化成 XML 格式的消息,其中包括調(diào)用的函數(shù)和提供的參數(shù)。
通過(guò) W3C 的例子就可以了解 SOAP 的結(jié)構(gòu)。調(diào)用遠(yuǎn)程 SOAP 函數(shù)
GetEndorsingBoarder()
的時(shí)候,客戶(hù)機(jī)上的調(diào)用程序生成清單 1 所示的 XML 消息。
清單 1. 調(diào)用遠(yuǎn)程 SOAP 函數(shù) GetEndorsingBoarder()
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetEndorsingBoarder xmlns:m="http://namespaces.snowboard-info.com"> <manufacturer>K2</manufacturer> <model>Fatbob</model> </m:GetEndorsingBoarder> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SOAP 客戶(hù)機(jī)發(fā)送的整個(gè)消息都放在 SOAP 信封中。信封的內(nèi)容就是消息的詳細(xì)內(nèi)容。
被調(diào)用的函數(shù)顯然是
GetEndorsingBoarder
,它包括兩個(gè)參數(shù):manufacturer 和 model。由此可見(jiàn),它把本地的可能采用二進(jìn)制編碼的字符串轉(zhuǎn)化成了 XML 字符串。由于 XML 是平臺(tái)獨(dú)立的,主機(jī)使用 SOAP 系統(tǒng)不需要復(fù)雜的二進(jìn)制編碼和解碼就可以交換消息。
服務(wù)器通過(guò)另一個(gè) XML 編碼的 SOAP 信封返回響應(yīng),這一次是函數(shù)的返回值。SOAP 請(qǐng)求的響應(yīng)格式與函數(shù)相同,只不過(guò)在信封內(nèi)容的后面加上了
Response
,如清單 2 所示。
清單 2. SOAP 請(qǐng)求的響應(yīng)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetEndorsingBoarderResponse xmlns:m="http://namespaces.snowboard-info.com"> <endorsingBoarder>Chris Englesmann</endorsingBoarder> </m:GetEndorsingBoarderResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
通常不需要自己編寫(xiě) SOAP 消息,SOAP 庫(kù)會(huì)自動(dòng)生成。不過(guò) SOAP 信封的結(jié)構(gòu)和簡(jiǎn)單性表明使用 SOAP 標(biāo)準(zhǔn)共享信息很簡(jiǎn)單。
SOAP 大大簡(jiǎn)化了交換消息和調(diào)用遠(yuǎn)程函數(shù)的工作。遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call,RPC)標(biāo)準(zhǔn)需要復(fù)雜的方法來(lái)處理二進(jìn)制數(shù)據(jù)的序列化,發(fā)送結(jié)構(gòu)化更高的信息需要詳細(xì)的聲明和雙向的信息轉(zhuǎn)換。
使用 SOAP,XML 序列化大大降低了這種復(fù)雜性,使得跨平臺(tái)、跨語(yǔ)言集成和數(shù)據(jù)交換更加簡(jiǎn)單。
相關(guān)文章
MIME類(lèi)型中application/xml與text/xml的區(qū)別介紹
這篇文章介紹了MIME類(lèi)型中application/xml與text/xml的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-28- XML中擁有Schema特性,能夠比DTD更加強(qiáng)大地引入元素結(jié)構(gòu),下面我們就來(lái)詳解XML中的模式Schema的概念及作用和用法,需要的朋友可以參考下2021-11-30
- 這篇文章主要介紹了XML基本概念入門(mén)學(xué)習(xí)指南,包括其與HTML的關(guān)系以及元素和特殊標(biāo)簽等,需要的朋友可以參考下2016-06-24
- XML標(biāo)簽的自定義功能非常強(qiáng)大,比如本文將要講解的DTD(Document Type Definition)就帶給人們一種面向?qū)ο蟀愕母杏X(jué),well,下面就來(lái)看一下XML中的DTD文件類(lèi)型定義完全解析2016-06-24
- 這篇文章主要介紹了XML文件的閱讀與編輯,最常用的工具當(dāng)然還是瀏覽器中的控制臺(tái)與源代碼查看,需要的朋友可以參考下2016-02-16
- 這篇文章主要介紹了XML的命名空間,包括命名空間的聲明等XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-02-16
解析XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型
這篇文章主要介紹了XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型,文中舉了JavaScript解析DOM對(duì)象的例子,需要的朋友可以參考下2016-02-15- 這篇文章主要介紹了詳解XML編程中的模式定義XSD,講解了如何在XML文檔中聲明模式及定義類(lèi)型等內(nèi)容,需要的朋友可以參考下2016-02-15
- 這篇文章主要介紹了XML中的DTD文檔類(lèi)型定義,是XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-02-15
淺談XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題
這篇文章主要介紹了XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題,與HTML類(lèi)似,XML文件的編碼也能在序言部分被指定,需要的朋友可以參考下2016-02-15