一個實際項目Java架構設計之總體設計 標籤: javajava架構設計Spring MVCmybatis 2015-06-12 23:10 1891人閱讀 評論(6) 收藏 舉報 分類: java(2)
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
目錄(?)[+] 1 總體架構模組圖 1.1 抽象架構模組圖
1.2 具體技術架構模組圖
如上圖示所,架構主要包括了:
l MVC開發架構
l 工作流程技術
l 使用者、許可權、角色管理
下面分別詳細介紹。 2 MVC方案 2.1 視圖層技術方案(view)
在常用開發架構的應用中,常用於視圖層的有:Jsp ,Jsf,Freemarker,Xslt, Velocity等.JSP:常用的一種視圖層,無法實現嚴格的MVC分離,JSP代碼幾乎等同於Java代碼。表現邏輯與代碼相混雜,代碼重用性,系統維護性比較低。下面分別介紹:
l JSF:基於組件事件驅動,遵循JAVAEE的標準,上手快,有大量可重用組件。對RESET支援不好,沒有一個統一的實現,既有SUN的實現,又有apache的實現-myfaces,編寫定自訂群組件要求高,比較適合做公司專屬應用程式。
l xslt:模板技術之一,有極佳的拓展性和重用性,可實現嚴格的MVC分離。Xslt缺乏強有力的編輯器支援。在效能上,相對於JSP,Freemarker,Velocity,在等同複雜頁面度的表現層邏輯,xslt效能比其他幾個差距比較大,佔用的記憶體空間也比較多。
l Velocity:常用的模板技術之一,可實現嚴格的MVC分離,簡單輕量級,文法簡單。vtl文法需要一定上的學習時間,不支援jsp標籤。
l Freemarker:常用的模板技術之一,可實現嚴格的MVC分離。與Velocity相比,Freemarker功能更加強大,對錶現邏輯和商務邏輯的劃分更加嚴格,可自訂macro,Freemarker同時支援JSP的標籤。Freemarker對於文法相對比較嚴格,變數必須賦值,map的key必須為string。
基於以上分析,結合開發效率和運行效率,建議採用Freemarker作為視圖層的技術。 2.2 控制層方案(controller)
在常用的控制層技術中,有struct1,struct2,springMVC等。
1) struct1:比較早的一個控制層架構,非安全執行緒,現在很少使用。
2) struct2:較為成熟並應用非常廣泛的架構,即經典的SSH,比較熱門
3) springMVC:後起之秀,目前最有前景的技術,以下列出與struct2主要對比項:
l 在效能上,springMVC優於struct2。
l springMVC隸屬spring團隊的產品,學習過spring的人,上手快。
l springMVC可實現配零配置,struct2需要無法做到零配置。
l 對於開發效率來講,springMVC相對struct2,效率高。
l pringMVC內建restful,無需第三方外掛程式的支援。
l 標杆對照,在淘寶、拍拍等大型電商網站中,也採用springMVC作為控制層技術,有很多資料可作為參考。
從技術的先進性、複雜性上考慮建議採用springMVC作為控制層。
2.3 模型層(module)
可以選用兩大主流的開源ORM組件:Hibernate和MyBatis。
l Hibernate學習門檻比較高,限制物件模型,在多表、複雜查詢下,最佳化難度較高。對於後期的維護或者重構來說,難度較大。
l MyBatis屬於半ORM架構,可以對sql做到精細控制,但是開發效率來講,比hibernate相對慢些,但是利於後期的維護於重構。
從靈活性、可控性、學習成本和本人熟悉程度考慮,配合使用codeSmith代碼生器能大幅提高開發效率,建議採用MyBatis,作為項目的ORM架構。
2.4 資料庫(database)
可能被採用的資料庫有Oracle、MySQL,使用Mysql的好處有:
l 源免費資料庫,使用較新穩定版本5.5
l 功能強大,穩定;
l 經曆過有廣泛的成熟的應用實踐考驗;
l 使用經驗比較豐富,容易上手,使用簡單;
l 視使用者量情況考慮,前期小規模的時候採用Master-Slave主從模式備份。後期逐步考慮:實現資料庫讀寫分離。並可考慮分表、分庫,還可以使用叢集提升讀效能。
使用Oracle的好處有:
l 目前公司已經使用
l 效能好、安全性高,各種方案完整
l 客戶較為認可
基於目前公司已使用,所以建議仍採用oracle,但如果需要降低成本可以採用Mysql。 2.5 推薦MVC技術方案流程 2.5.1 總體流程圖
2.5.2 控制層(controller)流程圖
3 使用者、角色、許可權管理模組
CAS +LDAP 4 工作流程方案
可以選擇的技術主要有:JBPM4,JBPM5,Activiti5
| 序號 |
技術組成 |
Activiti |
jBPM5 |
| 1 |
資料庫持久層ORM |
MyBatis3 |
Hibernate3 |
| 2 |
持久化標準 |
無 |
JPA規範 |
| 3 |
交易管理 |
MyBatis機制/Spring事務控制 |
Bitronix,基於JTA交易管理 |
| 4 |
資料庫連接方式 |
Jdbc/DataSource |
Jdbc/DataSource |
| 5 |
支援資料庫 |
Oracle、SQL Server、MySQL等多數資料庫 |
Oracle、SQL Server、MySQL等多數資料庫 |
| 6 |
設計模式 |
Command模式、觀察者模式等 |
|
| 7 |
內部服務通訊 |
Service間通過API調用 |
基於Apache Mina非同步通訊 |
| 8 |
整合介面 |
SOAP、Mule、RESTful |
訊息通訊 |
| 9 |
支援的流程格式 |
BPMN2、xPDL、jPDL等 |
目前僅只支援BPMN2 xml |
| 10 |
引擎核心 |
PVM(流程虛擬機器) |
Drools |
| 11 |
技術前身 |
jBPM3、jBPM4 |
Drools Flow |
| 12 |
所屬公司 |
Alfresco |
jBoss.org |
由於目前還未深入分析,初步設想可能偏向於