999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于三層架構(gòu)的映射方法研究

2015-10-31 11:03:16穆仕華陳月英
中國科技縱橫 2015年15期
關(guān)鍵詞:引擎規(guī)則

穆仕華 陳月英

(1.貴州省科技信息中心,貴州貴陽 550002;2.貴州省信息技術(shù)創(chuàng)新服務(wù)中心,貴州貴陽 550002)

基于三層架構(gòu)的映射方法研究

穆仕華1陳月英2

(1.貴州省科技信息中心,貴州貴陽550002;2.貴州省信息技術(shù)創(chuàng)新服務(wù)中心,貴州貴陽550002)

傳統(tǒng)的三層架具有層次清晰、任務(wù)明確的特點(diǎn),但軟件的設(shè)計(jì)和編碼也涉及到三個(gè)層次,不同層次涉及到不同的開發(fā)語言、工具和方法,使得軟件的設(shè)計(jì)、編碼、測試和維護(hù)困難,軟件開發(fā)效率和質(zhì)量難以保障。本文通過對三層架構(gòu)映射模型的建立,采用規(guī)則引擎、組件引擎、代碼生成技術(shù)和組件解析技術(shù)實(shí)現(xiàn)了一層到三層的映射,在保留三層架構(gòu)優(yōu)點(diǎn)的基礎(chǔ)上,簡化了軟件設(shè)計(jì)和開發(fā)的難度,提高了軟件開發(fā)的效率和質(zhì)量。

三層架構(gòu)映射方法組件引擎規(guī)則引擎代碼生成

三層架構(gòu)是指在客戶端瀏覽器與后臺(tái)數(shù)據(jù)庫間加入了一個(gè)可稱為組件層的中間層。組件層分為業(yè)務(wù)邏輯層BLL、數(shù)據(jù)訪問層DAL、數(shù)據(jù)對象模型層Model[1]。三層架構(gòu)的優(yōu)點(diǎn)是層次清晰,提高了系統(tǒng)設(shè)計(jì)的靈活性、可擴(kuò)展性和可維護(hù)性。但是,從三層架構(gòu)的各層來看,具有涉及的開發(fā)語言多、開發(fā)工具多的特點(diǎn):(1)表示層的設(shè)計(jì)復(fù)雜。在表示層,需要對用戶界面進(jìn)行設(shè)計(jì),界面是實(shí)現(xiàn)人機(jī)友好交互的接口,界面的友好性對用戶體驗(yàn)有直接影響[2]。WEB表示層的設(shè)計(jì)涉及頁面布局、圖片處理、人機(jī)會(huì)話等技術(shù),這些技術(shù)需要多種工具和語言來完成,如Photoshop、html、div、js等,不同內(nèi)核的瀏覽器在表示層存在較大的兼容性問題,導(dǎo)致同樣的界面在不同瀏覽器中的表現(xiàn)形式不一致,甚至部分功能失效。(2)業(yè)務(wù)邏輯層的實(shí)現(xiàn)復(fù)雜。在業(yè)務(wù)邏輯層,通過對業(yè)務(wù)邏輯的封裝,對表示層進(jìn)行隱藏實(shí)現(xiàn),表示層通過調(diào)用業(yè)務(wù)邏輯層的接口來實(shí)現(xiàn)各種操作。業(yè)務(wù)邏輯層是表示層和數(shù)據(jù)訪問層的紐帶,需要處理各種復(fù)雜的算法實(shí)現(xiàn)問題。實(shí)現(xiàn)業(yè)務(wù)邏輯層的語言有VB、C#、JAVA等,不同語言的開發(fā)環(huán)境、語法格式、基礎(chǔ)類庫等差異較大,開發(fā)過程中需要進(jìn)行大量的編碼工作。(3)數(shù)據(jù)訪問層的差異較大。在數(shù)據(jù)訪問層,需要解決不同數(shù)據(jù)庫的存取問題,不同類型的數(shù)據(jù)庫在連接方法、數(shù)據(jù)類型、SQL查詢語句、存儲(chǔ)過程、用戶自定義函數(shù)的語法格式方面存在差異,這些差異需要技術(shù)人員在開始過程中查閱相關(guān)的幫助文檔才能解決,消耗了大量的時(shí)間和精力。

1 三層架構(gòu)技術(shù)比較

