国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ASP.NET MVC模式的軟件開發(fā)架構(gòu)的研究與探討

2016-02-08 01:26:18
關(guān)鍵詞:視圖架構(gòu)邏輯

仝 茵

(中國(guó)電子科學(xué)研究院,北京 100041)

?

綜 述

基于ASP.NET MVC模式的軟件開發(fā)架構(gòu)的研究與探討

仝 茵

(中國(guó)電子科學(xué)研究院,北京 100041)

論文分析了ASP.NET MVC框架在企業(yè)日常事務(wù)管理軟件開發(fā)中的應(yīng)用,對(duì)開發(fā)過(guò)程中系統(tǒng)的架構(gòu)設(shè)計(jì)進(jìn)行了詳細(xì)的研究和討論。在此基礎(chǔ)上,對(duì)架構(gòu)進(jìn)行技術(shù)改進(jìn),分離關(guān)注點(diǎn),抽取業(yè)務(wù)處理邏輯層BCL以專注進(jìn)行業(yè)務(wù)邏輯流程的處理,集成入系統(tǒng)中輕量級(jí)數(shù)據(jù)訪問映射框架iBatis,實(shí)現(xiàn)數(shù)據(jù)傳輸靈活性。以求達(dá)到的改進(jìn)后的開發(fā)框架,以清晰的架構(gòu)層次實(shí)現(xiàn)系統(tǒng)良好的擴(kuò)展性與維護(hù)性,為企業(yè)級(jí)應(yīng)用系統(tǒng)開發(fā)的通用架構(gòu)模式提供參考。

ASP.NET MVC;業(yè)務(wù)處理邏輯層BCL;iBatis

0 引 言

現(xiàn)今,企業(yè)日常工作事務(wù)的管理已經(jīng)普遍信息化,應(yīng)用軟件的開發(fā)技術(shù)跟隨大量的業(yè)務(wù)需求亦發(fā)展快速,各種WEB開發(fā)技術(shù)在原來(lái)的面向過(guò)程的簡(jiǎn)單開發(fā)思想基礎(chǔ)上往面向?qū)ο蟮母呒?jí)開發(fā)思想方向不斷的更新發(fā)展,并分別由最初的C語(yǔ)言衍生出多種WEB開發(fā)應(yīng)用語(yǔ)言,如JSP﹑PHP﹑ASP等等,各種語(yǔ)言在各自的開發(fā)平臺(tái)支撐下各具優(yōu)勢(shì)。程序員在進(jìn)行反復(fù)開發(fā)并分類編目的過(guò)程中總結(jié)出了代碼設(shè)計(jì)的模式應(yīng)用到軟件工程當(dāng)中,如MVC模式。目前程序員所熟用的基于MVC模式的軟件開發(fā)框架有ASP.NET MVC架構(gòu),Struts MVC架構(gòu),Spring MVC,Zend Fromwork等。由于微軟公司產(chǎn)品在國(guó)內(nèi)企業(yè)和個(gè)人用戶使用方面的普及,本篇對(duì)ASP.NET MVC開發(fā)框架進(jìn)行探索和研究。旨在展現(xiàn)ASP.NET MVC對(duì)企業(yè)應(yīng)用軟件開發(fā)的影響,并在原有架構(gòu)的基礎(chǔ)上改進(jìn)架構(gòu),尋求一種嚴(yán)謹(jǐn)精準(zhǔn)的企業(yè)級(jí)通用開發(fā)架構(gòu)規(guī)范,提高應(yīng)用軟件的開發(fā)效率,并實(shí)現(xiàn)軟件開發(fā)復(fù)用。

1 ASP.NET MVC架構(gòu)介紹

企業(yè)級(jí)應(yīng)用系統(tǒng)軟件開發(fā)存在諸多問題,如何通過(guò)適當(dāng)?shù)倪壿嫵橄螅瑢?fù)雜的業(yè)務(wù)邏輯抽離分層?各層之間如何協(xié)同合作?針對(duì)不同的業(yè)務(wù)數(shù)據(jù)模塊如何解決模塊間的異構(gòu)?ASP.NET MVC架構(gòu)采用分層的模式,具有面向?qū)ο蟮母邇?nèi)聚、低耦合思想,其設(shè)計(jì)思想的多態(tài)、繼承等特性,可以有效地降低系統(tǒng)的開發(fā)難度,能夠良好解決上述問題。

1.1 整個(gè)ASP.NET MVC的工作過(guò)程

(1)首先它采用了管道設(shè)計(jì),具有良好擴(kuò)展性。在整個(gè)請(qǐng)求生命周期開始之前,需要URL Routing網(wǎng)址路由來(lái)完成路徑引導(dǎo),URL Routing負(fù)責(zé)比對(duì)從瀏覽器傳來(lái)的HTTP請(qǐng)求,并將解析后適當(dāng)?shù)木W(wǎng)址返回瀏覽器。

