親愛的堆棧溢出社區,複雜數據驅動的Web應用程序 - 在技術決策
我在構建一個複雜的,數據驅動的web應用程序的任務的前一個Java程序員(SaaS)和我正在尋找使用的技術。我已經做出了一些決定,並且我相信我足夠熟練,只需使用我已經決定的技術來構建應用程序(我絕對不會說它會是完美的,只是它會起作用)。不過,我想讓我的任務更容易,這就是爲什麼我需要你的幫助。
項目
後端的簡要說明
的應用將大量數據驅動,這意味着一切都將被存儲在一個自descripting數據庫。這意味着數據庫本身將完全用元數據描述,應用程序不會知道它讀取和寫入的數據。由於應用程序不會知道數據的結構,因此不會有任何常規實體(根據JPA @ Entity)。它會從元數據中獲取它。只有元數據將具有預定的結構。簡而言之,元數據是應用程序的alpha-omega,因爲它會告訴應用程序何時顯示以及如何顯示它。
應用程序可能會利用存儲過程對數據執行一些低級任務,例如自動審計,記錄和轉換爲用戶的語言,因此很可能會消除使用ORM框架的任何可能性,因爲不會有隻是簡單的CRUD操作。因此,JDBC似乎是我唯一的選擇(不是嗎?)。
前端
的UI將在術語「啞」,它將不知道它正在顯示(在一定程度上,當然)的數據。它只會知道如何根據從數據庫中獲取的元數據來顯示它。所有UI控件(如菜單項,按鈕等)將根據當前應用程序的狀態創建,UI將不知道控件的功能。這意味着單擊一個菜單項或一個按鈕只會將關聯操作的標識符發送到後端,服務器將決定如何操作。
我的目標
我的主要目標是讓輕量級儘可能應用與爲最依賴越好。因爲應用程序將非常複雜,所以我想避免使用任何沉重的框架,因爲我很可能需要定製其大部分功能。
我已經決定爲
請反對以下決定只,如果你認爲他們是絕對的非可行的我的應用程序,因爲我一直在使用這些技術已經實現了一些核心功能:
的Servlet Tomcat上,吉斯DI,AOP(的AspectJ)
我相信所有這些技術都足夠輕量級,我不需要學習J2EE。GWT與GIN -jection在前端
好像對我來說是最好的選擇,因爲我很熟悉Java和Swing,不想寫任何JavaScript,PHP或學習一門新的語言。 GIN是Guice的一個小兄弟,我將在客戶端和服務器上使用相同的語法和原則。MSSQL RDBMS
這實際上是從企業管理的要求,我寧願喜歡去與開源的解決方案。太糟糕了我..的Maven 2
我認爲沒有人可以反對這個:)
我需要什麼
幫助數據庫通訊
我認爲ORM被排除(我是嗎?)所以我需要使用JDBC。你認爲Spring JDBC的輕量級和足夠靈活性以供我使用嗎?我經常需要「盲目地」從數據庫中讀取數據,將其映射到某個通用實體(因爲我不會假定任何預定義的結構),然後使用一些通用的DTO將數據與元數據一起發送給客戶端它是什麼數據以及如何顯示它。或者你知道任何替代品?或者我應該自己做這個?客戶端/服務器通信
GWT和GWT-RPC機制似乎不是很適合發送的通用數據,我需要。儘管我確信使用GWT-RPC是可行的,但是還有其他選擇嗎?但我絕對想要使用GWT。安全
你知道任何安全庫/框架,將幫助我嗎?我意識到Spring安全的存在;你認爲它足夠靈活供我使用,或者我會更好地實施自己的?另外,Spring的IoC是Spring框架的一個組成部分,還是我能夠繼續使用Guice?其他你認爲可能有用嗎?
我真的很感激任何意見和建議,因爲我不敢嘗試自己做出這樣的決定。請問我是否需要更多信息。
預先感謝您! eQui
+1指向我ZK。事情是,我選擇了GWT(不幸的是已經實現了一些功能),然後才知道我要進入哪些環境。更確切地說,在我的老闆知道他真正需要什麼之前現在我明白了,正如你明智地指出的那樣,像GWT這樣以客戶爲中心的框架可能不適合我的任務。我會看看ZK,看看它是否適合我的目的。 – janhink 2011-04-15 06:25:02
+150我一直在尋找更多的指向我的框架,看起來我最終會使用Vaadin,因爲我不喜歡ZK的許可策略。此外,它更接近我已經學習的GWT,在開發我自己的組件時,我仍然可以使用它。 Vaadin提供的抽象將爲我節省很多工作(RPC,DTO),並且使用完整的Java(無GWT限制)的能力也將會很有用。謝謝你打開我的眼睛,如果我堅持原來的決定,你可能救了我很多困難,肯定會來。非常感謝! – janhink 2011-04-18 06:50:06
我真的很高興能夠幫助你! – 2011-04-18 08:27:26