Java ee 14WebService 和 EJB 的區別

轉自:http://blog.csdn.net/gaga704/article/details/45561211

1.

WebService可以說是跨平臺的,因爲它採用的是XML技術,說穿了就是把你的請求按照該WebServece的標準將參數傳過去,然後服務器返回結果,當然了最重要的是參數的傳遞和結果的返回都是採用XML格式,但需要按照規範的,現在有SOAP和ebXML,說到XML自然有DTD或是Schema了,它用WSDL和UDDI來管理這些規範。   
    
EJB也可以說成是遠程調用,但採用的協議是RIM/IIOP,客戶端將方法請求按照協議封裝,然後發送到服務器,服務器把結果返回給客戶端。由於採用了協議,所以傳輸的數據我們可以看成二進制數據和WebService(傳輸xml文本數據)不一樣。   


WebService提供一個跨平臺的異構方法調用,一般用來實現某種商務邏輯過程。   
EJB提供一個更精確的方法調用,一般又多個EJB來實現一定的商務邏輯。    

一般你可以用WebService來提供用戶調用,具體怎麼實現用EJB來做。

2.

EJB的分佈式:一個業務邏輯可能會調用分佈在多臺服務器上的 EJB 組件,但是這麼多的組件調用必須納入一個事務範圍之中。也就是說如果需要調用三個 EJB 組件,第一個調用成功,第二個調用成功,但第三個調用失敗了,因此在第一和第二次調用成功時進行的事務操作(這裏的事務操作不單單指數據庫的,還有可能包括消息隊列服務的事務)都必須進行回滾。


但是,如果是調用三個 WebService 的話,那調用成功的那兩個基本上是不可能進行回滾的,調用完了就是完了。

WebService 只是對外提供的調用接口,而 EJB 是個業務組件。一個對外的 WebService 在服務端中也是需要實現業務邏輯的,在 J2EE 中,這些業務邏輯基本上都是由 EJB 組件來實現,對外發布 WebService 接口(當然了,使用符合 JAX-WS 規範的開源框架不用 EJB 也能做到)。

相對於 EJB 這種服務端來說,Servlet 只能算是一個 Web 層面調用的客戶端。一個 EJB 組件不僅僅是隻能用於 B/S 結構的應用,也能用於 C/S 結構的應用。這也能澄清很多人的誤區,認爲 Java Web 就是 J2EE 了,其實 J2EE 是一系列的規範集,而 Java Web 只是 J2EE 諸多規範中的一小部分。J2EE 中其他大部分規範定義的都是服務端的東西,作爲具體的客戶端調用,可以是 B/S 的,也可以是 C/S 的。

3.

Webservice主要關注於解決異構系統、不同語言系統通信,其關注的是分佈式服務開發、着手點要高、站的角度高,而ejb可以看做是分佈式編程平臺,通過容器和組件,簡化了程序開發、調試和部署等它關注的是分佈式組件開發,粒度小。

 Web service可以看做是異構系統、異構語言系統間通信的一個標準,而ejb只屬於J2EE規範的一部分。

ejb是java EE 中的一個規範,該規範描述了分佈式應用程序需要解決的問題,例如事務處理、安全、日誌、分佈式等,而同時呢,sun公司也實現了自己定義的這一個標準,相當於自己頒佈一個標準然後,又給出了實現供別人使用,實現以很多API的方式提供給用的人。

ejb是按照java服務器接口定義的java類,可以理解爲一個特殊的java類,放在容器裏容器可以幫助該類管理事務、分佈式、安全等,一般小的程序不會用到,只有大型分佈式系統纔會用到ejb,既然ejb是一個java類或是一個組件,顆粒較小,這也是與Webservice的區別之一,下面會說到,它就可以被其它一個或多個模塊調用。

包含了三種類型的Bean,可以通過註釋JPA一個規範來標記,其中有一種Bean,叫MDB消息驅動bean,它的通信機制涉及到了JMS協議。

ejb可以進行遠程調用,但是不能夠跨語言,ejb是同步調用,而平時我們說的的ejb異步調用指的是ejb的MDB異步通信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章