(2)其次通過(guò)HttpModule類的形式定義一個(gè)攔截器(Interceptor),攔截器根據(jù)請(qǐng)求解析出目標(biāo)Controller和Action的名稱,隨后定位到具體位置,目標(biāo)Controller被激活,相應(yīng)的Action方法被執(zhí)行[1],ASP.NET MVC結(jié)構(gòu)中定義了名為MVCHandler的自定義HttpHandler類,實(shí)現(xiàn)對(duì)Controller的激活和Action的執(zhí)行。

(3)最后,用戶通過(guò)瀏覽器發(fā)出請(qǐng)求與應(yīng)用進(jìn)行交互,通過(guò)Http請(qǐng)求和響應(yīng)來(lái)完成。整個(gè)流程如圖1所示。

圖1 ASP.NET MVC框架工作過(guò)程

整個(gè)過(guò)程從用戶發(fā)出請(qǐng)求到響應(yīng),ASP.NET MVC清晰的分離關(guān)注點(diǎn),將復(fù)雜的任務(wù)分解成若干個(gè)簡(jiǎn)單的、單一的任務(wù),每次只關(guān)注于其中一項(xiàng)單一的任務(wù)。整個(gè)響應(yīng)流程分層處理,將可視化界面,視圖處理邏輯和業(yè)務(wù)處理邏輯分離開來(lái),系統(tǒng)的不同的功能模塊多層分隔,分別承載入三層類庫(kù),不同類庫(kù)之間的類彼此調(diào)用﹑協(xié)同合作構(gòu)成整個(gè)系統(tǒng)的功能。尤其在開發(fā)復(fù)雜的應(yīng)用系統(tǒng)的時(shí)候,分離關(guān)注點(diǎn)這一特性,可以有效地減少系統(tǒng)的開發(fā)難度、調(diào)試難度、后期維護(hù)的難度[2]。

1.2 模型,視圖,控制器之間的交互

參考圖2,模型,視圖,控制器之間的交互如下有三點(diǎn)。

圖2 M,V,C三者交互圖

(1)控制器實(shí)現(xiàn)的交互功能

控制器Controller負(fù)責(zé)業(yè)務(wù)邏輯流程的流轉(zhuǎn)控制。其主要作用是用戶接受請(qǐng)求,與視圖和數(shù)據(jù)模型匹配共同完成用戶請(qǐng)求??刂破髦骺胤峙溥x擇什么樣的模型和視圖。用戶發(fā)送一個(gè)請(qǐng)求后,經(jīng)過(guò) URL Routing解析,選擇控制器,控制器并不進(jìn)行業(yè)務(wù)邏輯處理,它只把用戶的提交的信息傳遞給數(shù)據(jù)模型,然后選擇指定的視圖返給用戶,當(dāng)Controller被MvcHandler類選擇,通過(guò)ActionInvoker選取適當(dāng)?shù)腁ction方法來(lái)執(zhí)行邏輯。Action方法通常會(huì)返回給視圖一個(gè)ActionResult類來(lái)決定返回給視圖的信息的類型[3]。ActionResult類型主要有以下幾種:View主視圖類型、PartialView部分視圖類型、Content文本或XML類型、Josn傳遞LIST數(shù)據(jù)類型、FileContent類型、JavaScript傳遞JS文件類型。View視圖將返回的ActionResult類型決定在客戶端顯示的內(nèi)容[4]。

(2)模型實(shí)現(xiàn)的交互功能

模型Model表示一組最終呈現(xiàn)在視圖上的數(shù)據(jù),它的獨(dú)立性和擴(kuò)展性很強(qiáng),它可以作為單獨(dú)存放的組件,供應(yīng)多個(gè)項(xiàng)目重復(fù)使用。不論是Controller還是View,都會(huì)使用Model提供的數(shù)據(jù)類型,模型通常與視圖和控制器分離,獨(dú)立性高,當(dāng)應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則改變,比如說(shuō),數(shù)據(jù)庫(kù)從SQL Server移植到Oracle,只需要修改Model數(shù)據(jù)模型,而不影響視圖的顯示。Model元數(shù)據(jù)的一個(gè)重要的作用是控制Model對(duì)象在View上的呈現(xiàn)方式,基于定義的某種類型的Model元數(shù)據(jù)去決定最終生成的Html頁(yè)面來(lái)展示對(duì)應(yīng)的Model對(duì)象,Model元數(shù)據(jù)還提供數(shù)據(jù)格式的驗(yàn)證與業(yè)務(wù)邏輯驗(yàn)證等功能[5]。

(3)視圖功能的實(shí)現(xiàn)

