基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架構(gòu)建高性能企業(yè)級的部標(biāo)GPS監(jiān)控平臺
開發(fā)企業(yè)級的部標(biāo)GPS監(jiān)控平臺,投入的開發(fā)力量很大,開發(fā)周期也很長,選擇主流的開發(fā)語言以及成熟的開源技術(shù)框架來構(gòu)建基礎(chǔ)平臺,是最恰當(dāng)不過的事情,在設(shè)計之初就避免掉了技術(shù)選型的風(fēng)險,避免以后在開發(fā)過程中,不斷的填坑走彎路,以至于整個團(tuán)隊被坑埋掉。做GPS平臺這么多年,以前就了解到一些開發(fā)團(tuán)隊過于關(guān)注某一種語言的優(yōu)勢,比如過于選用GO,Erlang,python,php等技術(shù),最后團(tuán)隊熟悉這些技術(shù)的關(guān)鍵人員離職了,都沒人接手,不能不說是個悲劇。所以說平臺的技術(shù)架構(gòu)選型要注重的是穩(wěn)健,均衡而不是偏激,而SpringMVC4, Mybatis4, Hibernate4就是GPS監(jiān)控平臺軟件開發(fā)的理想框架選擇。
廢話少說,我們現(xiàn)在構(gòu)建基于BS網(wǎng)頁Web模式的部標(biāo)GPS監(jiān)控平臺,基于主流的J2EE三層模型,主要的技術(shù)選型如下:
1.基礎(chǔ)容器框架 spring4
2.Web框架 Springmvc4
3.ORM實體與關(guān)系數(shù)據(jù)庫映射框架 hibernate4
4.SQL查詢框架 mybatis3
5.單元測試 junit4
6.日志 log4j
7.定時任務(wù)框架Quartz
系統(tǒng)運(yùn)行環(huán)境:tomcat7+ 、JDK7+、MySql 5.7/ SQSERVER2005/Oracle9
GPS監(jiān)控的web平臺對技術(shù)的要求如下:
1.實時監(jiān)控和部標(biāo)808協(xié)議的幾十種終端指令的上傳下達(dá),百度地圖車輛位置監(jiān)控,地圖操作等功能需要頻發(fā)的對服務(wù)器發(fā)送基于ajax的request,返回json數(shù)據(jù),基本上是重度使用ajax請求和Json傳輸。
2.Web服務(wù)器需要應(yīng)對網(wǎng)頁客戶端重度的request請求,性能要求較高,在mvc框架開發(fā)的時候,一定要避免內(nèi)存泄漏,因為在頻繁的request請求調(diào)用之下,小小的內(nèi)存泄漏,會一點一點積累,直至耗掉tomcat的內(nèi)存。
3.安全性上,框架至少要能夠防御CSRF、XSS和SQL注入攻擊
Web框架我們采用sprngMVC4, 主要的考慮如下:
1.全注解環(huán)境,采用springmvc4,替xml配置,避免掉了一大堆的xml配置,對應(yīng)URL的映射和request參數(shù)的映射直接在方法中通過注解配置;
2.spring mvc是基于方法的設(shè)計,controller是單例模式,而sturts是基于類,每次發(fā)一次請求都會實例一個action,每個action都會被注入屬性,而spring基于方法,粒度更細(xì),性能上更高一籌;
3.SpringMVC框架的安全性上要高于struts,詳見百度搜索。
數(shù)據(jù)庫ORM的框架要求如下:
1.能夠比較靈活的適應(yīng)主流的數(shù)據(jù)庫,如mysql, mssqlserver, oracle等,現(xiàn)在的開發(fā)團(tuán)隊和開發(fā)人員在開發(fā)的時候,幾乎沒有人關(guān)注這個問題,基本都是在一個數(shù)據(jù)庫上吊死,而作為一個平臺的開發(fā),為應(yīng)對不同的客戶要求,團(tuán)隊的開發(fā)力量有限,不能一個數(shù)據(jù)庫一個版本,這樣開發(fā)和維護(hù)、升級、測試成本就急速的升高,所以我們追求的是一下幾個原則:
1)不用存儲過程和觸發(fā)器;
很多開發(fā)團(tuán)隊都是重度的存儲過程和觸發(fā)器的使用者,連簡單的查詢分頁都要用存儲過程,一旦開發(fā)人員離職,這些存儲過程和觸發(fā)器都像天書一樣,難以維護(hù),一般我們的代碼都是在SVN基于配置庫進(jìn)行版本管理,而存儲過程和觸發(fā)器卻脫離這些之外,存儲過程和觸發(fā)器如果有bug出現(xiàn)問題,在生產(chǎn)環(huán)境上,很難進(jìn)行跟蹤,web容器的日志記錄只能跟蹤到j(luò)ava代碼級別,剩下就需要DBA來配合了。
2)使用Hibernate4 框架,實體類和數(shù)據(jù)庫的映射都在類和屬性方法上完成;基于Hibernate的配置就可以輕松切換到其他數(shù)據(jù)庫。
3)采用采用Mybatis的物理分頁插件,通過攔截器的方式,在開發(fā)人員編寫的SQL上進(jìn)行攔截,并自動包裝上各個數(shù)據(jù)庫的物理分頁代碼,可以支持多個主流數(shù)據(jù)庫的物理分頁查詢方法。
4)采用mybatis和log4j,可以很方便的打印SQL日志,方便調(diào)試跟蹤。
基于Maven構(gòu)建多模塊項目工程,打造干凈的依賴庫
我們在開發(fā)GPS監(jiān)控平臺的時候,一般都是基于業(yè)務(wù)功能和職責(zé),將業(yè)務(wù)分為多個模塊,各個模塊之間相互獨立,每個模塊可以獨立運(yùn)行或者作為獨立的公共類庫被其他模塊所依賴如Dao、Service等。
實際上一個部標(biāo)GPS監(jiān)控平臺,里面包含了多個業(yè)務(wù)功能模塊,如部標(biāo)808GPS服務(wù)器,web網(wǎng)頁客戶端,809轉(zhuǎn)發(fā)服務(wù)器,移動API,位置服務(wù),計算服務(wù)等等。
由于多個模塊,都需要依賴這些開發(fā)框架,而開源框架又有各自的依賴的jar包,他們的版本搭配非常關(guān)鍵,例如springmvc4用的jackson框架是2.1, springmvc3 用的jackjson框架是1.x版本,你如果搭配錯了,項目運(yùn)行不起來了。再比如spring和mybatis, hibernate之間的無縫結(jié)合,雖然是互相搭配,但你如果用的版本不一致,也會造成項目出錯。未來我們想升級某個框架,比如從spring4升級到spring5,也是不是單純的只升級spring4, 而是要考慮hibernate, mybatis等框架的聯(lián)動升級。
所以采用Maven來提供工程的中央倉庫,所有的子模塊共享一個POM文件,避免各個子模塊各自重復(fù)依賴一大堆jar包。Maven的多模塊其實就是按照層級的管理構(gòu)建,項目包含一個pom.xml文件和若干個模塊,每個模塊有一個單獨的pom.xml文件,通過pom的依賴和繼承關(guān)系來構(gòu)建項目層次。一旦建好以后,就可以終身享用,工作量會大大降低,jar包版本不一致的造成的項目風(fēng)險會大大降低。
而整個項目工程的拷貝復(fù)制就更加簡單,里面不再有大量的jar包,開發(fā)人員只需從配置庫上更新最新的代碼后,配置庫中不再有大量的開源框架jar包,而是從Maven中央倉庫中自動更新。建立工程的時候,直接選擇導(dǎo)入Maven工程,一鍵將所有的模塊導(dǎo)入到新的workspace當(dāng)中,非常方便。
購買GPS平臺或GPS監(jiān)控系統(tǒng)源碼,聯(lián)系我2379423771@qq.com
工程目錄和包命名規(guī)范
我現(xiàn)在根據(jù)Spring的注釋,包的命名,當(dāng)然這首先建立在你對三層架構(gòu)的熟悉上。
com.ltmonitor.jt808.app 808服務(wù)器應(yīng)用程序
com.ltmonitor.jt809.app 808服務(wù)器應(yīng)用程序
com.ltmonitor.web.vo 用于web頁面?zhèn)鬟f的對象
com.ltmonitor.service.vo 用于服務(wù)傳遞的對象
com.ltmonitor.controller MVC中的控制,Spring的注釋@controller
com.ltmonitor.controller.map 地圖表現(xiàn)層
com.ltmonitor.controller.terminalcommand 終端指令
com.ltmonitor.entity 實體類
com.ltmonitor.entity.jt808 專用于808gps服務(wù)器的實體類
com.ltmonitor.entity.jt809 專用于809服務(wù)器的實體類
com.ltmonitor.dao Dao層
com.ltmonitor.servce service層
com.ltmonitor.server gps服務(wù)器層
。。。
。。。。。
。。。。
一下還有很多,就不一一列舉。
Java平臺基于struts2技術(shù)框架的平臺,參見基于Struts+Spring+Hibernate+Ibatis+Quartz+Mina框架構(gòu)建部標(biāo)監(jiān)控平臺
.NET平臺,參見:基于Asp.NET MVC構(gòu)建GPS部標(biāo)平臺
posted on 2016-09-13 08:09 Speed 閱讀(3584) 評論(0) 編輯 收藏 所屬分類: J2EE 、Hibernate & Ibatis 、jt808協(xié)議和java技術(shù)