摘 要:Android應(yīng)用框架是現(xiàn)代新型應(yīng)用框架技術(shù)運(yùn)用和發(fā)展的典范,它通過(guò)面向應(yīng)用進(jìn)行自頂向下的整體設(shè)計(jì)、使用細(xì)膩的抽象和衍生方法、利用基于框架的反向溝通(Ioc)技術(shù)使開(kāi)發(fā)者能夠基于該框架進(jìn)行輕松及快速的新應(yīng)用實(shí)現(xiàn)。本文通過(guò)對(duì)Android應(yīng)用框架原理的分析,對(duì)云南工商學(xué)院現(xiàn)有的Web系統(tǒng)開(kāi)發(fā)平臺(tái)框架實(shí)施改進(jìn)和升級(jí),以實(shí)現(xiàn)基于該平臺(tái)的新系統(tǒng)的開(kāi)發(fā)效率和質(zhì)量效能的升級(jí)。
關(guān)鍵詞:Android應(yīng)用框架;Web系統(tǒng)開(kāi)發(fā)平臺(tái);框架改造;敏捷開(kāi)發(fā)
中圖分類號(hào):TP311
1 云南工商學(xué)院學(xué)生管理系統(tǒng)綜合平臺(tái)技術(shù)現(xiàn)狀以及所遇到的問(wèn)題和瓶頸
云南工商學(xué)院學(xué)生管理系統(tǒng)綜合平臺(tái)是一個(gè)包含了學(xué)校的門戶網(wǎng)站、畢業(yè)設(shè)計(jì)管理、課程建設(shè)管理,學(xué)生操行管理等子系統(tǒng)的基于ASP.NET技術(shù)的Web應(yīng)用平臺(tái)。為了能在這個(gè)平臺(tái)上基于學(xué)校迅速增長(zhǎng)的需求快速開(kāi)發(fā)出高質(zhì)量的應(yīng)用系統(tǒng),同時(shí)又能保證各個(gè)系統(tǒng)擁有較好的擴(kuò)展性和可維護(hù)性,平臺(tái)使用了時(shí)下較為簡(jiǎn)單、流行和成熟的多層框架技術(shù)。該框架技術(shù)下,平臺(tái)將應(yīng)用系統(tǒng)在層次結(jié)構(gòu)上粗分為應(yīng)用層、業(yè)務(wù)層、數(shù)據(jù)層,在應(yīng)用層上使用的是.NET框架下的頁(yè)面與代碼分離的框架結(jié)構(gòu),而在業(yè)務(wù)層中則按照代碼的復(fù)用性范圍實(shí)現(xiàn)了自底向上的層次化框架設(shè)計(jì):(1)數(shù)據(jù)庫(kù)訪問(wèn)基類DBHelper,提供數(shù)據(jù)庫(kù)操作的基本通用方法,可以利用SQL參數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接和增、刪、改、查等操作。(2)表基本操作類:以XXXDal命名,依賴于DBHelper類,提供對(duì)具體表中數(shù)據(jù)的增、刪、改、查的基礎(chǔ)操作。(3)表業(yè)務(wù)類、以XXXBll命名,依賴于對(duì)應(yīng)表的Dal類,提供對(duì)具體表的各種業(yè)務(wù)邏輯方法。各層次間代碼自頂向下,使用對(duì)象方式調(diào)用。該結(jié)構(gòu)的優(yōu)點(diǎn)在于層次分明,程序關(guān)系清晰,能實(shí)現(xiàn)一定程度的代碼復(fù)用率,且簡(jiǎn)單的框架結(jié)構(gòu)利于程序員學(xué)習(xí)和掌握。
圖1 當(dāng)前業(yè)務(wù)層架構(gòu)的特點(diǎn)
2 業(yè)務(wù)層框架在敏捷開(kāi)發(fā)中所遇到的問(wèn)題和瓶頸
然而隨著基于這個(gè)平臺(tái)所開(kāi)發(fā)的系統(tǒng)越多越復(fù)雜,需要實(shí)現(xiàn)業(yè)務(wù)的數(shù)據(jù)表也成呈幾倍速度增長(zhǎng)。雖然各表的Dal類由于相異內(nèi)容為表操作的SQL及其參數(shù)無(wú)法實(shí)現(xiàn)一個(gè)一致性通用Dal類,但是其對(duì)應(yīng)的 Bll類由于使用向下的對(duì)象復(fù)用模式,其中大量的業(yè)務(wù)邏輯、數(shù)據(jù)轉(zhuǎn)換和提示在各個(gè)Dal中不斷重復(fù)使用,這就造成了:(1)業(yè)務(wù)邏輯代碼重復(fù)性大、程序開(kāi)發(fā)枯燥;(2)各表的業(yè)務(wù)邏輯難以實(shí)現(xiàn)操作和提示的一致性;(3)程序質(zhì)量參差不齊,難以實(shí)現(xiàn)程序質(zhì)量的標(biāo)準(zhǔn)化控制。因此需要對(duì)其現(xiàn)有框架要求進(jìn)行改造。
3 業(yè)務(wù)層框架開(kāi)發(fā)低效能的缺陷分析
我們通過(guò)兩個(gè)方向來(lái)觀察和分析當(dāng)前業(yè)務(wù)層框架的程序復(fù)用和程序間關(guān)系的特點(diǎn):此框架的程序復(fù)用使用的是對(duì)象作為成員的代碼復(fù)用方式,如圖2。這種復(fù)用方式的特點(diǎn)是類設(shè)計(jì)的順序總是基于自底向上,設(shè)計(jì)的核心在于當(dāng)前類如何向引用類提供普遍性的方法復(fù)用,雖然在層次結(jié)構(gòu)上非常清晰,但是卻容易造成最上層類實(shí)現(xiàn)業(yè)務(wù)邏輯時(shí)代碼的冗余性,當(dāng)然,由于每個(gè)業(yè)務(wù)邏輯類需要使用的Dal類和表實(shí)體類都不同,從而也就造成了Bll類中各方法中包含有對(duì)不同Dal類和實(shí)體類的調(diào)用和處理方法,導(dǎo)致Bll類不易于實(shí)現(xiàn)如DBHelper和Dal類這樣的通用化和高內(nèi)聚的代碼復(fù)用方式的實(shí)現(xiàn)了。
圖2 Bll類的業(yè)務(wù)方法示例
4 基于Android平臺(tái)應(yīng)用框架的特點(diǎn)分析
Android平臺(tái)的應(yīng)用框架是近幾年業(yè)界非常推崇的一個(gè)高校新型框架體系,它能夠讓程序愛(ài)好者輕松基于該框架快速開(kāi)發(fā)出基于Android的應(yīng)用軟件。其框架的優(yōu)點(diǎn)在于:
4.1 完善和成熟的應(yīng)用框架設(shè)計(jì),為所有Android應(yīng)用提供了涵蓋基本軟、硬件需求和功能提供的一般形式,使應(yīng)用程序能夠基于框架自動(dòng)獲得移動(dòng)設(shè)備上的軟、硬組件和Android API的支持。
4.2 框架大量運(yùn)用細(xì)膩的抽象和衍生方法,通過(guò)自頂向下的設(shè)計(jì)方式為用戶應(yīng)用設(shè)計(jì)并提供業(yè)務(wù)設(shè)計(jì)的共享形式,該形式很好的使用類、接口、抽象類、上轉(zhuǎn)類型對(duì)象技術(shù)使利用框架將用戶應(yīng)用中“相同”和“相異”部分進(jìn)行完美分離,使Android應(yīng)用的開(kāi)發(fā)者能更加專注于開(kāi)發(fā)應(yīng)用的“相異”內(nèi)容的設(shè)計(jì)和實(shí)現(xiàn)。
4.3 框架運(yùn)用大量的反向溝通機(jī)制,即IoC(Inversion Control),將未來(lái)應(yīng)用的“相異”部分交由開(kāi)發(fā)者在子類中繼承實(shí)現(xiàn),而框架此時(shí)將作為主控者將子類中的“相異”部分納入到框架中作為應(yīng)用特點(diǎn)進(jìn)行補(bǔ)充,這使得應(yīng)用開(kāi)發(fā)者不必關(guān)心“相異”部分的實(shí)現(xiàn)代碼在新應(yīng)用中的兼容問(wèn)題。進(jìn)一步分析Android應(yīng)用框架的設(shè)計(jì)原理。如圖3,可以分為四個(gè)階段:
階段一:將架構(gòu)中的相同部分抽象出來(lái),以類的結(jié)構(gòu)實(shí)現(xiàn)相同一般形式的共享。
階段二:對(duì)相異部分也抽象出來(lái),利用接口的抽象方法提供相異內(nèi)容的一般描述。
階段三:通過(guò)對(duì)接口的衍生,由子類提供相異部分的個(gè)別實(shí)現(xiàn)
階段四:在框架中利用上轉(zhuǎn)類型對(duì)象實(shí)現(xiàn)子類中“相異”部分實(shí)現(xiàn)代碼的引用,納入到框架中運(yùn)行。
5 基于Android應(yīng)用框架技術(shù)的學(xué)校WEB應(yīng)用平臺(tái)業(yè)務(wù)層框架的修改
5.1 為新應(yīng)用框架定義業(yè)務(wù)層各層內(nèi)容的一般形式,包括:
Model層:定義IModel接口實(shí)現(xiàn)實(shí)體類型的共享形式,該接口定義每個(gè)實(shí)體類型都需要為數(shù)據(jù)訪問(wèn)提供的數(shù)據(jù)的方法的一般描述,其子類除需要定義實(shí)體屬性和方法的個(gè)體內(nèi)容外,其一般描述的共享方法也由它的子類來(lái)是實(shí)現(xiàn)提供的具體內(nèi)容。
Dal層:實(shí)現(xiàn)IDal標(biāo)準(zhǔn)表數(shù)據(jù)訪問(wèn)類接口,抽象并概括出每張表所使用的數(shù)據(jù)訪問(wèn)方法,主要用于為AbsBll類提供對(duì)Dal類的共享形式。
Bll層:實(shí)現(xiàn)Bll類的共享一般形式AbsBll類,由于同時(shí)擁有了IModel和IDal接口,可以輕松讓我實(shí)現(xiàn)Bll類對(duì)不同實(shí)體類型和Dal數(shù)據(jù)訪問(wèn)類的一般共享形式。而對(duì)于基于不同實(shí)體類中屬性處理的相異部分,則定義抽象處理方法trnasDTToList(),讓其子類來(lái)進(jìn)行提供即可。
5.2 實(shí)現(xiàn)業(yè)務(wù)層新應(yīng)用框架的整合,如圖7。在框架中開(kāi)發(fā)者通過(guò)IModel接口基于不同的表創(chuàng)建實(shí)體子類,如College和Student。通過(guò)IDal接口創(chuàng)建各表的Dal類,如CollegeDal和StudentDal類?;贏bsBll抽象類我們創(chuàng)建各表業(yè)務(wù)Bll類,如CollegeBll和StudentBll類,這兩個(gè)類中將CollegeDal和StudentDal通過(guò)AbsBll類的setDal()方法設(shè)置給對(duì)應(yīng)的Bll類以建立引用關(guān)系,并通過(guò)IModel接口作為操作實(shí)體的引用實(shí)例來(lái)自動(dòng)獲得Bll類中標(biāo)準(zhǔn)化的add,update,delete等業(yè)務(wù)方法。作為業(yè)務(wù)邏輯的擴(kuò)展,程序員需要實(shí)現(xiàn)各Bll類的transDTToList()抽象方法,為應(yīng)用層提供實(shí)體類型的標(biāo)準(zhǔn)存儲(chǔ)結(jié)構(gòu),同時(shí)也可以在子類中通過(guò)新業(yè)務(wù)方法的提供實(shí)現(xiàn)各Bll所需的個(gè)別業(yè)務(wù)邏輯。最后框架使用反向溝通機(jī)制對(duì)子類中的業(yè)務(wù)方法進(jìn)行調(diào)用。新應(yīng)用框架的使用能極大的降低系統(tǒng)開(kāi)發(fā)者基于業(yè)務(wù)層功能提供的程序編寫(xiě)量,提高了程序的可靠性和質(zhì)量,也增加了新系統(tǒng)的可維護(hù)性和擴(kuò)展性,實(shí)現(xiàn)了基于新WEB開(kāi)發(fā)平臺(tái)的系統(tǒng)敏捷開(kāi)發(fā)。當(dāng)然由于論文篇幅,這個(gè)應(yīng)用框架對(duì)于WEB開(kāi)發(fā)平臺(tái)的改版也僅僅局限于業(yè)務(wù)層程序結(jié)構(gòu),其提供的內(nèi)容也僅為廣大的系統(tǒng)架構(gòu)師們?cè)诂F(xiàn)代應(yīng)用軟件系統(tǒng)的敏捷開(kāi)發(fā)研究鄰域提供一個(gè)思想和方法的借鑒和交流。
參考文獻(xiàn):
[1]高煥堂.Android的應(yīng)用框架原理與程序設(shè)計(jì)[M].2008.
[2](韓)金泰延.Android框架揭秘[M].北京:人民郵電出版社,2012.
作者簡(jiǎn)介:張錦盛(1977-),男,碩士,講師。研究方向:敏捷開(kāi)發(fā)、腳本語(yǔ)義、軟件工程;朱曉晶(1982-),女,碩士,講師。研究方向:軟件工程、數(shù)據(jù)庫(kù)、高等教育學(xué)。
作者單位:云南工商學(xué)院 信息工程系,昆明 651700