2010-03-18 57 views
4

我正在計劃一個web應用程序,每個使用它的人都會有一個可以在其計算機上運行計算的客戶端(因爲這些計算無法在服務器上完成,負載太大......),然後發送結果到服務器。EJB3 Remote vs Webservices,性能?

我想會有很多人對我的應用感興趣,這就是爲什麼我想知道我的架構是否好,以及如果我能夠處理成千上萬的人。我打算通過JNDI與Glassfish服務器公開遠程EJB,因此1000人可以同時使用這些EJB(我猜可能有5-50個請求/秒)來檢索本地計算所需的數據,然後發送結果...

向許多客戶端公開EJB是否昂貴? 使用webservices,rmi是另一種解決方案會更好嗎?

你會推薦我另一個架構,我要做什麼?

回答

7

首先,從純粹的架構角度來看,EJB用於構建分佈式應用程序,Web服務是一種集成技術,它們並不真正相互競爭。就你而言,EJB將是一個自然的選擇(我們正在談論EJB3,對嗎?),會話bean的擴展性非常好。其次,如果服務器端代碼僅用於從數據庫檢索數據並在客戶端計算後保存結果,那麼應用程序服務器很可能不會成爲數據庫的瓶頸。換句話說,沒有什麼可擔心的。因此,由於您的客戶端都是100%的Java客戶端,因此我只會公開無狀態會話bean 並避免SOAP/XML編組/解組和編寫WSDL的開銷(如果有一天您需要公開您的服務作爲網絡服務,這仍然是可能的,而且容易)。

使用JPA或其他數據訪問權限由您自行決定。

+1

謝謝:) 將使用與GlassFish的第三版EJB3.1我覺得 所以這就是我要做的事情,暴露我無國籍遠程EJB 等法蘭西萬歲!:) – 2010-03-18 22:53:01

1

我的2p是提供Webservice或XML/http客戶端從客戶端角度來看更容易和更標準。 一個好處是,如果它是一個SOAP Web服務,它們不需要是Java客戶端。

+2

但實際上它是100%的Java客戶端 我知道webservices更好,如果有一天可以開發非java客戶端,但事實並非如此......性能如何? :) 當我開發服務器和客戶端,並將客戶端分發給那些只會運行jar的人,使用遠程EJB有點容易......只是想知道它是否值得webservices – 2010-03-18 12:54:23

0

我讀了一個論壇,因爲代理保持和它產生的流量

一個傢伙測試並生成300對象的序列化40ko名單3.6mo網絡Trafic在,它可能是一個壞主意來檢索客戶端實體wireshark,但是如果你使用EntityManager.clear()去分離實體或者使用pojos dto將類型返回到遠程函數,那麼它沒問題:)