學(xué)習(xí)了一段時(shí)間的網(wǎng)絡(luò)協(xié)議,相信大家已經(jīng)對(duì)一些常規(guī)的網(wǎng)絡(luò)協(xié)議有所了解了。那么這里我們主要介紹一下SOAP協(xié)議的內(nèi)容。SOAP協(xié)議:簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議(SOAP:Simple Object Access Protocol),簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議(SOAP)是一種輕量的、簡(jiǎn)單的、基于 XML 的協(xié)議,它被設(shè)計(jì)成在 WEB 上交換結(jié)構(gòu)化的和固化的信息. SOAP協(xié)議可以和現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議( HTTP),簡(jiǎn)單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME).它還支持從消息系統(tǒng)到遠(yuǎn)程過(guò)程調(diào)用(RPC)等大量的應(yīng)用程序. SOAP 包括三個(gè)部分: SOAP 封裝:它定義了一個(gè)框架 , 該框架描述了消息中的內(nèi)容是什么,誰(shuí)應(yīng)當(dāng)處理它以及它是可選的還是必須的. SOAP 編碼規(guī)則:它定義了一種序列化的機(jī)制,用于交換應(yīng)用程序所定義的數(shù)據(jù)類(lèi)型的實(shí)例. SOAP RPC 表示:它定義了用于表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定.(RPC:英文原義:Remote Procedure Call Protocol 中文釋義:(RFC-1831)遠(yuǎn)程過(guò)程調(diào)用協(xié)議) SOAP 消息基本上是從發(fā)送端到接收端的單向傳輸,但它們常常結(jié)合起來(lái)執(zhí)行類(lèi)似于請(qǐng)求 / 應(yīng)答的模式.所有的 SOAP 消息都使用 XML 編碼.一條 SOAP 消息就是一個(gè)包含有一個(gè)必需的 SOAP 的封裝包,一個(gè)可選的 SOAP 標(biāo)頭和一個(gè)必需的 SOAP 體塊的 XML 文檔.把 SOAP 綁定到 HTTP 提供了同時(shí)利用 SOAP 的樣式和分散的靈活性的特點(diǎn)以及 HTTP 的豐富的特征庫(kù)的優(yōu)點(diǎn).在 HTTP 上傳送 SOAP 并不是說(shuō) SOAP 會(huì)覆蓋現(xiàn)有的 HTTP 語(yǔ)義,而是 HTTP 上的 SOAP 語(yǔ)義會(huì)自然的映射到 HTTP 語(yǔ)義.在使用 HTTP 作為協(xié)議綁定的場(chǎng)合中, RPC 請(qǐng)求映射到 HTTP 請(qǐng)求上,而 RPC 應(yīng)答映射到 HTTP 應(yīng)答.然而,在 RPC 上使用 SOAP 并不僅限于 HTTP 協(xié)議綁定. SOAP也可以綁定到TCP和UDP協(xié)議上. 協(xié)議結(jié)構(gòu) SOAP協(xié)議消息格式: SOAP 標(biāo)頭
目前主要在web服務(wù)中運(yùn)用. SOAP Action WEB編碼中常見(jiàn),協(xié)議開(kāi)始起始意思,常見(jiàn)于編碼啟始句. 語(yǔ)法規(guī)則 這里是一些重要的語(yǔ)法規(guī)則: SOAP 消息必須用 XML 來(lái)編碼 SOAP 消息必須使用 SOAP Envelope 命名空間 SOAP 消息必須使用 SOAP Encoding 命名空間 SOAP 消息不能包含 DTD 引用 SOAP 消息不能包含 XML 處理指令 SOAP 消息的基本結(jié)構(gòu)
現(xiàn)在采用webservice+soap的比較火,原因: WebService可用基于XML的SOAP來(lái)表示數(shù)據(jù)和調(diào)用請(qǐng)求,并且通過(guò)HTTP協(xié)議來(lái)傳輸這些XML格式的數(shù)據(jù),因?yàn)榇藭r(shí)的調(diào)用請(qǐng)求和回應(yīng)消息是可以穿過(guò)防火墻的,一般來(lái)說(shuō)都只有80端口是開(kāi)放的.具資料顯示在WebService之前實(shí)現(xiàn)的一些所謂的分布式組件技術(shù)是采用二進(jìn)制來(lái)表示的,還需要通過(guò)特殊的端口來(lái)通信.明顯當(dāng)遇到防火墻時(shí)就會(huì)失敗.webservice最大優(yōu)點(diǎn)就是實(shí)現(xiàn)異構(gòu)平臺(tái)間的互通.這也是使用WebService的主要原因之一.這樣任何兩個(gè)應(yīng)用程序,只要他們能讀寫(xiě)XML,就能相互通信. 1.webservice部署比較方便(它直接通過(guò)網(wǎng)絡(luò)引用,只要服務(wù)器端拋出的接口不變,客戶(hù)端是沒(méi)法知道的,因?yàn)樗缘膬?nèi)部計(jì)算都是在服務(wù)器運(yùn)行的)DLL,部署,更新需要每個(gè)應(yīng)用了這個(gè)DLL的應(yīng)用程序都作相應(yīng)的引用更新...而如果用了Ws,則不用,因?yàn)樗ㄟ^(guò)網(wǎng)絡(luò)部署,通過(guò)網(wǎng)絡(luò)引用,基本上,ws發(fā)生了變化,客戶(hù)端沒(méi)有影響,甚至不知道有這樣的變化... 2.web service的編寫(xiě),跟普通的class差不多. 3.當(dāng)然還有一個(gè)好處:平臺(tái)無(wú)關(guān).C#,Java寫(xiě)的ws可以相互調(diào)用. 4.做分布式系統(tǒng).比如 說(shuō)把數(shù)據(jù)訪(fǎng)問(wèn)部分寫(xiě)成ws,發(fā)布在另外一臺(tái)server上... ... Webservice與WCF的區(qū)別: webservice 集成了 WEBservice,.NET Remoting,enterprise Service,WSE,MSMQ等技術(shù)的整合。WCF具有WEBservice的優(yōu)點(diǎn)和彌補(bǔ)了他的缺點(diǎn).但是為了加強(qiáng)WEB service 的安全性的規(guī)范性,微軟使用WCF來(lái)綁定一些規(guī)范,讓VS生成代碼更加迅速準(zhǔn)確.比如 <Head>的協(xié)議節(jié)點(diǎn)的生成,加密,(這塊內(nèi)容還有很多,但是我只接觸到這兩點(diǎn)),在VS2008中,WCF就是通過(guò)接口來(lái)實(shí)現(xiàn)服務(wù)的.和VS2005下實(shí)現(xiàn)WEB SerVCie有點(diǎn)不一樣.微軟有意將WCF做稱(chēng)一個(gè)強(qiáng)大的解決方案整合.特別是它的強(qiáng)大的配置性. |
|