1.1MVC

MVC在開發(fā)復(fù)雜的大型網(wǎng)站時(shí),能將不同的功能作切割,提高程序代碼的可讀性,以及組件的可重用性。MVC縱向切割了開發(fā)過程中的代碼,從服務(wù)器到瀏覽器層層分離。層次之間耦合度很低。但MVC無法封裝,所以無法被重用[3]。

1.2MVP

MVP演變自MVC,通過表示器將視圖與模型巧妙地分開。在該模式中,視圖通常由表示器初始化,它呈現(xiàn)用戶界面(UI)并接受用戶所發(fā)出命令,但不對用戶的輸入作任何邏輯處理,而僅僅是將用戶輸入轉(zhuǎn)發(fā)給表示器[4]。

1.3WPF

WPF涵蓋了桌面應(yīng)用程序開發(fā)、網(wǎng)絡(luò)應(yīng)用程序開發(fā)和移動(dòng)應(yīng)用程序開發(fā),是微軟開發(fā)技術(shù)未來十年的主要方向。WPF基于DirectX底層接口,帶來優(yōu)秀的圖形向量渲染引擎,因此相對于上一代GDI/ GDI+編程模型有了質(zhì)的飛躍,可以輕松實(shí)現(xiàn)2D/3D絢麗效果,比如半透明、圖形翻轉(zhuǎn)、平移、縮放等[5]。

2 映射模型設(shè)計(jì)

通過對三層架構(gòu)常見模式的優(yōu)缺點(diǎn)進(jìn)行比較,提出三層架構(gòu)的映射模型,如圖1所示。

2.1偽碼文檔

偽碼文檔是一個(gè)二維表結(jié)構(gòu),其行列結(jié)構(gòu)可通過代碼生成器的算法轉(zhuǎn)化為HTML代碼。在偽碼文檔的單元格中,通過規(guī)則表達(dá)式描述各單元格中的組件類型、組件屬性以及組件的數(shù)據(jù)接口。按照組件引擎和規(guī)則引擎的約定,在偽碼文檔中還可描述數(shù)據(jù)庫的表結(jié)構(gòu)、表間關(guān)系、業(yè)務(wù)流程及用戶權(quán)限。

2.2組件引擎

組件引擎是由表單、數(shù)據(jù)列表、報(bào)表、業(yè)務(wù)流程、圖文、視頻等具有通用性的組件組成的組件庫,其底層實(shí)現(xiàn)細(xì)節(jié)通過JAVA、C#等支持面向?qū)ο蟮腤EB開發(fā)語言實(shí)現(xiàn)。組件引擎除包含常見的組件外,還可根據(jù)其提供的標(biāo)準(zhǔn)和統(tǒng)一接口進(jìn)行組件擴(kuò)展,組件的標(biāo)準(zhǔn)接口包括組件ID、組件類型、數(shù)據(jù)庫類型、可編程性數(shù)據(jù)接口、界面描述、外部文件引入路徑,在此基礎(chǔ)上,可擴(kuò)展新加入組件的其他屬性。

2.3規(guī)則引擎

2.3.1表結(jié)構(gòu)描述規(guī)則

(1)表結(jié)構(gòu)描述規(guī)則。關(guān)系數(shù)據(jù)庫的表結(jié)構(gòu)通過“TableName={字類名$字段類型$字段長度$驗(yàn)證方式$字段說明}”的方式進(jìn)行描述,字段的驗(yàn)證方式是指對字段對應(yīng)的控件在接收用戶輸入的數(shù)據(jù)時(shí)進(jìn)行的有效性驗(yàn)證,常見的驗(yàn)證方式包括身份證號(hào)、電話、郵編、電子郵箱、整數(shù)、小數(shù)、日期、時(shí)間等,用其對應(yīng)的英文名作為偽碼描述。

(2)表間關(guān)系描述規(guī)則。表單關(guān)系包括1對1,1對多和多對多關(guān)系,通過規(guī)則表達(dá)式“{表x->字段1orn=表y->字段1orn}”進(jìn)行描述。若同一表與多表之間存在關(guān)系,則可通過編寫多個(gè)表間關(guān)系表達(dá)式進(jìn)行描述。

2.3.2組件描述規(guī)則

