原文:http://blog.csdn.net/pautcher_0/article/details/6798351java
wsdl和soap雖然是web service的兩大標準,可是二者並無必然的聯繫,均可以獨立使用。web
wsdl提供了一個統一的接口,目前已經成爲一個國際上公認的標準,經過wsdl提供的接口能夠訪問不一樣類型的資源(如java、c#、C、C、C++ 等),由於wsdl是基於xml,與語言平臺無關的。另外wsdl提供了binding和service元素,用以綁定接口到具體的服務,實現了接口與實 現的分離。c#
soap(簡單對象訪問協議)是一種基於http的傳輸協議,用來訪問遠程服務安全
wsdl與soap的關係在於:wsdl綁定服務的時候能夠設定使用的協議,協議能夠是soap、http、smtp、ftp等任何一種傳輸協議,除此以 外wsdl還能夠綁定jms、ejb及local java等等,不過都是須要對binding和service元素作擴展的,並且須要擴展服務器的功能以支持這種擴展服務器
soap協議是一種請求和應答協議規範,而http是web傳輸協議,soap的傳輸是能夠基於http的,但也能夠基於其餘的傳輸協議,如ftp、smtp等。框架
簡單對象訪問協議(SOAP)是W3C組織的一個 Note, 它描述了一種在分散的或分佈式的環境中如何交換信息的輕量級協議。SOAP是一個基於XML的協議,它包括三個部分:SOAP封裝(Envelop),封 裝定義了一個描述消息中的內容是什麼,是誰發送的,誰應當接受並處理它以及如何處理它們的框架;SOAP編碼規則(Encoding Rules),用於表示應用程序須要使用的數據類型的實例;SOAP RPC表示(RPC Representation),表示遠程過程調用和應答的協定;SOAP能夠和多種傳輸協議綁定(Binding),使用底層協議交換信息。在這個文檔 中,目前只定義了SOAP如何和HTTP以及HTTP擴展進行綁定的框架。
SOAP是個通訊協議, SOAP在HTTP協議的基礎上,把編寫成XML的REQUEST參數, 放在HTTP BODY上提交個WEB SERVICE服務器(SERVLET,ASP什麼的) 處理完成後,結果也寫成XML做爲RESPONSE送回用戶端, 爲了使用戶端和WEB SERVICE能夠相互對應,可使用WSDL做爲這種通訊方式的描述文件,利用WSDL工具能夠自動生成WS和用戶端的框架文件,SOAP具有把複雜對 象序列化捆綁到XML裏去的能力。
SOAP的前身是RPC, 就是遠程呼叫處理的協議,這個協議安全性不是很好,多數防火牆都會阻擋RPC的通訊包,而SOAP則使用HTTP協議做爲基本的協議,使用端口80使得SOAP能夠透過防火牆,完成RPC的功能。
SOAP協議和HTTP協議同樣,都是底層的通訊協議,只是請求包的格式不一樣而已,SOAP包是XML格式的,如今咱們編寫WEB SERVICE不須要深刻理解SOAP也不要緊。若是SERVICE和CLIENT在一樣的環境下使用SOAP,因爲通常狀況下都有自動生成SOAP程序 框架的工具,所以不知道細節也不要緊. 但是, 若是CLIENT和SERVICE的環境不一樣,好比說JAVA的Client和.NET的SERVICE進行通訊,或者是VB CLIENT和TOMCAT下的JAVA SERVICE通訊,仍是要知道一點細節爲好. 特別是, WSDL或者UDDI都不是標準,若是不讓用就只好手工配製SOAP MESSAGE啦。分佈式