SOAP協議是什麼,它的優點是什麼
對於應用程式開發來說,使程式之間進行因特網通訊是很重要的。目前的應用程式通過使用遠端過程呼叫(RPC)在諸如 DCOM 與 CORBA 等物件之間進行通訊,但是 HTTP 不是為此設計的。RPC 會產生相容性以及安全問題;防火牆和代理伺服器通常會阻止此類流量。通過 HTTP 在應用程式間通訊是更好的方法,因為 HTTP 得到了所有的因特網瀏覽器及伺服器的支援。SOAP 就是被創造出來完成這個任務的。SOAP 提供了一種標準的方法,使得執行在不同的作業系統並使用不同的技術和程式語言的應用程式可以互相進行通訊。
SOAP協議的定義
SOAP協議,全稱Simple Object Access Protocol,中文名為簡單物件訪問協議。是一種輕量的、簡單的、基於XML(標準通用標記語言下的一個子集)的協議,它被設計成在WEB上交換結構化的和固化的資訊。
組成部分
SOAP封裝(envelop),它定義了一個框架,描述訊息中的內容是什麼,是誰傳送的,誰應當接受並處理它以及如何處理它們;
SOAP編碼規則(encoding rules),它定義了一種序列化機制,用於表示應用程式需要使用的資料型別的例項;
SOAP RPC表示(RPC representation),它定了一個協定,用於表示遠端過程呼叫和應答;
SOAP繫結(binding),它定義了SOAP使用哪種協議交換資訊。使用HTTP/TCP/UDP協議都可以。
把SOAP繫結到HTTP提供了同時利用SOAP的樣式和分散的靈活性的特點以及HTTP的豐富的特徵庫的優點。在HTTP上傳送SOAP並不是說SOAP會覆蓋現有的HTTP語義,而是HTTP上的SOAP語義會自然的對映到HTTP語義。在使用HTTP作為協議繫結的場合中,RPC請求對映到HTTP請求上,而RPC應答對映到HTTP應答。然而,在RPC上使用SOAP並不僅限於HTTP協議繫結。
SOAP協議優點
一、可擴充套件的。SOAP 無需中斷已有的應用程式, SOAP 客戶端、 伺服器和協議自身都能發展。而且SOAP 能極好地支援中間介質和層次化的體系結構。
二、簡單的。客戶端傳送一個請求,呼叫相應的物件, 然後伺服器返回結果。這些訊息是XML 格式的,並且封裝成符合HTTP 協議的訊息。因此,它符合任何路由器、 防火牆或代理伺服器的要求。
三、完全和廠商無關。SOAP可以相對於平臺、 作業系統、 目標模型和程式語言獨立實現。另外,傳輸和語言繫結以及資料編碼的引數選擇都是由具體的實現決定的。
四、與程式語言無關。SOAP 可以使用任何語言來完成,只要客戶端傳送正確SOAP 請求( 也就是說, 傳遞一個合適的引數給一個實際的遠端伺服器)。SOAP 沒有物件模型,應用程式可以捆綁在任何物件模型中。
五、與平臺無關。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不需要具體的物件繫結到一個給定的終端, 而是由具體實現程式來決定怎樣把物件終端識別符號映像到伺服器端的物件。