ASP.NET MVC中的視圖使用的引擎有兩種,MVC2.0版本使用的是ASPX,MVC3.0使用的是Razor,視圖的職責(zé)是向客戶端提供顯示頁(yè)面,與數(shù)據(jù)顯示有關(guān)的邏輯有HTML、CSS、JavaScript、DOM、jQuery、JSON、Ajax等[6]。當(dāng)Controller傳遞過(guò)來(lái)的數(shù)據(jù)轉(zhuǎn)換成客戶端需要的輸出的格式,View的程序代碼不會(huì)出現(xiàn)復(fù)雜的應(yīng)用程序和業(yè)務(wù)邏輯,MVC架構(gòu)中,為了方便客戶端控件的創(chuàng)建以及Model數(shù)據(jù)的綁定,MVC提供了一套輔助方法,用來(lái)生成客戶端控件,這些方法以Html打頭,稱為HTML輔助方法,該方法將HTML標(biāo)簽封裝成輔助方法,簡(jiǎn)化視圖頁(yè)面的邏輯。視圖使用兩種綁定數(shù)據(jù)的方式傳遞數(shù)據(jù),一種是非強(qiáng)類型,即不使用Model,僅使用參數(shù),一種是強(qiáng)類型傳遞,綁定Model數(shù)據(jù)。

2 系統(tǒng)內(nèi)集成IBatis框架

圖4 抽取BCL層圖示

目前.NET平臺(tái)自帶的數(shù)據(jù)建模和對(duì)象持久化訪問機(jī)制使用Entity FrameWork框架,它支持程序員通過(guò)對(duì)概念性的應(yīng)用程序模型編程來(lái)創(chuàng)建數(shù)據(jù)訪問應(yīng)用程序,目標(biāo)是降低面向數(shù)據(jù)的應(yīng)用程序所需要的代碼量并減輕維護(hù)工作,但是它的訪問機(jī)制通過(guò)可視化開發(fā)數(shù)據(jù)模型工具來(lái)定義實(shí)體與模型的關(guān)系和數(shù)據(jù)表的關(guān)聯(lián),對(duì)使用存儲(chǔ)過(guò)程有很多限制,并且不是直接面向關(guān)系存儲(chǔ)架構(gòu)編程[7],不太符合數(shù)據(jù)關(guān)系映射機(jī)制,對(duì)于面向?qū)ο蟮木幊陶Z(yǔ)言和存儲(chǔ)數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫(kù)之間的映射結(jié)構(gòu)還不夠完善,因此需要引入其他ORM數(shù)據(jù)映射框架集成到開發(fā)環(huán)境中,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的靈活訪問。

ORM作為邏輯層和數(shù)據(jù)層中間的持久層映射機(jī)制,提供了實(shí)現(xiàn)持久化層的另一種模式,比較常見的ORM框架有Hibernate、iBatis、Ling to Sql等,由于iBatis屬于輕量級(jí)框架,集成到程序中沒有侵入性,所以使用起來(lái)非常靈活。它通過(guò)map將類對(duì)象映射成sql增刪查改語(yǔ)句和將結(jié)果集轉(zhuǎn)換成實(shí)體對(duì)象,解決了實(shí)體對(duì)象與輸入?yún)?shù)和結(jié)果集的映射,又讓用戶方便的根據(jù)實(shí)際業(yè)務(wù)需求動(dòng)態(tài)手寫sql語(yǔ)句,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)映射功能。如圖3所示。

圖3 加入iBatis框架圖示

ASP.NET MVC集成iBatis映射機(jī)制后,數(shù)據(jù)訪問更有針對(duì)性,程序員編寫的SQL語(yǔ)句更具備操作優(yōu)勢(shì),語(yǔ)言對(duì)象與關(guān)系數(shù)據(jù)之間的交互更具便捷靈活。

3 從MVC中分離BCL業(yè)務(wù)邏輯層

目前,MVC模式在.NET平臺(tái)上的應(yīng)用還有改進(jìn)的空間,比如實(shí)現(xiàn)操作功能的處理邏輯綁定在控制器中,當(dāng)用戶的業(yè)務(wù)需求發(fā)生改變,或者設(shè)計(jì)者的處理思路發(fā)生變化,想要對(duì)原本的邏輯進(jìn)行修改,就需要重新設(shè)計(jì)控制器的業(yè)務(wù)流程,如此開發(fā)系統(tǒng)缺乏靈活性,加重修改工作的難度,為了使軟件開發(fā)框架更加成熟,在開發(fā)過(guò)程中,當(dāng)出現(xiàn)企業(yè)的日常管理事務(wù)囊括大量的數(shù)據(jù)并且業(yè)務(wù)邏輯錯(cuò)綜繁瑣的情況下,對(duì)ASP.NET MVC架構(gòu)進(jìn)行改進(jìn)。

