2011-03-10 54 views
5

我們正計劃創建一個feedreader作爲Windows桌面和iPad應用程序。由於我們希望能夠顯示網站在此應用程序中運行(我們自己的)JavaScript,我們考慮將應用程序作爲HTML/CSS/JavaScript提供,只是由一些.NET控件或Cocoa Touch網絡瀏覽器零件。因此,手頭的任務是找出使用哪個框架來創建HTML/CSS/JS文件以嵌入到應用程序中。體系結構問題:GWT或Vaadin創建桌面應用程序?

對於HTML/CSS/JavaScript的開發,我們很樂意使用Vaadin,GWT或其他一些框架,因爲我們比Java更擅長Java。我們贊成Vaadin經過短暫的頭腦風暴,因爲UI組件非常好,但是我擔心大多數繁重的工作將在服務器上而不是在客戶端上(而且這不會太好)。我們也喜歡GWT,但是Java-to-JS編譯需要很多時間和額外的步驟,並且在使用它時過去會減慢開發時間。

問題是:你會選擇哪種開發框架(因爲你想實現這個項目,並且你目前主要使用Java),爲什麼?如果有更好的框架選項(List of Rich Client Frameworks),請讓我知道。

編輯:應用程序需要不時與我們的服務器通話(例如同步讀取的內容),但主要應該獲取xml提要本身。因此,我希望大部分生成的代碼都可以嵌入到應用程序中,並且不需要使用我們的服務器進行繁重的活動。

編輯2:我們(實際上即使您懷疑)期望至少10000個用戶。

回答

6

根據我對Vaadin的經驗,我會爲此付出代價,但您的要求有點偏向純粹的GWT。

  • Vaadin需要服務器和服務器連接。如果構建大多數離線桌面應用程序,則可以使用嵌入式Jetty解決此問題。 (僅在需要時才與在線服務同步),但對於iPad,您需要馬上聯機以啓動Vaadin應用程序。
  • GWT完全在客戶端運行,您可以構建僅在需要時才連接的JavaScript瀏覽器應用程序。

因爲Vaadin的開發速度要快很多,所以你可以先建立一個小的Vaadin版本,看看它是否真的在iPad上出現問題。

另一方面,如果您可以立即假定上線,則可以完全跳過本地服務器安裝。只需在線運行應用程序並使用操作系統默認瀏覽器控件(即,您所建議的.NET控件)實現桌面版本即可。然後Vaadin更容易。

4

Vaadin是對GWT只是框架的基礎,但有兩個非常重要的特點:

  • 不需要運行GWT編譯器。這是純粹的Java。當然,如果不添加附件,則gwt編譯器必須運行。
  • 你不需要寫通信代碼。所以你不需要解決DTO問題,不可序列化的對象映射,也不需要編寫servlet。

我在我的工作中使用Vaadin一年,而且我們還沒有性能問題(桌面就像500用戶的應用程序)。國際海事組織非常好的解決方案是將Vaadin用於UI,邏輯移動到獨立的bean並使用Spring或Guice連接這兩個元素。

在這種情況下,您應該使用MVP模式和域驅動開發。

  • Bussines bean是域對象和使用視圖接口發送響應的邏輯。
  • 自定義Vaadin組件(可以擴展標準組件)實現視圖接口。

如果Vaadin不適合您,您決定更改UI引擎,那麼這種方式非常好。只需重寫guice/spring映射並編寫視圖接口的新實現。

3

我3美分:

如果你決定使用vaadin,您將受益於已好看組件。既然你不想寫CSS(很多),vaadin已經很好看了。 Vaadin是一個SERVERSIDE框架。即使用戶界面交互不涉及獲取任何數據(例如從一個標籤移動到另一個標籤),用戶界面交互也會觸發後端。

如果你決定使用GWT,你將不得不以最少風格的應用程序(這並不難)。還存在編譯時間長的問題(但是您可以在託管模式下進行測試和調試,這允許您在不編譯的情況下運行應用程序,然後只在部署時編譯)。 gwt的主要優點是可以控制發送到網絡的內容,對於不需要從後端獲取數據的UI交互,它將純粹在客戶端工作。開發人員將決定何時向後端發送請求。 (在GWT中執行RPC請求非常容易)

希望這會幫助您做出決定。