web service和ejb的區別

1.WebService能夠說是跨平臺的,由於它採用的是XML技術,說穿了就是把你的請求按照該WebServece的標準將參數傳過去,而後服務器返回結果,固然了最重要的是參數的傳遞和結果的返回都是採用XML格式,但須要按照規範的,如今有SOAP和ebXML,說到XML天然有DTD或是Schema了,它用WSDL和UDDI來管理這些規範。   java

    
  EJB也能夠說成是遠程調用,但採用的協議是RIM/IIOP,客戶端將方法請求按照協議封裝,而後發送到服務器,服務器把結果返回給客戶端。因爲採用了協議,因此傳輸的數據咱們能夠當作二進制數據和WebService(傳輸xml文本數據)不同。   mysql


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

通常你能夠用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異步通訊

參考:http://blog.csdn.net/gaga704/article/details/45561211

相關文章
相關標籤/搜索