2010-09-09 77 views
11

那麼現在有情況決定。我認爲stackoverflow是討論的最佳地點。EJB與Web服務?性能的觀點

背景:

我們有2個JVM的企業應用服務器和一個應用程序部署在他們每個人。我們需要啓用從一臺機器到另一臺機器的業務功能調用。假設一個是客戶端,另一個是服務器。

現在從性能角度來看哪種方法更好地設計服務器應用程序。

通過保持以下事項:

我有兩個選擇:

  1. 純EJB應用程序意味着EJB客戶機和EJB服務器組件

  2. WebService的普通Java方法(沒有Web服務上EJB,因爲它簡直就是一團糟)

我的績效指標:速度:哪種設計方法可以更快地處理請求。我的商業應用程序肯定會部署在32位機器上!

還要注意的是有2個JVM中,一個是32位和64位(避免這種情況是不可避免的現在)

請提供您的反饋

問候

阿赫亞

+0

爲您的問題添加了java標籤。 – 2010-09-09 12:27:17

+0

您支持EJB的Web服務有什麼問題? – 2010-09-16 15:01:10

+0

@BlaiseDoughan對於offtopic感到抱歉,但是讓EJB支持Web服務是一個好習慣嗎? – MyTitle 2012-12-07 13:58:52

回答

8

如果通過「Web服務」來表示SOAP Web服務,那麼無論您如何實現,EJB都應該更快。

優點:

  • Java序列化速度較快的是XML Web服務
  • 序列化和解析XML使用更多的內存比直系列化,EJB的節省內存
  • EJB是直的Java接口和值對象表示。對於Web服務,您可能需要添加映射層,如XmlBeans或JAXB。
  • 大多數EJB協議,可以讓你輕鬆地重用電話

缺點之間的TCP/IP連接:

  • 做一個適當的設計第一XML消息定義將分離的客戶端和服務器
  • 這是考慮到額外的間接層,更容易改變消息格式
  • EJB實現歷來是巨大且緩慢的,因爲比Web服務棧更大(但是更新的EJB實現像Apac他的OpenEJB體積小,重量輕且可嵌入)

但是,如果您不需要分佈式事務處理,只需使用RMI即可。它具有優點,但沒有EJB的缺點。它已經存在了很長時間,但它仍然只是花花公子。

+0

非常感謝細節..我正在尋找2個JVM之間更快的通信方式。 EJB是我感覺到的。特別是在我的應用程序中,我不想因爲兩端的XML解析而失去我的性能。 – Chetan 2010-09-17 11:59:47

1

它不必是一個或另一個。您可以在EJB中擁有所有業務邏輯,並提供Web服務外觀來訪問EJB。另請記住,有不同類型的Web服務體系結構。 SOAP是大多數人在聽到「Web服務」時所想到的,但您可能也想看看JAX-RS。

通過HTTP以XML格式發送數據效率非常低下。另一方面,它給你在客戶端更多的靈活性更多。 Web服務可以從任何平臺或編程語言中使用。

+0

謝謝邁克。如果我通過EJB使用SOAP,XML處理將會嚴重影響我的性能。因爲我的xml有效載荷大約在60到100KB左右。 – Chetan 2010-09-17 12:03:54

+0

Mike建議發送XML而不是SOAP消息的JAX-RS。有關示例,請參閱:http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html – 2010-09-17 16:34:13