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