一、簡介
簡易物件存取通訊協定 (SOAP)含義
這裡之所以說是簡單,是因為它是基於已經廣泛使用的兩個協議:HTTP和XML,所以業界把這種技術稱為“它是第一個沒有發明任何新技術的技術",之所以說是對象,是因為把訪問的Web服務稱為對象,既然服務是對象,那麼服務肯定有相關的屬性和調用行為,這些屬性和行為是通過WSDL來描述的。如果按“簡單的對象訪問協議”來理解,相比“簡易物件存取通訊協定 (SOAP)”要容易些。
二、組成
SOAP:簡易物件存取通訊協定 (SOAP)
(SOAP:Simple Object Access Protocol)
SOAP 包括四個部分:
SOAP 封裝:它定義了一個架構
, 該架構描述了訊息中的內容是什麼,誰應當處理它以及它是可選的還是必須的。
SOAP 編碼規則:它定義了一種序列化的機制,用於交換應用程式所定義的資料類型的執行個體。
SOAP RPC 表示:它定義了用於表示遠端程序呼叫和應答的協定。
SOAP 綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。
SOAP 訊息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP 訊息都使用 XML 編碼。一條 SOAP 訊息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。
把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特徵庫的優點。在HTTP上傳送
SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協議綁定的場合中, RPC 請求映射到 HTTP 要求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議綁定。
SOAP也可以綁定到TCP和UDP協議上。
三、協議結構
SOAP 訊息格式:
SOAP 標頭
<SOAP-ENV: Envelope
Attributes>
<SOAP-ENV:Body
Attributes>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>目前主要在web服務中運用。
四、文法規則
這裡是一些重要的文法規則:
SOAP 訊息必須用 XML 來編碼
SOAP 訊息必須使用 SOAP Envelope 命名空間
SOAP 訊息必須使用 SOAP Encoding 命名空間
SOAP 訊息不能包含 DTD 引用
SOAP 訊息不能包含 XML 處理指示
五、SOAP 核心技術
SOAP採用了已經廣泛使用的兩個協議:HTTP 和XML。HTTP用於實現 SOAP 的RPC
風格的傳輸, 而XML 是它的編碼模式。採用幾行代碼和一個XML 解析器, HTTP 伺服器( MS 的 IIS 或 Apache) 立刻成為SOAP 的 ORBS。SOAP
通訊協議使用 HTTP 來發送XML 格式的資訊。HTTP與RPC 的協議很相似,它簡單、 配置廣泛,並且對防火牆比其它協議更容易發揮作用。HTTP 要求一般由 Web
伺服器軟體(如 IIS 和Apache)來處理, 但越來越多的應用伺服器產品正在支援HTTP。XML
作為一個更好的網路資料表達方式( NDR)。SOAP 把 XML 的使用代碼化為請求和響應參數編碼模式, 並用HTTP 作傳輸。具體地講, 一個SOAP 方法可以簡單地看作遵循SOAP編碼規則的HTTP請求和響應,
一個 SOAP 終端則可以看作一個基於HTTP 的URL, 它用來識別方法調用的目標。像CORBA/ IIOP一樣, SOAP不需要具體的對象綁定到一個給定的終端, 而是由具體實現程式來決定怎樣把對象終端標識符映像到伺服器端的對象。
六、SOAP 的優點
(1) SOAP 是可擴充的。SOAP 無需中斷已有的應用程式, SOAP
用戶端、
伺服器和協議自身都能發展。
而且SOAP 能極好地支援中間介質和層次化的體繫結構。
(2) SOAP 是簡單的。用戶端發送一個請求,調用相應的對象, 然後伺服器返回結果。這些訊息是XML
格式的,並且封裝成符合HTTP 協議的訊息。因此,它符合任何路由器、
防火牆或Proxy 伺服器的要求。
(3) SOAP 是完全和廠商無關。SOAP可以相對於平台、 作業系統、 目標模型和程式設計語言獨立實現。另
外,傳輸和語言綁定以及資料編碼的參數選擇都是由具體的實現決定的。
(4) SOAP 與程式設計語言無關。SOAP 可以使用任何語言來完成,只要用戶端發送正確SOAP 請求( 也就
是說, 傳遞一個合適的參數給一個實際的遠端伺服器)。SOAP 沒有物件模型, 應用程式可以捆綁在任何
物件模型中。
(5) SOAP 與平台無關。SOAP 可以在任何作業系統中無需改動正常運行。