組件描述通過規(guī)則表達(dá)式“Component=組件ID$組件類型$屬性集合”進(jìn)行描述,屬性集合以“{屬性ID=屬性值},{屬性ID=屬性值}”的方式描述組件的多個(gè)屬性。

由于組件在實(shí)現(xiàn)業(yè)務(wù)功能時(shí)可能需要引入一些外部文件作為支撐,因此,對于文件的引入規(guī)則采用“<FileType=文件類型Path=文件路徑”進(jìn)行描述。文件類型JS、CSS、Image三種。

2.3.3參數(shù)描述規(guī)則

圖1 三層架構(gòu)映射模型

圖2 代碼生成器的工作流程

在規(guī)則引擎中還需制定各種參數(shù)的傳遞和接收方法,WEB應(yīng)用中的參數(shù)傳遞方式主要包括Post、Get,Session和Cookie三種,對于Post和Get,其偽碼表達(dá)式為“參數(shù)變量=request.參數(shù)名”,Session和Cookie則分別為“參數(shù)變量=Cookie.參數(shù)名”和“參數(shù)變量=Session.參數(shù)名”。

2.4代碼生成器

代碼生成器的作用是將偽碼文檔轉(zhuǎn)換成組件的XML配置文檔及相關(guān)的文件。代碼生成器的工作流程為導(dǎo)入偽碼文檔,對偽碼文檔的類型進(jìn)行判斷,若偽碼文檔為表結(jié)構(gòu)偽碼,則通過SQL代碼生成器生成特定關(guān)系數(shù)據(jù)庫的SQL建表腳本和用于實(shí)現(xiàn)數(shù)據(jù)增加、刪除和修改的腳本。若偽碼文檔是組件結(jié)構(gòu),則根據(jù)組件的結(jié)構(gòu)生成HTML、CSS、JS文件和組件的XML配置文檔。代碼生成器的工作流程如圖2所示。

2.5組件解析器

組件解析器的作用是將組件的XML文檔轉(zhuǎn)換成WEB應(yīng)用程序。組件解析器的工作流程是對代碼生成器生成的XML文檔進(jìn)行加載,并根據(jù)組件的參數(shù)描述從外部獲取session、post等方式傳遞的參數(shù),與此同時(shí),調(diào)用一個(gè)通用數(shù)據(jù)接口獲取關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)并創(chuàng)建組件,組件創(chuàng)建完畢后,根據(jù)組件的HTML界面布局呈現(xiàn)組件。

3 映射模型實(shí)現(xiàn)

映射模型實(shí)現(xiàn)的關(guān)鍵是通過各種算法對偽碼文檔進(jìn)行解析,以生成組件的XML配置文檔,而組件的XML配置文檔中包含了組件的屬性描述、界面描述、數(shù)據(jù)接口描述,XML配置文檔是組件解析器將其轉(zhuǎn)換為WEB應(yīng)用的基礎(chǔ),因此映射模型需要對代碼生成算法和組件解析算法進(jìn)行實(shí)現(xiàn)。

3.1代碼生成算法

三層架構(gòu)映射模型的關(guān)鍵是實(shí)現(xiàn)HTML、JS、XML和SQL的代碼生成,各種代碼的生成原理和方法差異較大。

3.1.1HTML生成算法

HTML生成算法根據(jù)偽碼文檔描述的二維表結(jié)構(gòu)生成WEB應(yīng)用程序的界面布局,其算法的關(guān)鍵步驟如下:

(1)遍歷二維表的所有行和列,開始遍歷前生成“<table>”標(biāo)簽;(2)讀取每一個(gè)單元格式的值,如果不為空,產(chǎn)生一個(gè)“<td><td>”標(biāo)識(shí),如果為空,并入其左側(cè)的單元格;(3)如果某一單元格的下方存在空單元格,則將其合并;(4)所有單元格遍歷結(jié)束生成“</table>”標(biāo)簽。

3.1.2JS生成算法

