明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

多層結(jié)構(gòu)來開發(fā)ASP.NET程序

[摘要]最近我們用ASP.NET開發(fā)了一個企業(yè)內(nèi)部的軟件開發(fā)管理系統(tǒng),這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統(tǒng)的架構(gòu),懇請大家指點。先講講系統(tǒng)開發(fā)的背景。系統(tǒng)不大,開發(fā)的目的也是用來管理我們公司的軟件開發(fā)流程,同時達到學習.NET的目的。既然是公司自己的系統(tǒng),同時還帶有學...
最近我們用ASP.NET開發(fā)了一個企業(yè)內(nèi)部的軟件開發(fā)管理系統(tǒng),這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統(tǒng)的架構(gòu),懇請大家指點。

先講講系統(tǒng)開發(fā)的背景。系統(tǒng)不大,開發(fā)的目的也是用來管理我們公司的軟件開發(fā)流程,同時達到學習.NET的目的。既然是公司自己的系統(tǒng),同時還帶有學習的目的,所以在系統(tǒng)的架構(gòu)上,我們也力求結(jié)構(gòu)完整和清晰,而把性能等其他放在第二位考慮。存在很多不完善的地方也是在所難免的,大家?guī)е械难酃鈦砜创秃昧耍海?br>
系統(tǒng)分為4層,分別為(Web)表示層、(Facade)業(yè)務外觀層、(Rules)業(yè)務邏輯層和(Data)數(shù)據(jù)層。每層分別屬于自己的Project。另外還有一個用于處理共通業(yè)務的Project。他們之間互相的調(diào)用關(guān)系如下所示:
Web --> Facade --> Rules --> Data --> DB

下面分別來講講每層的作用和特點:
Data層叫數(shù)據(jù)層,它負責數(shù)據(jù)的提取和轉(zhuǎn)換。Data層繼承自DataTable。在它上面建立了一個數(shù)據(jù)庫的映射關(guān)系,也就是說,數(shù)據(jù)庫的每一個字段在這里都有一個常量和它關(guān)聯(lián)。它封裝好了Select,insert和update方法。你可以像操作DataTable那樣來操作它,比如取值前先調(diào)用Select方法,然后再用oData.GetValue(i,數(shù)據(jù)庫字段的別名)就可以取得值了。插入和更新操作前先用oData.GetValue(i,數(shù)據(jù)庫字段的別名,value)設置值,然后再調(diào)用Insert或者Update方法。通過這層,就把數(shù)據(jù)庫的定義和上層業(yè)務邏輯分離開了。

Data上面是Rules層。Rules層叫規(guī)則層,那它主要做什么呢?其實很簡單,Data層相當于是數(shù)據(jù)庫的一個記錄集,它可能包括了很多條記錄。而Rules這一層則把包含多條記錄的Data對象拆分成多個Rules對象,通過提供屬性的方式給Facade層調(diào)用。在這一層上,根據(jù)業(yè)務規(guī)則做一些處理和檢查操作。上一層就可以通過調(diào)用Rules對象不同的屬性來獲取相應的處理后的值。

Facade層叫業(yè)務外觀層,它在Rules層的上一層。它主要負責一些業(yè)務的外觀處理,組織多個Rules對象和為Web層提供顯示準備等。

最上層就是Web表示層了。它負責處理頁面上的一些check和顯示的制御等等。

以上結(jié)構(gòu)也是參考了微軟的Duwamish 7.0。并且每層的命名完全是按照微軟的命名來的。在具體實施的過程中,根據(jù)上面的設計,Data和Rules層已經(jīng)很有規(guī)律了,而且數(shù)據(jù)庫的定義是通過我們公司的另外一個系統(tǒng)來管理的,數(shù)據(jù)庫表和列的定義都可以很方便的得到,于是我們制作了一個自動生成Data層和Rules層的小工具,這個小工具能自動生成Data層和Rules層的類,你要做的僅僅是根據(jù)你的業(yè)務來充實Rules層的類和處理Facade和Web層了,這樣就大大地減輕了我們的負擔。

系統(tǒng)現(xiàn)在已經(jīng)編碼測試完成正準備投入試用。由于是在企業(yè)內(nèi)部網(wǎng)上使用,也沒感覺慢:)。但是性能不好是肯定的了,接下來就是要想辦法如何來提高性能了。

在開發(fā)的過程中,自己也總是不斷的拿它來跟JSP比較。個人ASP.NET還是很不錯的,它可以讓你象桌面程序開發(fā)那樣來開發(fā)WEB程序,微軟也提供了很豐富的控件,但是很多控件感覺有點像雞肋,好像用起來挺方便,但是卻有各方面的缺陷不是很實用。另外VS.NET這套開發(fā)工具還有很多Bug,由于是在進行WEB開發(fā)的時候(我們用的是2003版)。不過據(jù)說VS.NET 2005在2003的基礎(chǔ)上改良了很多,很