一個實際項目Java架構設計之總體設計__java

來源:互聯網
上載者:User
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

由於目前還未深入分析,初步設想可能偏向於Activiti5,因為它更好的與當前架構整合

  5      Data IntegrationETL工具

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,資料幫浦高效穩定。Kettle 中文名稱叫水壺,該項目的主程式員MATT 希望把各種資料放到一個壺裡,然後以一種指定的格式流出。Kettle採用了LGPL協議,即修改後的程式可以不公開發布,可以放心的使用,而不用考慮著作權問題。

  6      通用基礎模組/組件方案 6.1   日誌組件

l  採用J2EE平台最常用的Log4J日誌組件 6.2   Cache組件

l  前期使用單台應用伺服器的時候可以直接使用Mybatis內建緩衝機制或者是伺服器緩衝開發;

l  後期根據實際運營情況,要使用叢集部署方式時,使用Memcached組成分布式叢集緩衝,這樣就不存在緩衝同步的問題。

l  通過Spring的AOP結合Memchched將緩衝功能嵌入到代碼中,根據實際的業務情境,制定緩衝策略。


---------------------------------------2017-11-26更新----------------------------------------------------


 7 源碼下載 這段時間非常感謝大家的關注,有很多同行看了部落格想下載源碼,我也統一回複過幾次郵件,索性在這裡公布下載地址,大家可以直接用百度網盤下載,另外架構日新月異,建議大家可以學習一下當前更成熟和全面的架構,如jeesite、jeecg等,本部落格範例程式碼地址:http://pan.baidu.com/s/1minAVmo ,提取碼: m8gs 下載壓縮包,解壓後檔案夾說明如下:

註:所有資料僅做學習參考使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.