JS代碼用于實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證、在前端實(shí)現(xiàn)計(jì)算等,其代碼生成算法的關(guān)鍵步驟如下:(1)根據(jù)組件的描述規(guī)則引入JS文件;2)如果組件涉及函數(shù)庫的調(diào)用,則將調(diào)用函數(shù)庫所需的相關(guān)參數(shù)轉(zhuǎn)換為接收到的實(shí)際參數(shù);(3)對于表單組件,若發(fā)現(xiàn)算法運(yùn)算或邏輯運(yùn)算表達(dá)式,則采用二叉樹的遍歷算法遍歷整個(gè)表達(dá)式,以獲取表達(dá)式中的控件ID,同時(shí)調(diào)用JQuery函數(shù)庫中的組件選擇器獲取特定控件的值,并將整個(gè)表達(dá)式轉(zhuǎn)換為條件表達(dá)式,以實(shí)現(xiàn)對表單中相關(guān)數(shù)據(jù)的驗(yàn)證。

3.1.3XML生成算法

XML生成算法將偽碼文檔的整體結(jié)構(gòu)生成一個(gè)XML文檔,并將偽碼文檔中描述的組件作為XML文檔的子節(jié)點(diǎn)。XML生成算法的關(guān)鍵步驟如下:(1)遍歷二維表的所有行和列,開始遍歷前生成“<Page>”根節(jié)點(diǎn);(2)讀取每一個(gè)單元格式的值,如果找到Component標(biāo)識(shí),則獲取組件的類型,根據(jù)組件的結(jié)構(gòu)為偽碼文檔的描述生成組件和XML描述文檔,同時(shí)作為“<Page>”根節(jié)點(diǎn)的子節(jié)點(diǎn);(3)遍歷完成后,生成”</Page>”結(jié)束標(biāo)簽。

3.1.4SQL生成算法

SQL生成算法將偽碼文檔中描述數(shù)據(jù)庫表結(jié)構(gòu)的偽碼生成為數(shù)據(jù)庫的建表腳本,同時(shí)根據(jù)偽碼文檔中描述的組件接口的需要,生成相應(yīng)的數(shù)據(jù)處理腳本,其關(guān)鍵的代碼生成步驟如下:(1)遍歷二維表的所有行和列,若發(fā)現(xiàn)“TableName”標(biāo)簽,則說明是一個(gè)數(shù)據(jù)為表結(jié)構(gòu)相關(guān)的偽碼描述;(2)獲取每一個(gè)單元格的值,拆分偽碼表達(dá)式以獲取字段名、字段類型、長度和備注信息,存入數(shù)組;(3)遍歷結(jié)束后,判斷當(dāng)前選用的關(guān)鍵數(shù)據(jù)庫類型,調(diào)用特定關(guān)系數(shù)據(jù)庫的建表方法生成數(shù)據(jù)庫表結(jié)構(gòu);(4)遍歷描述組件的偽碼文檔,根據(jù)組件的數(shù)據(jù)接口需求生成特定的數(shù)據(jù)處理腳本。

3.2組件解析算法

組件解析算法根據(jù)組件的XML文檔生成WEB應(yīng)用程序,組件解析算法以組件的XML文檔為基礎(chǔ),從XML文檔的根節(jié)點(diǎn)開始對整個(gè)XML文檔進(jìn)行遍歷,當(dāng)讀取到組件類型標(biāo)簽時(shí),首先創(chuàng)建一個(gè)組件實(shí)例,同時(shí)從XML文檔獲取組件的其他參數(shù)對組件實(shí)例的接口進(jìn)行配置。單個(gè)組件創(chuàng)建完成后,根據(jù)XML文檔中提供的界面布局對各組件進(jìn)行呈現(xiàn)。組件呈現(xiàn)時(shí),如果需獲取相關(guān)參數(shù)、設(shè)置組件的初始值,則根據(jù)規(guī)則表達(dá)式對參數(shù)進(jìn)行解析,通過通用的數(shù)據(jù)接口獲取組件的數(shù)據(jù)源,調(diào)用其數(shù)據(jù)接口代碼獲取數(shù)據(jù)源中的數(shù)據(jù),并綁定到組件中。

4 結(jié)語

基于三層架構(gòu)的映射技術(shù)在建立三層架構(gòu)映射技術(shù)的基礎(chǔ)上,以組件引擎為基礎(chǔ),通過自定義的規(guī)則表達(dá)式對組件進(jìn)行描述,形成偽碼文檔,實(shí)現(xiàn)了界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層的設(shè)計(jì)通過一個(gè)文檔完成。在構(gòu)建偽碼文檔的基礎(chǔ)上,通過代碼生成器將偽碼文檔轉(zhuǎn)化為組件的XML配置文檔,組件解析器將XML配置文檔轉(zhuǎn)換成WEB應(yīng)用程序,從實(shí)現(xiàn)了通過XML代碼文檔向三層代碼的映射關(guān)系,簡化了軟件設(shè)計(jì)的過程,改變了WEB應(yīng)用軟件代碼編寫的方式,從而提高了軟件的開發(fā)效率和質(zhì)量。

