陳岡
(武漢紡織大學(xué) 管理學(xué)院,湖北 武漢 430073)
隨著網(wǎng)絡(luò)技術(shù)、計(jì)算機(jī)技術(shù)的發(fā)展,越來(lái)越多的中小企業(yè)單位開(kāi)始走上信息化的道路。這些企事業(yè)單位不僅需要外部網(wǎng)站的建設(shè),同時(shí)還有內(nèi)部Web信息管理系統(tǒng)的建設(shè)(例如人力資源管理系統(tǒng)、考勤管理系統(tǒng)等)。根據(jù)國(guó)家工商總局公布的數(shù)據(jù),2005年我國(guó)中小企業(yè)規(guī)模數(shù)量為2 836萬(wàn)家,而網(wǎng)站總數(shù)量?jī)H為69萬(wàn)家;2012年我國(guó)中小企業(yè)規(guī)模猛增到5 175萬(wàn)家,而網(wǎng)站總數(shù)量?jī)H僅為530萬(wàn)家。顯然,企業(yè)內(nèi)外部Web系統(tǒng)數(shù)量遠(yuǎn)遠(yuǎn)低于企業(yè)現(xiàn)有數(shù)量。因此,基于Java跨平臺(tái)特性,Java Web系統(tǒng)具有極大地市場(chǎng)需求和開(kāi)發(fā)潛力。
中小企業(yè)內(nèi)外部Web系統(tǒng)具有一些共性特征:動(dòng)態(tài)、輕量化,例如一般涉及數(shù)據(jù)處理,且數(shù)據(jù)量不是很大、業(yè)務(wù)處理邏輯也不復(fù)雜。其網(wǎng)站常見(jiàn)功能有:?jiǎn)挝唤M織的介紹、產(chǎn)品的介紹、用戶(hù)管理、新聞管理、在線(xiàn)咨詢(xún)或服務(wù)等。而內(nèi)部Web系統(tǒng)的功能側(cè)重于數(shù)據(jù)的查詢(xún)、錄入、更新、刪除等,較少涉及復(fù)雜的數(shù)據(jù)關(guān)聯(lián)處理。
對(duì)于上述輕量化的常規(guī)數(shù)據(jù)處理,研究一種能夠?qū)I(yè)務(wù)邏輯處理自動(dòng)裝配的系統(tǒng)DWAS(Dynamic Web Assembly System),具有良好的現(xiàn)實(shí)意義:(1)避免重復(fù)編寫(xiě)數(shù)據(jù)的增刪查改等操作,自動(dòng)裝配業(yè)務(wù)處理邏輯,提高復(fù)用性,降低開(kāi)發(fā)成本;(2)提供一個(gè)標(biāo)準(zhǔn)化、高質(zhì)量、輕量化的業(yè)務(wù)邏輯處理基礎(chǔ)平臺(tái),降低由于開(kāi)發(fā)人員水平差異帶來(lái)的系統(tǒng)質(zhì)量問(wèn)題;(3)降低Web系統(tǒng)開(kāi)發(fā)門(mén)檻,用戶(hù)只需要進(jìn)行簡(jiǎn)單的系統(tǒng)配置或組裝操作即可完成功能處理要求。
DWAS基于MVC架構(gòu),融合Hibernate、Struts和SpringMVC思想。系統(tǒng)著重基于B/S模式的輕量級(jí)Web系統(tǒng)開(kāi)發(fā)。DWAS能夠自動(dòng)裝配常規(guī)SQL操作,用戶(hù)無(wú)需編寫(xiě)SQL語(yǔ)句。DWAS能夠自動(dòng)裝配組合查詢(xún):對(duì)于多條件的組合查詢(xún)數(shù)據(jù),動(dòng)態(tài)Web自動(dòng)裝配系統(tǒng)能夠自動(dòng)適應(yīng)。系統(tǒng)能夠自適應(yīng)視圖變化:當(dāng)視圖層提交數(shù)據(jù)的形式改變(例如增加或刪除頁(yè)面表單域)時(shí),無(wú)需修改處理邏輯的程序代碼。DWAS支持主流數(shù)據(jù)庫(kù)和連接池產(chǎn)品,其應(yīng)用方式也顯示多樣化特征。DWAS總體架構(gòu)如圖1所示。
來(lái)自于頁(yè)面的業(yè)務(wù)處理請(qǐng)求,先由DWAS的前端控制器接收,然后由控制器工廠自動(dòng)裝配。控制器工廠調(diào)用模型層相應(yīng)的業(yè)務(wù)處理Bean,由后者與數(shù)據(jù)庫(kù)進(jìn)行交互。最后,控制器工廠將處理后并按照要求封裝好的結(jié)果數(shù)據(jù)轉(zhuǎn)發(fā)給最終的結(jié)果頁(yè)面(例如顯示登錄成功的界面)。
圖1 總體架構(gòu)
目前市場(chǎng)上主流的同類(lèi)產(chǎn)品主要有Spring MVC、Struts和Hibernate等。具體比較分析如表1所示。
表1 與同類(lèi)產(chǎn)品的比較
Spring是輕量級(jí)的控制反轉(zhuǎn)和面向切面的開(kāi)源框架,是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建。Spring MVC需要配置過(guò)多的XML文件。Struts是Apache Jakarta項(xiàng)目的一個(gè)頂級(jí)項(xiàng)目,采用了基于Web的MVC模式。Struts的不足在于過(guò)于繁雜的標(biāo)簽體系和大量不太適用的功能。Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù),但對(duì)于批量數(shù)據(jù)的修改刪除操作不太適合。
DWAS汲取了這些產(chǎn)品的優(yōu)點(diǎn),進(jìn)行了設(shè)計(jì)思想上的整合、修正和完善。
DWAS裝配流程如圖2所示。
圖2 裝配流程
系統(tǒng)準(zhǔn)備:JDK、服務(wù)器環(huán)境的配置、數(shù)據(jù)庫(kù)服務(wù)器的安裝、DWAS系統(tǒng)JAR文件的配置等;編寫(xiě)實(shí)體類(lèi)和XML配置文件:與業(yè)務(wù)處理邏輯對(duì)應(yīng)的實(shí)體類(lèi)、描述業(yè)務(wù)處理的標(biāo)識(shí)或SQL語(yǔ)句的XML配置文件;視圖頁(yè)面和運(yùn)行結(jié)果頁(yè)面:前者是業(yè)務(wù)處理請(qǐng)求界面,后者則是反饋執(zhí)行結(jié)果的界面。
對(duì)第①部分的處理,使用一些文本編輯器即可完成,并不需要開(kāi)發(fā)設(shè)計(jì)人員具有較高的開(kāi)發(fā)水平。因此,即使是系統(tǒng)前臺(tái)的設(shè)計(jì)人員稍作培訓(xùn),都可以完成。而第②部分,則由DWAS負(fù)責(zé)自動(dòng)完成。
DWAS的應(yīng)用方式很靈活,既可以將其擴(kuò)展成獨(dú)立的IDE平臺(tái),也可采用插件方式與第三方IDE集成。
為簡(jiǎn)化說(shuō)明,假定這樣的幾個(gè)應(yīng)用場(chǎng)景:學(xué)生信息查詢(xún)(不定條件)、學(xué)生注冊(cè)??疾煸谝晥D發(fā)生變化的情況下,DWAS自適應(yīng)這種變化的處理能力。
對(duì)于不同的應(yīng)用場(chǎng)景,表單域發(fā)生改變時(shí),業(yè)務(wù)處理標(biāo)識(shí)不變,結(jié)果頁(yè)面不變(只需要回傳數(shù)據(jù)到頁(yè)面)。用戶(hù)只需要編寫(xiě)XML配置描述,指定Bean、動(dòng)作標(biāo)識(shí)、處理成功(失敗)轉(zhuǎn)發(fā)頁(yè)面、返回?cái)?shù)據(jù)屬性名,DWAS即可實(shí)現(xiàn)自適應(yīng)視圖變化的處理,而無(wú)需修改后臺(tái)業(yè)務(wù)處理代碼。當(dāng)應(yīng)用場(chǎng)景僅僅是表單域發(fā)生改變時(shí)(例如應(yīng)用場(chǎng)景從根據(jù)“姓名”查詢(xún)變更為根據(jù)“姓名、班級(jí)”查詢(xún)),業(yè)務(wù)處理的本質(zhì)(學(xué)生基本信息的查詢(xún))并未發(fā)生改變,因此采用相同的業(yè)務(wù)處理標(biāo)識(shí)。至于結(jié)果頁(yè)面,從圖1可以看到,控制器工廠將封裝后的處理結(jié)果數(shù)據(jù)轉(zhuǎn)發(fā)給最終結(jié)果頁(yè)面,后者只是顯示傳送過(guò)來(lái)的數(shù)據(jù)包而已,因此結(jié)果頁(yè)面不與表單域嚴(yán)密耦合。而“學(xué)生注冊(cè)”這種應(yīng)用場(chǎng)景,由于屬于另外一種業(yè)務(wù)處理,因此采用不同的業(yè)務(wù)處理標(biāo)識(shí)。具體如表2、表3所示。
表2 場(chǎng)景說(shuō)明
表3 XML描述
無(wú)論是業(yè)務(wù)處理標(biāo)識(shí),還是XML描述,使用外部文本編輯器即可進(jìn)行編輯,其形式的改變并不會(huì)影響DWAS內(nèi)部處理代碼,因而視圖形式與內(nèi)在邏輯實(shí)現(xiàn)了良好解耦。
DWAS要獲取請(qǐng)求數(shù)據(jù)的鍵值對(duì),代碼如下。protected Map<String,String[]>getRequestDataMap(){
DWAS系統(tǒng)著重關(guān)注業(yè)務(wù)處理的本質(zhì),并將用戶(hù)請(qǐng)求形式的外在改變與業(yè)務(wù)處理的本質(zhì)特征統(tǒng)一起來(lái),從而實(shí)現(xiàn)系統(tǒng)處理的優(yōu)化。從實(shí)踐應(yīng)用情況來(lái)看,得到了用戶(hù)和開(kāi)發(fā)人員的肯定,效果良好。
[1]OSGi Alliance corporation.OSGi Technology[EB/OL].http://www.osgi.org/osgi_technology/index.asp section=2.
[2]Announcing the ADVANCED ENCRYPTION STANDARD(AES).Federal information processing standards publication 197[C].United States National Institute of Standards and Technology(NIST), 2001.
[3]陳岡.Java開(kāi)發(fā)入行真功夫[M].北京:電子工業(yè)出版社,2009.
[4]于慶梅.OSGi平臺(tái)服務(wù)動(dòng)態(tài)更新的發(fā)布/訂閱策略[J].計(jì)算機(jī)應(yīng)用與軟件,2012(6):17-32.
[5]黃晗.基于R-OSGi的平臺(tái)容錯(cuò)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2013(9):66-73.
[6]龍軍,趙貴虎,張祖平.一種支持動(dòng)態(tài)管理的SCA服務(wù)模型研究[J].計(jì)算機(jī)科學(xué),2012(12):114-117.
[7]張語(yǔ)涵,劉淑華,周永鑫.Java Web應(yīng)用中錯(cuò)誤和異常處理方法研究[J].現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2013(23):61-64.
[8]張耀民.SSH框架在Web項(xiàng)目開(kāi)發(fā)中的構(gòu)建和應(yīng)用實(shí)踐[J].微型機(jī)與應(yīng)用,2013(15):18-21.
[9]司飆.MVC模式下的考試系統(tǒng)建模研究[J].計(jì)算機(jī)科學(xué),2013(S1):403-406.
[10]張?jiān)?,張昭,劉?基于MVC設(shè)計(jì)模式的虛擬實(shí)驗(yàn)平臺(tái)模塊化設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2013(8):125-129.
[11]梁?jiǎn)T寧,陳喆,謝立軍.Web服務(wù)組合的可靠性動(dòng)態(tài)評(píng)估模型[J].計(jì)算機(jī)應(yīng)用研究,2012(3):955-960.
[12]劉淑華.J2EE項(xiàng)目中一種新的錯(cuò)誤處理方法[J].計(jì)算機(jī)應(yīng)用與軟件,2013(7):143-145.
[13]黃永慧,陳程凱.HTML5在移動(dòng)應(yīng)用開(kāi)發(fā)上的應(yīng)用前景[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013(7):207-210.
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2014年13期