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文檔,來實現應用,大大的提高了系統的互通性(與不同的系統之間的通信)。而且系統中各個單元業務邏輯清楚,這樣就具有很高的可移植性和可重複使用。
UDDI與JNDI
UDDI是服務的註冊管理協議,UDDI註冊中心是用來註冊服務的,用戶可以透過WSDL來進行服務註冊,客戶透過在UDDI註冊中心上查找服務,獲得WSDL文檔,根據WSDL文檔,獲取訪問服務的方法,從而用SOAP與服務進行通訊。它可以透過資料庫來實現,也可以用開源或公司( IBM等)的,使用XML來表現。當使用者查詢,其細節可以由XML格式的資訊傳回。其存取程序不過是一個層次向下的查找的過程。它註冊的服務是通用的,與平台無關,而且註冊的方式是通用的XML的格式。它可以面向Internet ,或Interanet為各種用戶,提供各種各樣的服務。
JNDI是Java服務命名目錄,它以樹的形式記錄了EJB,DataSource的存取目錄,程式可以透過JDNI和RMI來定位服務。具體的通過它們的部署文件,當伺服器啟動後,它根據部署文件自動建立JNDI,支援RMI和命名服務的查詢(由伺服器自己實現)。然後RNI就可以存取這些元件。它的思想和UDDI基本上差不多,但它與具體的體系平台綁定,而且是由服務(與程序相關,嚴格不應該叫服務,應該說是組件)完全綁定,實現方式簡單。因此UDDI相對於JNDI,更動態,更易操作.
WSDD與EJB的設定檔
對於CMP型的實體bean,WSDD與其設定檔有相似之處,但是它描述資料與資料庫形成映射,不涉及方法,有伺服器系統底層實作存取方法。而WSDD定義服務的存取接口,有支援web services的系統底層進行識別接口,傳送資料等。