[1]張士敏.ASP.NET的三層架構(gòu)與實(shí)現(xiàn)[J].硅谷,2013,(第4期).

[2]HOU Yan'e,DANG Lanxue,WEI Dan.Design and implementation of web user interface automatic generation tool[J].Journal of Henan University(Natural Science),2011,41(6):641-644.

[3]張志剛.基于ASP.NET MVC框架的研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014,(第18期).

[4]王念橋.應(yīng)用MVP模式改進(jìn)軟件架構(gòu)[J].計(jì)算機(jī)時(shí)代,2012,(第4期).

[5]王嬋娟.淺談WPF架構(gòu)及其應(yīng)用[J].科技信息,2011,(第21期).

猜你喜歡
引擎規(guī)則
以學(xué)促干 挺膺擔(dān)當(dāng) 激活砥礪前行的紅色引擎
撐竿跳規(guī)則的制定
數(shù)獨(dú)的規(guī)則和演變
規(guī)則的正確打開方式
幸福(2018年33期)2018-12-05 05:22:42
三生 三大引擎齊發(fā)力
讓規(guī)則不規(guī)則
Coco薇(2017年11期)2018-01-03 20:59:57
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
TPP反腐敗規(guī)則對我國的啟示
搜索新規(guī)則
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 成人午夜在线播放| 日韩毛片视频| 99成人在线观看| 青青热久免费精品视频6| 久久亚洲精少妇毛片午夜无码| 久久天天躁狠狠躁夜夜躁| 天天干天天色综合网| 国产成人调教在线视频| 国产青青操| 日韩欧美91| 国产中文一区二区苍井空| 国产精品亚洲一区二区在线观看| 在线观看国产网址你懂的| 久久永久精品免费视频| 久久人妻xunleige无码| 天天视频在线91频| 日韩免费毛片视频| 婷婷色狠狠干| 伊人久久婷婷| 久久青草热| 国产99在线| 国产精品熟女亚洲AV麻豆| 中文字幕久久亚洲一区| 成人免费午间影院在线观看| yjizz国产在线视频网| 伊人久久大香线蕉aⅴ色| 欧美成人午夜影院| 伊人91在线| 国产日韩AV高潮在线| 国产男女免费完整版视频| 成人免费午夜视频| 手机永久AV在线播放| 亚洲国产成人无码AV在线影院L| 91在线免费公开视频| 扒开粉嫩的小缝隙喷白浆视频| 久久黄色视频影| 精品国产污污免费网站| 99re免费视频| 91精品日韩人妻无码久久| 国产精品香蕉在线观看不卡| 91青青视频| 久久天天躁狠狠躁夜夜躁| 色婷婷国产精品视频| 国产成人综合网| 国产乱子伦视频在线播放| 无码啪啪精品天堂浪潮av| 精品视频免费在线| 久久中文字幕不卡一二区| 国产精品99在线观看| 丝袜美女被出水视频一区| 2022精品国偷自产免费观看| 性视频一区| 欧美亚洲第一页| 欧美在线视频不卡第一页| 老色鬼欧美精品| 成人午夜视频在线| 久久综合五月| 欧美伦理一区| 亚洲无码免费黄色网址| 噜噜噜久久| 亚洲一区二区三区中文字幕5566| 日韩中文字幕亚洲无线码| 98超碰在线观看| 99re热精品视频中文字幕不卡| 国产欧美日韩va另类在线播放| 三上悠亚一区二区| 澳门av无码| 欧美精品一二三区| 成人精品免费视频| 日本高清视频在线www色| 福利一区三区| 91久久偷偷做嫩草影院精品| 国产在线98福利播放视频免费| 亚洲 欧美 偷自乱 图片 | 一本大道东京热无码av| 国产视频入口| 亚洲国产精品美女| 丝袜无码一区二区三区| a级毛片免费播放| 香蕉eeww99国产在线观看| 亚洲人成色77777在线观看| 91久久国产热精品免费|