謝振華
摘要:為了提高web應(yīng)用程序的健壯性,擴(kuò)展性和兼容性等功能,就必須對(duì)網(wǎng)站進(jìn)行架構(gòu)設(shè)計(jì)。該文將基于asp.net 技術(shù)開發(fā)的web應(yīng)用程序進(jìn)行架構(gòu)設(shè)計(jì)。首先對(duì)asp.net 的web應(yīng)用程序進(jìn)行三層設(shè)計(jì),三層依次為,數(shù)據(jù)訪問層,業(yè)務(wù)邏輯層和用戶接口層,然后對(duì)三層之間進(jìn)行解耦。通過解耦,讓數(shù)據(jù)訪問層的改變不會(huì)影響業(yè)務(wù)邏輯層的代碼,業(yè)務(wù)邏輯層的改變不會(huì)影響用戶接口層的代碼。通過對(duì)asp.net技術(shù)的網(wǎng)站開發(fā)進(jìn)行架構(gòu)設(shè)計(jì),使asp.net技術(shù)在網(wǎng)站開發(fā)中的優(yōu)勢(shì)得到最大程度的開發(fā)。
關(guān)鍵詞:asp.Net;架構(gòu);解耦
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)02-0094-02
1 背景
在現(xiàn)在的網(wǎng)站開發(fā)過程中,客戶對(duì)網(wǎng)站的要求越來越高,web應(yīng)用程序的可擴(kuò)展性,健壯性,兼容性和代碼復(fù)用等功能是我們必須要考慮的,基于asp.net技術(shù)的網(wǎng)站開發(fā)進(jìn)行架構(gòu)設(shè)計(jì)是必須的。通過架構(gòu)設(shè)計(jì),使每層都完成自己的功能,并且每層的都不互相影響,這樣就會(huì)使原本復(fù)雜的程序更加清晰,而且對(duì)程序的穩(wěn)定性和擴(kuò)展性都起到了重要的作用。
2 asp.net 技術(shù)
asp.net技術(shù)是微軟公司開發(fā)和支持的web應(yīng)用程序開發(fā)技術(shù),是目前最流行的三大主流web開發(fā)技術(shù)之一。在asp.net 上可以充分運(yùn)用.net framework所提供的所有功能。。而采用ASP.net 技術(shù)進(jìn)行開發(fā)應(yīng)用的所有程序都可以無限制的支持異??刂?、類型安全、繼承和動(dòng)態(tài)編譯。另外,運(yùn)用ASP.net 技術(shù)所編制的程序打破了原有很多程序都不能多方面支持強(qiáng)類型語言編寫的局限,進(jìn)一步發(fā)展了面向?qū)ο缶幊痰某绦蜷_發(fā)技術(shù)。[1]
3 asp.net 層次架構(gòu)設(shè)計(jì)
Asp.net在web應(yīng)用程序開發(fā)時(shí),進(jìn)行以下幾個(gè)步驟的架構(gòu)設(shè)計(jì)。
第一步,對(duì)web應(yīng)用程序進(jìn)行三層結(jié)構(gòu)設(shè)計(jì),分別分為數(shù)據(jù)訪問層,業(yè)務(wù)邏輯層和數(shù)據(jù)表現(xiàn)層。數(shù)據(jù)訪問層,指的是接受業(yè)務(wù)邏輯層的請(qǐng)求,對(duì)數(shù)據(jù)庫里的數(shù)據(jù)進(jìn)行處理之后,將結(jié)果返回給業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯層,指的是接收數(shù)據(jù)表示層的業(yè)務(wù)請(qǐng)求,將該業(yè)務(wù)請(qǐng)求分解成一組操作序列,給數(shù)據(jù)訪問層,業(yè)務(wù)完成之后,將業(yè)務(wù)結(jié)果返回給數(shù)據(jù)表示層。數(shù)據(jù)表現(xiàn)層,指的是用戶界面,獲取用戶的數(shù)據(jù)和請(qǐng)求傳達(dá)給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層完成獲得響應(yīng)通過表示層給予顯示出來。分層的好處是程序邏輯與思路更清晰,能夠進(jìn)行大量代碼和方法復(fù)用,是大型web網(wǎng)站很好的設(shè)計(jì)思路.
第二步,對(duì)三層之間的緊糅合進(jìn)行解耦,如果不解耦的話,那么數(shù)據(jù)訪問層的變化,會(huì)影響業(yè)務(wù)邏輯層的代碼修改,同樣,業(yè)務(wù)邏輯層的變化,會(huì)導(dǎo)致數(shù)據(jù)表示層大量的代碼修改,這樣整個(gè)程序會(huì)因?yàn)橐粋€(gè)層次代碼的改變影響其他的層次,那么這個(gè)程序架構(gòu)代碼的健壯性和可擴(kuò)展性就不強(qiáng),那么我們就需要解耦來封裝變化點(diǎn)。第一步先對(duì)業(yè)務(wù)邏輯層與數(shù)據(jù)訪問層之間進(jìn)行解糅,常用的解耦的方法常用的有簡單工廠模式和抽象工廠模式,簡單工廠模式解耦不徹底,那么在這里我們采用抽象工廠來進(jìn)行解耦。抽象個(gè)工廠是通過修改web.config配置文件來修改數(shù)據(jù)庫訪問方式,而不需要修改任何數(shù)據(jù)訪問層代碼。第二步對(duì)業(yè)務(wù)邏輯層和數(shù)據(jù)數(shù)據(jù)表示層之間進(jìn)行解耦,可以采用簡單工廠或者抽象工廠,但是在這里我們最好采用第三方框架spring.net框架里的Ioc(控制反轉(zhuǎn))來解耦,Ioc:Inversion of control,創(chuàng)建對(duì)象由原來的開發(fā)人員自己控制轉(zhuǎn)到由容器來控制,那么容器創(chuàng)建對(duì)象通過讀取配置文件來創(chuàng)建不同的對(duì)象,同樣,程序變化點(diǎn)不需要修改代碼本身,而只需要修改配置文件.通過第一步和第二步的解糅,無論數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層如何改變,都不會(huì)影響整個(gè)程序代碼的修改,而只需要修改配置文件進(jìn)行簡單的切換,做到程序的健壯性和擴(kuò)展性.
第三步,對(duì)數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層進(jìn)行抽象操作,將兩層不同對(duì)象的相同的操作進(jìn)行抽象,最常用指的是查詢,刪除,更新和插入操作.
第四步,對(duì)web網(wǎng)站開發(fā)采用mvc設(shè)計(jì)模式,MVC設(shè)計(jì)模式是模型(model)-視圖(view)-控制器(controller)的縮寫, 模型指的是數(shù)據(jù)形式,控制器指的是數(shù)據(jù)的處理, 視圖指的是數(shù)據(jù)的顯示或者表示形式。
通過以上的網(wǎng)站開發(fā)設(shè)計(jì)架構(gòu),用下面的圖1來詳細(xì)表示。
4 結(jié)束語
通過對(duì)web網(wǎng)站開發(fā)進(jìn)行架構(gòu)設(shè)計(jì), 網(wǎng)站的開發(fā)在代碼復(fù)用,健壯性,擴(kuò)展性和兼容性等方面都得到了很大的提高,采用該架構(gòu)設(shè)計(jì)將會(huì)極大的提高軟件開發(fā)效率。
參考文獻(xiàn):
[1] 畢國鋒. ASP.net 技術(shù)的Web 應(yīng)用程序三層設(shè)計(jì)模型研究[J]. 信息產(chǎn)業(yè), 2013(3): 109.
[2] 張信東. 信息系統(tǒng)開發(fā)教程[M]. 北京: 清華大學(xué)出版社, 2003: 35-37.