多層結(jié)構(gòu)來開發(fā)ASP.NET程序
發(fā)表時(shí)間:2024-06-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]最近我們用ASP.NET開發(fā)了一個(gè)企業(yè)內(nèi)部的軟件開發(fā)管理系統(tǒng),這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統(tǒng)的架構(gòu),懇請(qǐng)大家指點(diǎn)。先講講系統(tǒng)開發(fā)的背景。系統(tǒng)不大,開發(fā)的目的也是用來管理我們公司的軟件開發(fā)流程,同時(shí)達(dá)到學(xué)習(xí).NET的目的。既然是公司自己的系統(tǒng),同時(shí)還帶有學(xué)...
最近我們用ASP.NET開發(fā)了一個(gè)企業(yè)內(nèi)部的軟件開發(fā)管理系統(tǒng),這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統(tǒng)的架構(gòu),懇請(qǐng)大家指點(diǎn)。
先講講系統(tǒng)開發(fā)的背景。系統(tǒng)不大,開發(fā)的目的也是用來管理我們公司的軟件開發(fā)流程,同時(shí)達(dá)到學(xué)習(xí).NET的目的。既然是公司自己的系統(tǒng),同時(shí)還帶有學(xué)習(xí)的目的,所以在系統(tǒng)的架構(gòu)上,我們也力求結(jié)構(gòu)完整和清晰,而把性能等其他放在第二位考慮。存在很多不完善的地方也是在所難免的,大家?guī)е械难酃鈦砜创秃昧耍海?br>
系統(tǒng)分為4層,分別為(Web)表示層、(Facade)業(yè)務(wù)外觀層、(Rules)業(yè)務(wù)邏輯層和(Data)數(shù)據(jù)層。每層分別屬于自己的Project。另外還有一個(gè)用于處理共通業(yè)務(wù)的Project。他們之間互相的調(diào)用關(guān)系如下所示:
Web --> Facade --> Rules --> Data --> DB
下面分別來講講每層的作用和特點(diǎn):
Data層叫數(shù)據(jù)層,它負(fù)責(zé)數(shù)據(jù)的提取和轉(zhuǎn)換。Data層繼承自DataTable。在它上面建立了一個(gè)數(shù)據(jù)庫(kù)的映射關(guān)系,也就是說,數(shù)據(jù)庫(kù)的每一個(gè)字段在這里都有一個(gè)常量和它關(guān)聯(lián)。它封裝好了Select,insert和update方法。你可以像操作DataTable那樣來操作它,比如取值前先調(diào)用Select方法,然后再用oData.GetValue(i,數(shù)據(jù)庫(kù)字段的別名)就可以取得值了。插入和更新操作前先用oData.GetValue(i,數(shù)據(jù)庫(kù)字段的別名,value)設(shè)置值,然后再調(diào)用Insert或者Update方法。通過這層,就把數(shù)據(jù)庫(kù)的定義和上層業(yè)務(wù)邏輯分離開了。
Data上面是Rules層。Rules層叫規(guī)則層,那它主要做什么呢?其實(shí)很簡(jiǎn)單,Data層相當(dāng)于是數(shù)據(jù)庫(kù)的一個(gè)記錄集,它可能包括了很多條記錄。而Rules這一層則把包含多條記錄的Data對(duì)象拆分成多個(gè)Rules對(duì)象,通過提供屬性的方式給Facade層調(diào)用。在這一層上,根據(jù)業(yè)務(wù)規(guī)則做一些處理和檢查操作。上一層就可以通過調(diào)用Rules對(duì)象不同的屬性來獲取相應(yīng)的處理后的值。
Facade層叫業(yè)務(wù)外觀層,它在Rules層的上一層。它主要負(fù)責(zé)一些業(yè)務(wù)的外觀處理,組織多個(gè)Rules對(duì)象和為Web層提供顯示準(zhǔn)備等。
最上層就是Web表示層了。它負(fù)責(zé)處理頁(yè)面上的一些check和顯示的制御等等。
以上結(jié)構(gòu)也是參考了微軟的Duwamish 7.0。并且每層的命名完全是按照微軟的命名來的。在具體實(shí)施的過程中,根據(jù)上面的設(shè)計(jì),Data和Rules層已經(jīng)很有規(guī)律了,而且數(shù)據(jù)庫(kù)的定義是通過我們公司的另外一個(gè)系統(tǒng)來管理的,數(shù)據(jù)庫(kù)表和列的定義都可以很方便的得到,于是我們制作了一個(gè)自動(dòng)生成Data層和Rules層的小工具,這個(gè)小工具能自動(dòng)生成Data層和Rules層的類,你要做的僅僅是根據(jù)你的業(yè)務(wù)來充實(shí)Rules層的類和處理Facade和Web層了,這樣就大大地減輕了我們的負(fù)擔(dān)。
系統(tǒng)現(xiàn)在已經(jīng)編碼測(cè)試完成正準(zhǔn)備投入試用。由于是在企業(yè)內(nèi)部網(wǎng)上使用,也沒感覺慢:)。但是性能不好是肯定的了,接下來就是要想辦法如何來提高性能了。
在開發(fā)的過程中,自己也總是不斷的拿它來跟JSP比較。個(gè)人ASP.NET還是很不錯(cuò)的,它可以讓你象桌面程序開發(fā)那樣來開發(fā)WEB程序,微軟也提供了很豐富的控件,但是很多控件感覺有點(diǎn)像雞肋,好像用起來挺方便,但是卻有各方面的缺陷不是很實(shí)用。另外VS.NET這套開發(fā)工具還有很多Bug,由于是在進(jìn)行WEB開發(fā)的時(shí)候(我們用的是2003版)。不過據(jù)說VS.NET 2005在2003的基礎(chǔ)上改良了很多,很