【摘要】基于現(xiàn)有框架的應(yīng)用思想,結(jié)合項(xiàng)目開發(fā)的實(shí)際情況,在最佳實(shí)踐思想的指導(dǎo)下實(shí)現(xiàn)一個(gè)基于Java EE的自定義框架SRCI,此框架的主要目的是規(guī)范開發(fā)流程以及提高開發(fā)工作效率。本文主要介紹了該框架的的構(gòu)建背景、架構(gòu)設(shè)計(jì)。該框架能簡單高效地實(shí)現(xiàn)對數(shù)據(jù)庫的操作且性能優(yōu)良。
【關(guān)鍵詞】Java EE;最佳實(shí)踐;SRCI
1、引言
基于JavaEE平臺(tái)的框架設(shè)計(jì)對軟件開發(fā)的效率以及質(zhì)量起著決定性的作用,框架不是一個(gè)具備可運(yùn)行特征的系統(tǒng),它只是軟件的一個(gè)半成品,但框架的優(yōu)良直接影響著軟件的質(zhì)量,如何設(shè)計(jì)出一個(gè)優(yōu)秀的框架一直是各大軟件公司追逐的熱點(diǎn)。
SRCI(standard, rhythm,cooperation, interchangeable)同樣也不是一個(gè)可以即時(shí)看見和運(yùn)行的應(yīng)用系統(tǒng),構(gòu)建于Java EE之上的應(yīng)用系統(tǒng)定義了一個(gè)固定而有效的設(shè)計(jì)開發(fā)框架,簡化Java EE應(yīng)用。SRCI定義了一系列流程,比如對如何處理HTTP請求、事務(wù)控制,以及一些輔助功能,比如文件上傳、數(shù)據(jù)校驗(yàn)、消息管理、日志功能等。SRCI的目的在于為開發(fā)人員提供一個(gè)填空式的開發(fā)框架。讓開發(fā)人員在SRCI架構(gòu)下,只需關(guān)注編寫和具體業(yè)務(wù)邏輯相關(guān)的程序,而將業(yè)務(wù)無關(guān)的需求交給SRCI來完成。
2、SRCI概況
2.1SRCI的設(shè)計(jì)目標(biāo)
SRCI框架的設(shè)計(jì)目標(biāo)是使程序員在一定的應(yīng)用范圍內(nèi)可以完全脫離與數(shù)據(jù)庫操作相關(guān)的面向關(guān)系編程。SRCI框架是基于各層次構(gòu)件融合的平臺(tái),它的優(yōu)勢能在開發(fā)時(shí)得到很好的體現(xiàn)。比如能使開發(fā)人員更好地協(xié)作與并行開發(fā)。SRCI框架仍然是一個(gè)經(jīng)典的MVC模型的框架,但它層次更加明顯,而且借助了OOM思想,使對數(shù)據(jù)庫的操作轉(zhuǎn)移到對象上。
2.2SRCI的設(shè)計(jì)原則
SRCI的設(shè)計(jì)原則是簡化開發(fā)流程、統(tǒng)一開發(fā)規(guī)范,使得開發(fā)人員在規(guī)范的指導(dǎo)下高效地進(jìn)行開發(fā)。在SRCI的設(shè)計(jì)當(dāng)中確保每個(gè)組件的重用性,確保SRCI能提供最優(yōu)的性能。在利用SRCI進(jìn)行開發(fā)時(shí)也需要遵循一些原則,例如命名原則等。
3、SRCI的實(shí)現(xiàn)
3.1SRCI的框架設(shè)計(jì)
SRCI框架的設(shè)計(jì)分為四層,分別是Web層、業(yè)務(wù)層、DAO層以及SRCI輔助層。
Web層:按照邏輯應(yīng)用,使用手動(dòng)裝配的方式,實(shí)例化一個(gè)對應(yīng)的Service對象,通過調(diào)用其方法將DTO對象發(fā)送到了業(yè)務(wù)層,同時(shí)Web層還有對jsp的解析功能,這借助于Web容器的jsp parser,對于顯示結(jié)果頁面的技術(shù)可以使用JSTL。
業(yè)務(wù)層:業(yè)務(wù)層是整個(gè)應(yīng)用系統(tǒng)中可重用的組件,具體的業(yè)務(wù)邏輯仍然是原始Java類(POJO)來完成,使業(yè)務(wù)邏輯達(dá)到重用的目的。在POJO當(dāng)中進(jìn)行業(yè)務(wù)處理,具體做什么由需求而定。在業(yè)務(wù)層當(dāng)中使用了Spring的依賴注入技術(shù),通過配置ApplicationContext.xml文件對DAO類的對象進(jìn)行簡單的屬性注入,從而避免了人為地去進(jìn)行實(shí)例化操作,這種方式大大提高了程序的擴(kuò)展性。
DAO層:DAO是數(shù)據(jù)訪問對象(Data Access Object)的簡稱。SRCI提供了兩個(gè)組件用于資源集成:一是用于和數(shù)據(jù)庫交互,二是用于訪問外部系統(tǒng)。在操作數(shù)據(jù)庫的組件DAO中,重新定義了數(shù)據(jù)庫的操作方式,這種方式類似于流行開源框架iBatis。首先配置了一個(gè)XML文件,規(guī)范命名為數(shù)據(jù)庫表名作文件名。在這個(gè)文件當(dāng)中將數(shù)據(jù)庫的源信息按照良好的結(jié)構(gòu)進(jìn)行配置,再借助SRCI的輔助類對XML文件進(jìn)行解析,獲取列信息,過程名,函數(shù)名。根據(jù)命名規(guī)則將對象與列對應(yīng)起來,根據(jù)業(yè)務(wù)操作類型構(gòu)造出所需的SQL語句,這里需要借助JDOM解析XML提供了多種SQL語句的拼接方式。這樣便可以使得對數(shù)據(jù)庫的操作不需要書寫一條SQL語句。
SRCI輔助層:這一個(gè)的定義是為了規(guī)范開發(fā)過程,減少開發(fā)人員編寫與業(yè)務(wù)無關(guān)代碼的時(shí)間。例如對系統(tǒng)可能產(chǎn)生的異常進(jìn)行預(yù)先定義,對Log4j進(jìn)行封裝從而方便實(shí)現(xiàn)日志記錄,對數(shù)據(jù)描述文件的XML解析等等。
以上是整個(gè)SRCI的結(jié)構(gòu),這樣的結(jié)構(gòu)能清晰定義各層次功能,方便開發(fā)人員進(jìn)行協(xié)作開發(fā),它的主要作用是規(guī)范開發(fā)流程,簡化開發(fā)任務(wù)。圖1是SRCI的軟件結(jié)構(gòu)圖。
3.2 SRCI工作流程及規(guī)范
3.2.1最佳實(shí)踐方法
1、一次讀取/加載
2、二次封裝/驗(yàn)證
3、三次更新
在數(shù)據(jù)封裝之后,操作之前,將已驗(yàn)證的數(shù)據(jù)與結(jié)構(gòu)類進(jìn)行同步,達(dá)到實(shí)時(shí)更新的效果。
4、四次操作/入庫
在封裝完數(shù)據(jù)之后,根據(jù)界面?zhèn)鱽淼牟僮黝愋托畔⑦M(jìn)行判斷、調(diào)用不同的操作類方法。調(diào)用完操作類方法后便能對數(shù)據(jù)庫進(jìn)行增、刪、改操作。
3.2.2XML文件的編寫規(guī)范
3.2.3編程規(guī)范
1、基于XML的語義協(xié)議規(guī)范
名字與數(shù)據(jù)庫表名一致,放在WebRoot/config目錄下,其中每一條SQL語句應(yīng)該通過測試并與服務(wù)類的編寫人員交流。
結(jié)構(gòu)類命名:
名稱=數(shù)據(jù)庫表名+“_XML”變量名與數(shù)據(jù)庫字段名保持一致,每個(gè)方法按規(guī)范寫出注釋,刪除用于測試的語句。
2、視圖JSP組件規(guī)范
放在website/science/science_second。
命名:小寫數(shù)據(jù)庫表名(列表),小寫數(shù)據(jù)庫表名+add(增加)、小寫數(shù)據(jù)庫表名+delete(刪除)、小寫數(shù)據(jù)庫表名+modify(修改)、小寫數(shù)據(jù)庫表名+view(查看)、Form表單的name/id=小寫數(shù)據(jù)庫表名+ list/modify/add等。提交到:數(shù)據(jù)庫表名.do,其中的控件根據(jù)相應(yīng)的字段名,規(guī)范成小寫列表序號(hào)即循環(huán)中的“i”用idnum表示,操作類型 name 為oper不顯示的參數(shù)傳遞一到用隱藏域引入相應(yīng)的三個(gè)類(結(jié)構(gòu)類,操作類,服務(wù)類),不管是否用到。個(gè)性的業(yè)務(wù)或命名用注釋標(biāo)明,界面上不顯示的字段,idnum,oper都得傳給服務(wù)類(約定)。
服務(wù)類命名:
名字:數(shù)據(jù)庫表名+“SERVICE”,每個(gè)方法都需要用注釋說明,個(gè)性的業(yè)務(wù)需要特別標(biāo)明,刪除用于測試的語句,tostr字符串用“小寫數(shù)據(jù)庫表名”+delete/modify/add+success/fail表示,正確配置Struts—config.xml并給出注釋。
3、SRCI架構(gòu)設(shè)計(jì)
4、結(jié)論
本文介紹的SRCI框架就是一個(gè)基于Java EE與最佳實(shí)踐的多系統(tǒng)(組件)集成通用平臺(tái),它并沒有引入什么特殊的新技術(shù),它只是將軟件先驅(qū)們的一些寶貴經(jīng)驗(yàn)與過去的一些總結(jié)統(tǒng)一起來,形成的一種最佳實(shí)踐,它使可以高效清晰地的進(jìn)行項(xiàng)目開發(fā)。曾做過統(tǒng)計(jì),利用SRCI與原來的開發(fā)框架開發(fā)同一個(gè)需求,前者所需要的時(shí)間是后者的一半,而且程序出錯(cuò)的概率也減小了,極大提高了開發(fā)效率和保障質(zhì)量。由于SRCI架構(gòu)體現(xiàn)的是協(xié)作的價(jià)值觀,所以SRCI能很好地與敏捷開發(fā)配合使用。SRCI的主要優(yōu)點(diǎn)在于能夠提高團(tuán)隊(duì)工作效率,克服現(xiàn)有框架對技術(shù)人員要求高、數(shù)據(jù)吞吐率低等方面的缺陷、并能夠在項(xiàng)目開發(fā)中提高開發(fā)團(tuán)隊(duì)素質(zhì)。
SRCI框架可以應(yīng)用在任何一個(gè)JavaEE的平臺(tái)開發(fā)上,例如長足寄蠅生物信息綜合數(shù)據(jù)庫(TCBIDB)系統(tǒng)、高校工資綜合管理平臺(tái)和高校教務(wù)門戶及成績查詢系統(tǒng)開發(fā),均達(dá)到了提高效率、降低測試代價(jià)、保障管理目標(biāo)的實(shí)現(xiàn)目的。