1. 程式人生 > >一個實際專案Java架構設計之總體設計

一個實際專案Java架構設計之總體設計

1      總體架構模組圖

1.1   抽象架構模組圖

 

1.2   具體技術架構模組圖

如上圖示所,框架主要包括了:

l  MVC開發框架

l  工作流技術

l  使用者、許可權、角色管理

下面分別詳細介紹。

2      MVC方案

2.1   檢視層技術方案(view

在常用開發框架的應用中,常用於檢視層的有:Jsp ,JsfFreemarkerXslt, 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功能更加強大,對錶現邏輯和業務邏輯的劃分更加嚴格,可自定義macroFreemarker同時支援JSP的標籤。Freemarker對於語法相對比較嚴格,變數必須賦值,mapkey必須為string

基於以上分析,結合開發效率和執行效率,建議採用Freemarker作為檢視層的技術。

2.2   控制層方案(controller

在常用的控制層技術中,有struct1struct2springMVC等。

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元件:HibernateMyBatis

l  Hibernate學習門檻比較高,限制物件模型,在多表、複雜查詢下,優化難度較高。對於後期的維護或者重構來說,難度較大。

l  MyBatis屬於半ORM框架,可以對sql做到精細控制,但是開發效率來講,比hibernate相對慢些,但是利於後期的維護於重構。

從靈活性、可控性、學習成本和本人熟悉程度考慮,配合使用codeSmith程式碼生器能大幅提高開發效率,建議採用MyBatis,作為專案的ORM框架。

2.4   資料庫(database

可能被採用的資料庫OracleMySQL,使用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      工作流方案

可以選擇的技術主要有:JBPM4JBPM5Activiti5

序號

技術組成

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      資料整合ETL工具

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

6      通用基礎模組/元件方案

6.1   日誌元件

l  採用J2EE平臺最常用的Log4J日誌元件

6.2   Cache元件

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

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

l  通過SpringAOP結合Memchched將快取功能嵌入到程式碼中,根據實際的業務場景,制定快取策略。

相關推薦

一個實際專案Java架構設計總體設計

1      總體架構模組圖 1.1   抽象架構模組圖   1.2   具體技術架構模組圖 如上圖示所,框架主要包括了: l  MVC開發框架 l  工作流技術 l  使用者、許可權、角色管理 下面分別詳細介紹。 2      MVC方案 2.1   檢視層技術方案(view) 在

JAVA架構路----maven001---何為Maven

maven本人犯了猴子掰玉米的錯誤;現在從頭開始:成功=可行的計劃+執行力何為Maven?答:1>關鍵字:構建、依賴、項目信息、解決方案/gav、誇平臺、開源/apache、分布式開發集群式部署、本地倉庫、遠程倉庫、中央倉庫、私服/nexus、插件;2>2個url:http://mvnreposi

JAVA 圖形開發計算器設計(事件監聽機制)

oncommand image 事件監聽 str one 創建 dac orm mat /*文章中用到的代碼只是一部分,需要源碼的可通過郵箱聯系我 [email protected]*/ 前段時間剛幫同學用MFC寫了個計算器,現在學到JAVA的圖形開發,就試著水了一個計算器

java執行緒Latch設計模式見解

CountDownLatch :(個人理解)使用閥門值,直到閥門值為0之前,一直阻塞執行緒。實則使用物件鎖,不釋放物件鎖,一直佔用資源,(這裡是一個缺點)。閥門值為0時,呼叫釋放物件鎖的方法,釋放資源。應用的場景,我覺得是需要一些執行緒先完成的前提下,再使用其他執行緒。也就是我就是要一些重要的執行緒

Java——Web開發MVC設計模式的學生資訊管理系統(二)

為什麼這個標題為“(二)”,其實是對於上一個特別簡單學生資訊管理系統裡功能的完善。 所謂的“(一)”在這:學生資訊管理系統(一) 系統實現的功能: 實現新增學生 顯示查詢到的學生 刪除學生 更新學生資訊 模糊查詢符合相關資訊的學生

網站專案開發要點---一個實際專案開發心得

1.顯示需要選擇的資料時,一定先要此資料是否為海量資料.例如:選擇下拉框中加100條記錄.你的使用者不罵死你.2.儘量不要限制使用者的輸入內容.對輸入內容進行驗證(正則表示式)分割及處理返回為空的項(String.split(new String[]{' ',';'},StringSplitOptions.R

Java架構旅(五)

夜光序言: 世人辱亦棄你 餘他信亦護你 便值重踏塵泥。       正文:Java高併發場景的資料隔離方案  

Java架構旅(四)

夜光序言: 畫工須畫雲中龍,為人須為人中雄~~         正文:Java分散式Session專案處理方案 如果我們用eclipse就需要安裝STS外掛,這個有很多配置方法嗯~ 提供一種方案:H

Java架構旅(三)

夜光序言: 最痛苦的是,消失了的東西,它就永遠的不見了,永遠都不會再回來,卻偏還要留下一根細而尖的針,一直插在你心頭,一直拔不去,它想讓你疼,你就得疼     正文:JAVATomcat企業級學習 搞清楚tomcat架構/ 具體的處理流程~~

Java架構旅(二)

夜光序言: 裝逼是什麼,就是看見野花不摘,欣賞;什麼是衝動,就是見花就摘,然後沒地擱;男人是什麼,那是眼睛裡根本就沒有野花,全是果~         正文:Java企業級高併發  

Java架構旅(一)

夜光序言:   如果世界和你,都掉進了河裡,我一定先救你,然後忘記世界的呼吸~       正文: MVC框架的演變   我們安裝這個外掛解決沒有tomcat的問題,因為targ

Java架構

Java架構師之旅一:MVC框架的演變 Java架構師之旅二:Java企業級高併發 Java架構師之旅三:JAVATomcat企業級學習 Java架構師之旅四:Java分散式Session專案處理方案 Java架構師之旅五:Java高併發場景的資料隔離方案 Java架構師之旅六:

使用eclipse建立第一個web專案(java)

環境:win10 64位、eclipse(已安裝tomcat外掛)、tomcat 6.0.45 時間:2016年9月10日 19:10:09 一、 建立java-tomcat project 在eclipse裡依次選擇File ->  New -> Other 

(一)我的畢業設計總體概述篇

        經過兩個月的開發,我的畢業設計-《校園網溝通平臺》終於基本開發完成了,感到非常高興,但由於時間緊迫,還要趕著寫論文,所以肯定存在很多bug,希望大家多給點建議,同時歡迎使用校園網的同學幫手執行測試,先謝謝了。  技術簡介:我的設計是基於SOA架構的,主要採用微

JAVA架構路-視訊學習

https://pan.baidu.com/s/1GK-HNdG_HsNTb_QQ6_L3Tg 目錄: 第一套 JAVA高階架構師之旅     第2套 Java網際網路架構師netty、mina、nio 第三套 阿里開源Dubbo

2019最新 高階JAVA架構路教程

課程目錄:01.Svn版本管理與程式碼上線架構方案03.深入JVM核心—原理、診斷與優化04.基於Netty的RPC架構實戰演練05.Git分散式版本控制系統權威指南06.Redis從入門到精通、叢集與應用07.大資料Hadoop Storm Hive等系列教程08.淘淘商城實戰高併發分散式專案(有

我來教你如何成為一個優秀的Java架構師?

最近好多人問我,問該怎樣才能成為一個架構師,還有一些人對自己當前的狀態感到迷茫。 我也瞭解到一些人的需求,所以今天就跟你們好好嘮一下,以解你們的小鬱悶~ 有什麼想和我說的,都可以和我留言互動啊!  當前的你感到迷茫? 有很多人對現在的工作感到很沒意思,因為當前的工作,完全是實現業務,技術上沒有任何提高。在這

Java架構效能調優

一個用Java寫的GUI程式,作用是分析日誌, 它會將一定數量的格式相同的文字日誌檔案讀入記憶體分析處理,然後將結果合併輸出。 檔案數量幾十個,檔案大小几KB, 日誌記錄幾千條左右, 此工具可以流暢處理, 輕鬆滿足需求。 然而, 因為記錄日誌的方案調整,

從普通JAVA程式設計師到阿里架構師,他用了六年 JAVA架構演變

工作年限:8 年服務公司:4 家(含四大門戶中的兩家)最近職業:Java 架構師職場關鍵詞:社交平臺、高併發系統架構設計、技術團隊管理、多款從零到一的產品城市! 六年間,這位職人呆過四大門戶中的兩家,完成了工程師到架構師的蛻變。經手多款從零到一產品的開發和增長,也經歷國內最大社交平臺億級流量和使用者的架構設

java架構路:JAVA程式設計師必看的15本書的電子版下載地址

作為Java程式設計師來說,最痛苦的事情莫過於可以選擇的範圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術書籍中挑選出來一些,按照學習的先後順序,推薦給大家,特別是那些想不斷提高自己技術水平的Java程式設計師們。以下書籍電子版下載地址:http://u.i