1. 程式人生 > >WebService和EJB的區別

WebService和EJB的區別

分布式系統 基本 pla sdn 分布式系 遠程調用 部分 模塊 title

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異步通信

WebService和EJB的區別