2014-12-03 70 views
2

我需要開發一個新的項目,將包含幾個AngularJS應用程序,我有一個關於項目體系結構的問題。一個項目與多角應用程序體系結構

解決方案將運行5個webapp(目前),客戶可以選擇他希望的模塊。這些應用程序將僅在其網絡上可用。

我想兩個解析

  • 解決方案一:發展5戰(易於部署根據戰爭的客戶需求)

  • 解決方法二:做一個獨特的戰爭(在數據庫的應用程序將配置可用)

關於第一溶液:

我想爲每個webapp +一個「核心」模塊創建一個maven模塊,該模塊將包含在每個webapp模塊中,並且將包含spring配置(每個webapp之間95%相同),實體,dao和一些共享服務。你是否看到有任何問題需要這樣做?

關於第二個解決方案

事實上,我甚至不知道該怎麼做,但是我認爲這是可行的(也許用HTTP過濾器?)

那麼,什麼是最好的解決辦法知道我的特權可維護性與性能?

回答

0

基本上你可能會想到的是一個具有前端層,服務層和DAO層的項目。

準備其中三個作爲單獨的maven項目,然後將它們添加爲maven依賴項或在單個項目中創建適當的包結構。

在前端,而不是使用5個不同的項目,您可以使用單個項目切換頁面。從切換頁面,您可以通過彈簧配置的mvc-dispatcher將請求直接發送到相應的應用程序。

在我的建議前端文件夾結構會看起來像在下面,

-webapp 
|_web-inf 
    |_pages 
    |_app 
    |_project A 
    |_project B 
    |_scripts 
     |_projects B's sub module A 
     |_projects B's sub module B 
     |_controllers 
     |_factories 
     |_model 
     |_services 
     |_views 
     |_projects B's sub module C 
     |_projects B's sub module D 
     |_projects B's sub module E 
    |_project C 
    |_project D 
    |_project E 

您可以使用MVC-調度下面你應用你的資源映射,

<mvc:resources mapping="/projectA/scripts/**" location="/WEB-INF/pages/app/projectA/scripts/"/> 
<mvc:resources mapping="/projectB/scripts/**" location="/WEB-INF/pages/app/projectB/scripts/"/> 
<mvc:resources mapping="/projectC/scripts/**" location="/WEB-INF/pages/app/projectC/scripts/"/> 
<mvc:resources mapping="/projectD/scripts/**" location="/WEB-INF/pages/app/projectD/scripts/"/> 
<mvc:resources mapping="/projectE/scripts/**" location="/WEB-INF/pages/app/projectE/scripts/"/> 

希望這會有所幫助

+0

那麼根據你的解決方案,我必須做一場單一的戰爭? – Antid0te 2014-12-03 13:54:52

+0

這取決於你將如何分離你的項目。假設你要分別創建Frond-end,Services/controllers和DAO。那麼你可能需要兩個war文件(前端和服務/控制器,DAO可以作爲服務/控制器的maven依賴項添加)如果你更喜歡同一個項目中的所有客戶端和服務器端實現,那麼顯然你只需要戰爭文件。但考慮可擴展性,分離前端和後端總是更好。對不起回覆遲了:) – helloworld 2014-12-03 18:04:32