在原來(lái)的MVC模式的層次下,繼續(xù)精細(xì)劃分層次,進(jìn)一步將ASP.NET MVC控制器中的業(yè)務(wù)邏輯模塊抽離出來(lái),單獨(dú)成層,形成更加獨(dú)立的業(yè)務(wù)邏輯處理層。BCL業(yè)務(wù)邏輯層,B即Bussiness Logic,處理業(yè)務(wù)邏輯,C即Access Control訪問控制,包括權(quán)限驗(yàn)證、登錄驗(yàn)證控制、數(shù)據(jù)訪問方法等功能。BCL層使得系統(tǒng)的整體架構(gòu)更加清晰簡(jiǎn)潔。如圖4所示。

5 結(jié) 語(yǔ)

本文基于企業(yè)無(wú)紙化辦公的信息需求,分析了MVC模式在開發(fā)中的主導(dǎo)作用,通過(guò)對(duì)ASP.NET MVC框架構(gòu)建Web項(xiàng)目的流程、思想、應(yīng)用、技術(shù)的研究,并對(duì)MVC三層結(jié)構(gòu)進(jìn)行完善,完成一套基于ASP.NET MVC的、完整覆蓋表現(xiàn)層、邏輯層、數(shù)據(jù)訪問層等三層架構(gòu)的ASP.NET平臺(tái)開發(fā)架構(gòu),在軟件系統(tǒng)開發(fā)中有實(shí)際的應(yīng)用意義。

[1] 蔣金楠.ASP.NET MVC4框架揭秘[M].北京:電子工業(yè)出版社,2013:13.

[2] 劉耀欽,袁承芬.MVC設(shè)計(jì)模式在Web開發(fā)中的應(yīng)用與研究[J].信息技術(shù),2013, 11:78-80.

[3] 査衛(wèi)亮.基于.NET環(huán)境的MVC開發(fā)模式[J].軟件開發(fā)與應(yīng)用,2015,21:37-39.

[4] 李容.基于MVC模式的WEB應(yīng)用研究[J].軟件導(dǎo)刊,2010,9(01):19-21.

[5] 胡君.基于MVC模式的數(shù)據(jù)訪問模型設(shè)計(jì)[J].電腦與信息技術(shù),2010,18(5):68-70.

[6] 陳輝,丁春莉,孫悅.ASP.NET MVC軟件架構(gòu)模式在學(xué)生實(shí)訓(xùn)管理系統(tǒng)的應(yīng)用[J].電子設(shè)計(jì)工程,2015,7(13):11-14.

[7] 高宏,王婷婷.基于MVC和Entity Framework的團(tuán)餐系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代,2014,12:65-68.

The Exploration and Research of Software Development Architecture Based on ASP.NET MVC Pattern

TONG Yin

(China Academy of Electronics and Information Technology, Beijing 100041,China)

The paper analyses ASP.NET MVC architecture which apply to enterprise daily management flow ,and makes particular discussion as well as study of system technical architecture in the process of development. Improving technology which is based on the architecture by separating it’s concerns, at the same time,we will extract BCL logic processing layer in order to concentrating on the processing of complex business logic and make data transmission flexible by integrating more lightweight Data-access Mapping Layer into system. The improved architecture present good scalability and maintainability by right of clear architectural layers, it provides reference for common development patterns of enterprise application system architecture.

ASP.NET MVC; logic processing layer BCL; iBatis

10.3969/j.issn.1673-5692.2016.06.007

2016-09-06

2016-10-30

:A

1673-5692(2016)06-599-04

仝 茵(1987—),女,河北人,主要研究方向?yàn)樾畔⒓夹g(shù);

E-mail:781163647@qq.com

猜你喜歡
視圖架構(gòu)邏輯
基于FPGA的RNN硬件加速架構(gòu)
刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
法律方法(2022年2期)2022-10-20 06:44:24
邏輯
創(chuàng)新的邏輯
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
汽車工程(2021年12期)2021-03-08 02:34:30
女人買買買的神邏輯
37°女人(2017年11期)2017-11-14 20:27:40
5.3 視圖與投影
視圖
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
Y—20重型運(yùn)輸機(jī)多視圖
宜黄县| 原平市| 临颍县| 连江县| 房山区| 翁源县| 婺源县| 新田县| 柞水县| 当雄县| 榆林市| 高邮市| 九江市| 上栗县| 鄂伦春自治旗| 许昌县| 通道| 伊川县| 泰兴市| 九台市| 武胜县| 宁南县| 抚顺县| 合水县| 武定县| 上栗县| 神木县| 磐石市| 临泉县| 宁明县| 山西省| 安陆市| 合江县| 泽州县| 博野县| 金平| 财经| 八宿县| 余姚市| 大安市| 澄迈县|