2010-06-13 49 views
7

我即將開始開發一個大型系統,我正在努力向哪個方向前進。我之前已經完成了大量的Java Web應用程序,並且我有很多有關Servlet容器和GWT的經驗以及Spring的一些經驗。問題在於我的大部分webapps被扔在了一起,僅僅是爲了證明概念,我正在努力的是使用什麼樣的框架。我需要同時擁有基於瀏覽器的應用程序和旨在支持從移動設備(現在的Android和iPhone)訪問的Web服務。理想情況下,我想設計這個系統的方式是,我不會爲每個客戶端(瀏覽器和電話)重寫所有的servlet,儘管我不介意在那裏進行一些小的檢查來正確格式化數據。另外,雖然我現在是唯一的開發者,但事實並非如此,我希望設計一些能夠在流量和開發人員方面都能很好地擴展的東西(isn'只是一場噩夢來維持)。從頭開始設計大型Java Web應用程序的建議

因此,我現在正在計劃使用GWT來設計基於瀏覽器的界面,但我正在努力重新使用該代碼來呈現移動設備的界面(很可能是xml)。我認爲,使用GWT RPC可以讓瀏覽器中的所有AJAX操作變得相對容易,但是可能會使手機難以生成xml。另外,我喜歡使用像Hibernate這樣的持久性和Spring Security來保證整個事情的想法。再次,我不知道這些將與GWT合作有多好(我認爲Hibernate應該沒問題...)

顯然還有很多比我在這裏介紹的更多,但我試圖給你5分鐘的概述。我有點難過,想知道社區中的任何人是否有從這個地方開始的任何經驗。我試圖做的事情是否有意義?這是現實嗎?毫無疑問,我可以讓所有這些框架都使用相同的語言,我只是想知道是否值得花時間與他們鬥爭。另外,我是否錯過了一個真正有益的框架?

在此先感謝和抱歉的比較廣泛的問題...

克里斯

+0

不要關閉它,這是一個有效的問題,在開始構建大型項目之前需要考慮的要點。 – 2010-06-13 03:30:13

回答

3

我會在這裏非常具體的,因爲我有一些相關經驗。並非我所寫的所有內容都適用,但我希望能有所作爲。

我的建議是將任何直接依賴於任何框架的代碼保留爲「愚蠢」的儘可能。如果可以的話,可以考慮這樣的代碼或多或少是一次性的(實施方面,暴露給客戶的API合同當然需要穩定)。

關注什麼讓你的應用程序具有獨特性,並嘗試使其獨立於GWT等。facade pattern是我可以推薦的東西 - 將應用程序特定的邏輯保持在一個後面,並通過爲它呈現表示層來佈線我們很好。如果您的後端依賴於第三方基礎設施(通過網絡服務等),請將這些依賴關係從代碼中與adapter pattern分離。

我在過去的5年中花費了大部分工作時間來構建與您在許多方面描述的內容相匹配的內容。今天,它更多的是一個應用程序框架,然後是一個應用程序 - 它有幾個不同的瀏覽器界面(WAP /標準Web + Ajax/Facebook應用程序),一個用於雙向SMS使用的接口和一個用於厚移動客戶端的REST/XML接口 - BREW ,iPhone,Android和黑莓。

說到框架,爲了持久化,我們使用了Hibernate。所有不同的代碼都與Spring綁定在一起。瀏覽器界面已經從Struts(1.x)移植到Wicket。 SMS和移動客戶端界面構建在Restlet之上。

只要代碼保持精簡併且業務規則不在其中(儘可能),那麼使用多個不同的表示層框架(例如Wicket和Restlet在我們的例子中)就不成問題。沒有什麼說您的瀏覽器界面必須與您的移動客戶端界面打包到同一個WAR中 - 使用Spring,您可以輕鬆地將多個Web應用程序連接到同一個外觀。這對我們很有幫助,特別是允許多個開發人員在應用程序的單獨部分上工作。

在我看來,試圖在表示層實現代碼的最大重用已造成更多的傷害,而不是好的。這一直是我們應用程序中最不穩定的部分,超出了我們預期的範圍。

+0

感謝您的深入解答。我想你已經提出了一些非常棒的建議,這對我有很大的幫助。我真誠感謝您的體驗! – 2010-06-14 19:13:42

相關問題