2012-08-26 30 views
1

我已經在過去的2天裏對此進行了近3天的研究。我覺得我已經在這個問題上搜索了一切(包括這些論壇),而且幾乎都是被導出的。在討論這個問題的更多細節之前,我只想簡要介紹項目的範圍和計劃,看看最適合的項目:與GWT一起使用的大型應用程序推薦的服務器端架構(框架/堆棧)

- 大申請,非平凡
-50+數據庫表
- 大用戶羣
- 用戶管理/認證/會話
-transactions
-security
-MVP(按照建議GWT)
-focus性能和可擴展性(當然:),我使用GWT)
-首選堅持使用Java服務器端

我還閱讀並觀察了大型應用程序(Google/GWT)體系結構的所有最佳實踐。在上一次的演講中,我可以找到關於GWT的最佳架構實踐,Ray Ray在2010年回顧了他的觀點,他表示他們不認爲JavaBeans和屬性更改事件工作得非常好,因此使用DTO更適合模型。

在我的搜索中走到前列的2個框架是Seam和Spring。

堅持使用MVP,我的域大部分是一個厚客戶端的數據服務。但是,我仍然希望服務器端具有安全性和會話功能,因爲我希望用戶即使不使用cookie也能保持狀態,並且最終會刷新。我還希望有一個像Hibernate這樣的ORM來管理很多事務方面的問題。我想仍然使用RequestFactory並且真的在考慮Spring。

我想我可以縮小我的問題到:

考慮到上述情況,將推薦的應用程序棧是怎樣的一個大的GWT應用程序,專爲服務器端,並與GWT集成?

這是我這個規模的第一個項目,我想要做的最後一件事是在失去大量時間和精力的時候走上錯誤的道路。非常感謝您的幫助,我真的只想弄清楚這一點,以便我可以回到編碼而不是谷歌搜索的地方;)。

-Seth

我也已經看了Best architecture for applications in GWT我發現可能是最接近這一點,但它並沒有真正回答我的問題,我覺得我的是一點點更有針對性,更具體的用例

回答

3

我沒有與任何Seam經歷,但是我在一個比較大的項目在後端使用GWT在前端和Spring,至今它的作品真的很好(RequestFactory,JPA2 /休眠,PostgreSQL的工作)。順便說一句,您還可以結賬JBoss Erai

使用Spring的好處是,添加新功能非常簡單。比如我增加了對OpenID認證和所有我需要做的就是定義Maven和一個額外的依賴配置文件中的一些附加線,現在通過谷歌,Facebook,Twitter帳戶認證工作開箱。
這種分層的方法有很多優點。

但如果你真的堅持開發GWT應用程序(MVP等)的最佳實踐,你將最終有兩個或多或少獨立的項目。當你開發傳統的Spring MVC/Web Flow應用程序時,你有更多或更少的一個項目(順便說一句:查看Thomas Broyer的gwt maven archetypes,它可以幫助你提出一個好的項目結構),這有點不同。

在addtional這個當您使用客戶端後端上MVP實際上只能作爲與數據輸入您的GWT客戶數據服務。所有flow synchronization將在您的GWT應用程序中處理。
因此,您可能不會使用許多後端功能(即Spring MVC的MVC部分)。
我用RequestFactory的後端和前端之間的數據通信和CRUD應用這個作品真的很好(這也從Android的支持BTW)。 但是,如果你想支持更多的客戶,你可以使用Restless的方法。再次在後端使用Spring這是比較容易Restless支持添加到您的應用程序,並有一對夫婦在GWT(RestyGWTRestlet)支持RESTful服務第三黨的圖書館。

這裏是發展過程中的一些想法:

  • 使用依賴管理系統,如maven。它使得在團隊中開發和在可管理的單元/模塊中分割項目變得非常簡單(例如GWT maven應用可以分成前端部分(GWT),後端(Spring)部分和共享(comong DTO)例如在你的Spring後臺(例如getAllProducts())中創建一個服務函數之前,爲它寫一個單元測試,這也有助於創建一個測試驅動的開發(例如TDD或BDD)。良好的服務層,因爲編寫單元測試你定義什麼業務層應該做的事
  • Premature optimization is the root of all evil」:不要把太多的時間在早期優化
  • 考慮購買/使用JRebel,特別是如果。你使用Spring。相對較大的Spring應用可能會有相對較長的啓動時間。 JRebel可幫助您在後端更改類,而無需重新加載/重新啓動應用程序。它節省了很多時間。
  • 實施域名上的ACL並非易事。有ACLSpring Security,他們工作的優良簡單的使用情況下,然而,如果你有複雜的使用情況下(例如過濾基於ACL條目的項目列表)這可能是相當棘手的,如果你想有效地做到這一點。另一方面,Spring使用另一個庫(即Apache Shiro)相對容易。此外,您必須確保您在前端顯示正確的控件(即,如果用戶沒有編輯權限等,則不需要編輯按鈕)。使用JSP很容易,因爲您在後端創建了UI(HTML頁面)。在GWT你必須自己做。
+0

嗨Ümit,首先,我只想說哇,謝謝。我也非常喜歡Spring,並且擁有PostgreSQL。我只是不確定是否通過市場營銷而不是實際價值/實用性來購買。我最大的疑問是如果我需要像Spring這樣的東西來達到我上面想要的,因爲我基本上想把服務器端用作數據服務,因爲我沒有計劃使用Webflow或Spring MVC。我對上面的問題做了一些編輯,嘗試將其重新打開並使其不太模糊 - 您是否仍然推薦上面指定的應用程序堆棧? – nightsRey

+0

另外,Errai看起來很有趣,我從來沒有遇到它,而我會搜索,但會更多地考慮它。感謝您的開發過程的想法,我一定會更熟悉Maven並牢記這些觀點,我非常感謝。 – nightsRey

+0

我堅信,堅持最佳實踐並使用標準框架/圖層是最好的選擇,特別是如果您參與大型項目。這就是Java的真正優勢。在覈心Spring中,所有關於控制反轉(IoC)的內容都是我自己推薦的。它還提供了許多額外的庫(安全,MVC等),您可以使用或不使用。通過使用IoC模式,使用自定義模式替換特定的實現/類非常容易。通過這種方式,您大多使用經過良好測試的標準代碼,但可根據您的使用情況定製特定部件。 –