一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu)的制作方法
【專利摘要】本發(fā)明涉及軟件技術(shù)開發(fā)領(lǐng)域,具體涉及一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu)。本發(fā)明針對每個數(shù)據(jù)源都有其相應(yīng)的模型層,也就是業(yè)務(wù)邏輯處理層,而不同數(shù)據(jù)源又通過統(tǒng)一的控制器層來統(tǒng)一控制業(yè)務(wù)層跟表現(xiàn)層的交互;表現(xiàn)層可根據(jù)需要靈活動態(tài)選擇多數(shù)據(jù)源業(yè)務(wù);針對不同數(shù)據(jù)源都有相應(yīng)子mvc模式與其對應(yīng);表現(xiàn)層和控制層不是獨立設(shè)計的,控制層是共用的,表現(xiàn)層也大都是混用的,也就是同一個視圖界面可以同時調(diào)用不同數(shù)據(jù)源業(yè)務(wù)。本發(fā)明解決了現(xiàn)有應(yīng)用程序動態(tài)擴展多數(shù)據(jù)源其他相關(guān)業(yè)務(wù)不易的問題;可以用于Web應(yīng)用程序的開發(fā)。
【專利說明】一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件技術(shù)開發(fā)領(lǐng)域,具體涉及一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu)。
【背景技術(shù)】
[0002]面向?qū)ο蠹夹g(shù)的出現(xiàn)與廣泛使用,使得軟件的可復(fù)用性在一定層度上得到了解決;但由于軟件規(guī)模和復(fù)雜程度的增加以及很多其他方面的原因,人們對軟件復(fù)用同時也要求越來越高。結(jié)構(gòu)清晰、便于復(fù)用、易于維護和可擴展,是目前軟件設(shè)計所追求的目標(biāo)。因而mvc (model-view-controller,模型-視圖-控制器)做為一種主流的設(shè)計模式應(yīng)運而生。它將應(yīng)用程序分成三個核心部件:模型、視圖、控制器。集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。但是,隨著時間推移,MVC模式也暴露出大量缺點,因為MVC模式本質(zhì)上是一個結(jié)構(gòu)型模式。結(jié)構(gòu)模式相比行為模式而言,實際就是靜止的,相對固定的,而隨著B/S和互聯(lián)網(wǎng)應(yīng)用不斷普及,相對靜止的MVC模式已經(jīng)不適合高度交互注重行為的應(yīng)用了。一般的ssh框架都是基于單一數(shù)據(jù)源基礎(chǔ)上設(shè)計的三層架構(gòu),過于模式化,對web容器有很強的依賴,不容易動態(tài)擴展多數(shù)據(jù)源其他相關(guān)業(yè)務(wù)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明解決的技術(shù)問題在于提供一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu);基于多數(shù)據(jù)源情況下,可靈活擴展相關(guān)業(yè)務(wù)邏輯處理的架構(gòu)。
[0004]本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
[0005]針對每個數(shù)據(jù)源都有其相應(yīng)的模型層,也就是業(yè)務(wù)邏輯處理層,而不同數(shù)據(jù)源又通過統(tǒng)一的控制器層來統(tǒng)一控制業(yè)務(wù)層跟表現(xiàn)層的交互;表現(xiàn)層可根據(jù)需要靈活動態(tài)選擇多數(shù)據(jù)源業(yè)務(wù);針對不同數(shù)據(jù)源都有相應(yīng)子mvc模式與其對應(yīng);表現(xiàn)層和控制層不是獨立設(shè)計的,控制層是共用的,表現(xiàn)層也大都是混用的,也就是同一個視圖界面可以同時調(diào)用不同數(shù)據(jù)源業(yè)務(wù)。
[0006]對于每個數(shù)據(jù)源對應(yīng)的模型層都通過統(tǒng)一的baseDao層及baseService層實現(xiàn),但并非每個數(shù)據(jù)源都要寫對應(yīng)的代碼層,可直接通過上下文配置不同javabean名稱即可;上層通過配置的名字直接進行baseService層基礎(chǔ)操作接口調(diào)用;根據(jù)需要及hibernate的特征,有時需要根據(jù)數(shù)據(jù)源庫表配置Po持久化對象及映射文件等。
[0007]所述的架構(gòu)基于ssh(struts+spring+hibernate)技術(shù)之上。
[0008]多數(shù)據(jù)源可以根據(jù)實際需要通過擴展添加相關(guān)上下文配置信息的方式接入,此種方式下擴展接入的數(shù)據(jù)源會在應(yīng)用部署到項目時就進行持久連接;也可以根據(jù)系統(tǒng)需要,臨時通過代碼組建,這樣事務(wù)管理、java bean等都統(tǒng)一通過spring及hibernate進行管理。
[0009]通過本發(fā)明的架構(gòu),用戶只需擴展增加相關(guān)配置文件信息及按需添加數(shù)據(jù)庫庫表相關(guān)的映射代碼,就可以擴展并發(fā)執(zhí)行多數(shù)據(jù)源業(yè)務(wù)邏輯事務(wù)處理。同時,用戶也可以根據(jù)數(shù)據(jù)源連接信息動態(tài)構(gòu)建相關(guān)數(shù)據(jù)源下的基礎(chǔ)業(yè)務(wù)邏輯處理層,程序直接調(diào)用基礎(chǔ)接口方法便可以簡便的處理上層針對此數(shù)據(jù)源的業(yè)務(wù)處理。
【專利附圖】
【附圖說明】
[0010]下面結(jié)合附圖對本發(fā)明進一步說明:
[0011]圖1為系統(tǒng)實現(xiàn)本方法的整體架構(gòu)圖
[0012]圖2為本發(fā)明代碼實現(xiàn)結(jié)構(gòu)圖。
【具體實施方式】
[0013]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0014]本發(fā)明框架針對每一個數(shù)據(jù)源設(shè)計子mvc模型,當(dāng)然它們又是一體的,都是構(gòu)建在相同開源框架代碼之上的。典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問及合法性校驗等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據(jù)庫交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫交互。表現(xiàn)層是傳統(tǒng)的JSP技術(shù),自1999年問世以來,經(jīng)過多年的發(fā)展,其廣泛的應(yīng)用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術(shù)打下了堅實的基礎(chǔ)。中間層采用的是流行的Spring+Hibernate,為了將控制層與業(yè)務(wù)邏輯層分離,又細分為以下幾種。Web層,就是MVC模式里面的“C” (controller),負(fù)責(zé)控制業(yè)務(wù)邏輯層與表現(xiàn)層的交互,調(diào)用業(yè)務(wù)邏輯層,并將業(yè)務(wù)數(shù)據(jù)返回給表現(xiàn)層作組織表現(xiàn),該系統(tǒng)的MVC框架采用Struts。Service層(就是業(yè)務(wù)邏輯層),負(fù)責(zé)實現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層以DAO層為基礎(chǔ),通過對DAO組件的正面模式包裝,完成系統(tǒng)所要求的業(yè)務(wù)邏輯。DAO層,負(fù)責(zé)與持久化對象交互。該層封裝了數(shù)據(jù)的增、刪、查、改的操作。PO,持久化對象。通過實體關(guān)系映射工具將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)映射成對象,很方便地實現(xiàn)以面向?qū)ο蠓绞讲僮鲾?shù)據(jù)庫,該系統(tǒng)采用Hibernate作為ORM框架。Spring的作用貫穿了整個中間層,將上eb層、Service層、DAO層及PO無縫整合,其數(shù)據(jù)服務(wù)層用來存放數(shù)據(jù)。可擴展多數(shù)據(jù)源mvc模型架構(gòu)針對每個數(shù)據(jù)源都是依照以上原理設(shè)計,但中間層及表現(xiàn)成可以根據(jù)需要靈活設(shè)計,并非固定模式化。通過統(tǒng)一的control層統(tǒng)一控制業(yè)務(wù)層跟表現(xiàn)層的交互。所有的javabean統(tǒng)一 spring的1c模式管控。
[0015]圖1為本發(fā)明此動態(tài)可擴展mvc整體架構(gòu)圖,針對每個數(shù)據(jù)源都有其相應(yīng)的model層,也就是業(yè)務(wù)邏輯處理層,而不同數(shù)據(jù)源又通過統(tǒng)一的control層來統(tǒng)一控制業(yè)務(wù)層跟表現(xiàn)層的交互。表現(xiàn)層可根據(jù)需要靈活動態(tài)選擇多數(shù)據(jù)源業(yè)務(wù)。針對不同數(shù)據(jù)源都有相應(yīng)子mvc模式與其對應(yīng)。只是表現(xiàn)層跟控制層不是獨立設(shè)計的,控制層是共用的,表現(xiàn)層也大都是混用的,也就是同一個視圖界面可以同時調(diào)用不同數(shù)據(jù)源業(yè)務(wù)。
[0016]圖2為本框架代碼實現(xiàn)結(jié)構(gòu)圖,對于每個數(shù)據(jù)源對應(yīng)的model成都通過統(tǒng)一的baseDao層及baseService層實現(xiàn),但并非每個數(shù)據(jù)源都要寫對應(yīng)的代碼層,程序員直接通過上下文配置不同javabean名稱就可以了,上層通過配置的名字直接進行baseService層基礎(chǔ)操作接口調(diào)用。當(dāng)然根據(jù)需要及hibernate的特征,程序員有時需要根據(jù)數(shù)據(jù)源庫表配置Po持久化對象及映射文件等。
【權(quán)利要求】
1.一種彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu),其特征在于:針對每個數(shù)據(jù)源都有其相應(yīng)的模型層,也就是業(yè)務(wù)邏輯處理層,而不同數(shù)據(jù)源又通過統(tǒng)一的控制器層來統(tǒng)一控制業(yè)務(wù)層跟表現(xiàn)層的交互;表現(xiàn)層可根據(jù)需要靈活動態(tài)選擇多數(shù)據(jù)源業(yè)務(wù);針對不同數(shù)據(jù)源都有相應(yīng)子mvc模式與其對應(yīng);表現(xiàn)層和控制層不是獨立設(shè)計的,控制層是共用的,表現(xiàn)層也大都是混用的,也就是同一個視圖界面可以同時調(diào)用不同數(shù)據(jù)源業(yè)務(wù)。
2.根據(jù)權(quán)利I所述的彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu),其特征在于:對于每個數(shù)據(jù)源對應(yīng)的模型層都通過統(tǒng)一的baseDao層及baseService層實現(xiàn),但并非每個數(shù)據(jù)源都要寫對應(yīng)的代碼層,可直接通過上下文配置不同javabean名稱即可;上層通過配置的名字直接進行baseService層基礎(chǔ)操作接口調(diào)用;根據(jù)需要及hibernate的特征,有時需要根據(jù)數(shù)據(jù)源庫表配置Po持久化對象及映射文件等。
3.根據(jù)權(quán)利I所述的彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu),其特征在于:所述的架構(gòu)基于 ssh (struts+spring+hibernate)技術(shù)之上。
4.根據(jù)權(quán)利2所述的彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu),其特征在于:所述的架構(gòu)基于 ssh (struts+spring+hibernate)技術(shù)之上。
5.根據(jù)權(quán)利I至4任一項所述的彈性可擴展的多數(shù)據(jù)源mvc模型架構(gòu),其特征在于:多數(shù)據(jù)源可以根據(jù)實際需要通過擴展添加相關(guān)上下文配置信息的方式接入,此種方式下擴展接入的數(shù)據(jù)源會在應(yīng)用部署到項目時就進行持久連接;也可以根據(jù)系統(tǒng)需要,臨時通過代碼組建,這樣事務(wù)管理、java bean等都統(tǒng)一通過spring及hibernate進行管理。
【文檔編號】G06F9/44GK104484182SQ201410831700
【公開日】2015年4月1日 申請日期:2014年12月25日 優(yōu)先權(quán)日:2014年12月25日
【發(fā)明者】郭樹盛, 唐素芳, 徐志偉 申請人:廣東電子工業(yè)研究院有限公司