簡單了解soap協議


SOAP的是什么的簡寫

soap是(Simple Object Access Protocal)的簡寫,即簡單對象訪問協議,它描述了一種在分散或分布式的環境中如何交換信息的輕量級協議。

soap用來干什么的

SOAP在http協議的基礎上,是基於XML的簡易協議,可使應用程序在HTTP之上進行信息交換,也就是用於訪問網絡服務的協議。SOAP的優點是可以傳遞結構化的數據,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web服務器。Web服務器再把這些請求轉發給Web service請求處理器,它解析收到的SOAP請求,調用Web service,處理后再生成相應的SOAP應答。Web服務器得到SOAP應答后,會再通過HTTP應答的方式把它送回到客戶端。從HTTP協議的角度看,最基本的四種操作是GET(查),POST(改),PUT(增),DELETE(刪),我們用的比較多的是POST和GET方式。而SOAP可視為POST的一個專用版本,遵循一種特殊的XML消息格式。

soap的組成部分

包括四個部分

  • SOAP封裝:它定義了一個整體框架用來表示消息中包含什么內容,誰來處理,以及這些內容是可選的或是必需的。
  • SOAP編碼規則:定義了用以交換應用程序定義的數據類型的實例的一系列機制。
  • SOAP RPC:表示定義了一個用來表示遠程調用和應答的協議。
  • SOAP綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。

soap協議的語法規則

構建模塊
  一條SOAP消息就是一個普通的XML文檔,包含下列元素:
      1)必需的Envelope元素,可把此XML文檔表示為一條SOAP消息。
      2)可選的Header元素,包含頭部信息。
      3)必需的Body元素,包含所有的調用和響應消息;
      4)可選的Fault元素,提供有關在處理此消息發生錯誤的信息
語法規則
      1)SOAP消息必須用XML來編碼;
      2)SOAP消息必須使用SOAP Envelope命名空間
      3)SOAP消息必須使用SOAP Encoding命名空間
      4)SOAP消息不能包含DTD引用
(文檔類型定義(DTD,Document Type Definition)是一種特殊文檔,它規定、約束符合標准通用標示語言(SGML)或SGML子集可擴展標示語言(XML)規則的定義和陳述。)
      5)不能包含XML處理指令

SOAP基本的消息結構

  <?xml  version="1.0"?>
    <soap:Envelope  xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
        soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
      <soap:Header>
    <!--示例-->
    </soap:Header>  
    <soap:Body>
    <!--示例-->
    <soap:Fault>
    <!--示例-->
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>

soap協議的優點

  • 可擴展的
    SOAP無需中斷已有的應用程序, SOAP客戶端、 服務器和協議自身都能發展。而且SOAP能極好地支持中間介質和層次化的體系結構。
  • 簡單的
    客戶端發送一個請求,調用相應的對象, 然后服務器返回結果。這些消息是XML格式的,並且封裝成符合HTTP協議的消息。因此,它符合任何路由器、 防火牆或代理服務器的要求。
  • 完全和廠商無關
    SOAP可以相對於平台、 操作系統、 目標模型和編程語言獨立實現。另外,傳輸和語言綁定以及數據編碼的參數選擇都是由具體的實現決定的。
  • 與編程語言無關
    SOAP可以使用任何語言來完成,只要客戶端發送正確SOAP請求( 也就是說, 傳遞一個合適的參數給一個實際的遠端服務器)。SOAP沒有對象模型,應用程序可以捆綁在任何對象模型中。
  • 與平台無關
    SOAP可以在任何操作系統中無需改動正常運行。

總結

SOAP與XML的關系:所有的SOAP消息都使用XML形式編碼
SOAP簡單的理解就是這樣的一個開放協議SOAP=RPC+HTTP+XML:
采用HTTP作為底層通訊協議;RPC作為一致性的調用途徑,XML作為數據傳送的格式,允許服務提供者和服務客戶經過防火牆在INTERNET進行通訊交互。
一個SOAP方法可以簡單地看作遵循SOAP編碼規則的HTTP請求和響應, 一個 SOAP終端則可以看作一個基於HTTP的URL, 它用來識別方法調用的目標。像CORBA/IIOP一樣, SOAP不需要具體的對象綁定到一個給定的終端, 而是由具體實現程序來決定怎樣把對象終端標識符映像到服務器端的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM