摘要:SOAP 是一個基於XML的通信協議,在該協議下,軟件組件和應用程序能夠通過標准的HTTP協議通信。
內容:
SOAP 是一個基於XML的通信協議,在該協議下,軟件組件和應用程序能夠通過標准的HTTP協議通信。
誰起草了 SOAP?
SOAP 由UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft, 和 SAP共同起草.
為什麼SOAP?
在internet環境下應用開發的一個重要方面是:應用之間應該能夠相互通信。傳統的方法是在分布式對象比如:DCOM CORBA之間進行相互的遠程過程調用,但在這種場合下HTTP協議毫無用武之地,因此在internet環境下的遠程過程調用不是一件容易的事情,在internet上使用RPC還存在安全的問題,防火牆和代理服務器還很有可能阻塞這種類型的數據傳輸。
使用HTTP是一種很好的主意,因為HTTP協議得到了所有的浏覽器和服務器的支持,SOAP的宗旨就在於發揮HTTP和XML優點,從而完成在應用之間的交互。
SOAP 1.1 和 W3C
起草SOAP的各個大公司在2000年5月份向W3C提交SOAP,目前SOAP是W3C的note。
SOAP方方面面:
SOAP 是一個輕量級的通訊協議(lightweight communication protocol )
SOAP 用於應用和應用之間的通訊
使用SOAP的應用通過HTTP通訊
SOAP 獨立於任何組件技術
SOAP 獨立於編程語言
SOAP 基於XML
SOAP 簡單並且具有良好的擴展性
SOAP 已向W3C提交
SOAP 有望成為W3C的標准
微軟和 SOAP
SOAP是微軟的WINDOWS DNA 2000體系結構中的關鍵技術。
SOAP 組成
一個 SOAP消息是一個普通的XML文檔,該文檔包含如下的元素:
SOAP envelope,定義消息的內容
SOAP header (可選), 包含頭信息
SOAP body,包含所有的調用和會應信息
SOAP 的一個例子
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<GetPrice>
<Item>Apples</Item>
</GetPrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
上面的例子是一個簡單的XML文檔,要求得到蘋果的價格信息。
SOAP 名域
SOAP envelope元素的缺省名域:
http://schemas.xmlsoap.org/soap/envelope/
SOAP encoding and data types的缺省名域:
http://schemas.xmlsoap.org/soap/encoding/
部分重要的語法規則
SOAP消息必須用XML編碼
SOAP消息必須有一個 SOAP Envelope
SOAP消息可以又一個SOAP header
SOAP消息必須有一個SOAP Body
SOAP消息必須使用SOAP Envelope 名域
SOAP消息必須使用 SOAP Encoding 名域
SOAP消息 不能包含DTD引用
SOAP消息不能有XML處理指令
以下是一個SOAP的例子,該SOAP消息被封裝在一個HTTP請求中,GetStockPrice請求被發送到server。該請求具有一個 StockName參數,返回一個相應的StockPrice。請注意這裡的自定義名域,該名域規定了特殊的元素所對應的服務,只有這樣通信的雙方才能理解對方的要求。
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<xmlns:m="http://www.stock.org/stock" />
<m:GetStockPrice>
<StockName>IBM</StockName>
</m:GetStockPrice>
<