XMLHTTP與SOAP:
XML是web serivces的核心基礎技術,是SOAP實現的關鍵所在;而XMLHTTP就是根據XML來設計的。從實現的方式上講:XMLHTTP是基於浏覽器的,只要有IE,就能實現向服務器傳遞XML字符串,具有很高的通用性。但是浏覽器不是用來做XMLHTTP,它是面向大眾用戶浏覽的,如果能用XML完成各種操作,必然會影響到用戶。比如以前版本的msxml的對應浏覽器,是可以訪問客戶端XML文檔(初始時為XMLHTTP設計的),也就意味著可以通過XMLHTTP技術訪問本地文件系統。後來microsoft把它定義為漏洞,現在就不行了。當然也可以編寫客戶端程序,只不過限於Visual 系列的程序,他們可以調用msxml中的API。但是服務端可以是asp,jsp/servlet都可以,都是把xml串變成xml文檔對象。
SOAP是XML格式的通信協議,包含:SOAP封套定義了描述消息內容的約定,暗示了消息的處理方式;協議綁定提供了通過更底層協議傳輸SOAP封套的一套通用機制;編碼規則是把各種應用程序數據類型映射為基於標簽的XML表示方法的約定;RPC機制提供了一個表示遠程過程調用及其返回值的方法。它與其他的協議之間沒有明確的關系,他本省就是一種協議。它可以與http.stmp,tcp等協議綁定。SOAP消息是XML文檔,還可以帶附件,它可以根據W3C定義的API,生成SOAP消息,當然microsoft的.net平台也支持SOAP。SOAP+HTTP和XMLHTTP相似,當它提供更好和更強大的實現功能,可拓展性和分布協作通信中的通用性,更重要的是它已成為Web Services和線路通信的關鍵技術。
SOAP和RMI,CORBA,COM
RMI和COM都是分布式應用的實現方式,它們定義組件之間的通信。由於它們只是一個體系(例如用java寫的一系列程序)下程序之間的通信約定,而且通信需要特定的平台支持,除了本體系之內的通信是高效之外,不能與別的體系下的程序。
CORBA就是為了解決這種通信問題,設計了代理請求模型(利用IDL語言),這樣能夠彼此之間的通信,但這樣好像是修補,不能解決根本問題,是系統變得越來越復雜,而且用CORBA僅僅在挽回舊系統的使用價值有效果。他們都不能透過防火牆的。SOAP+HTTP是防火牆的友好協議,能夠透過防火牆的。
SOAP是一種與具體實現無關的協議,基於XML格式,傳輸XML格式的數據,使得系統變得松散。這樣在應用中利用XML的可讀性,解析XML文檔,來實現應用,大大的提高了系統的互操作性(與不同的系統之間的通信)。而且系統中各個單元業務邏輯清楚,這樣就具有很高的可移植性和可重用。