多層結構來開發ASP.NET程式
最後更新:2017-02-28
來源:互聯網
上載者:User
asp.net|程式 最近我們用ASP.NET開發了一個企業內部的軟體開發管理系統,這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統的架構,懇請大家指點。
先講講系統開發的背景。系統不大,開發的目的也是用來管理我們公司的軟體開發流程,同時達到學習.NET的目的。既然是公司自己的系統,同時還帶有學習的目的,所以在系統的架構上,我們也力求結構完整和清晰,而把效能等其他放在第二位考慮。存在很多不完善的地方也是在所難免的,大家帶著批判的眼光來看待它就好了:)
系統分為4層,分別為(Web)展示層、(Facade)業務外觀層、(Rules)商務邏輯層和(Data)資料層。每層分別屬於自己的Project。另外還有一個用於處理共通業務的Project。他們之間互相的調用關係如下所示:
Web --> Facade --> Rules --> Data --> DB
下面分別來講講每層的作用和特點:
Data層叫資料層,它負責資料的提取和轉換。Data層繼承自DataTable。在它上面建立了一個資料庫的映射關係,也就是說,資料庫的每一個欄位在這裡都有一個常量和它關聯。它封裝好了Select,insert和update方法。你可以像操作DataTable那樣來操作它,比如取值前先調用Select方法,然後再用oData.GetValue(i,資料庫欄位的別名)就可以取得值了。插入和更新操作前先用oData.GetValue(i,資料庫欄位的別名,value)設定值,然後再調用Insert或者Update方法。通過這層,就把資料庫的定義和上層商務邏輯分離開了。
Data上面是Rules層。Rules層叫規則層,那它主要做什麼呢?其實很簡單,Data層相當於是資料庫的一個記錄集,它可能包括了很多條記錄。而Rules這一層則把包含多條記錄的Data對象拆分成多個Rules對象,通過提供屬性的方式給Facade層調用。在這一層上,根據商務規則做一些處理和檢查操作。上一層就可以通過調用Rules對象不同的屬性來擷取相應的處理後的值。
Facade層叫業務外觀層,它在Rules層的上一層。它主要負責一些業務的外觀處理,組織多個Rules對象和為Web層提供顯示準備等。
最上層就是Web展示層了。它負責處理頁面上的一些check和顯示的制禦等等。
以上結構也是參考了微軟的Duwamish 7.0。並且每層的命名完全是按照微軟的命名來的。在具體實施的過程中,根據上面的設計,Data和Rules層已經很有規律了,而且資料庫的定義是通過我們公司的另外一個系統來管理的,資料庫表和列的定義都可以很方便的得到,於是我們製作了一個自動產生Data層和Rules層的小工具,這個小工具能自動產生Data層和Rules層的類,你要做的僅僅是根據你的業務來充實Rules層的類和處理Facade和Web層了,這樣就大大地減輕了我們的負擔。
系統現在已經編碼測試完成正準備投入試用。由於是在企業內部網上使用,也沒感覺慢:)。但是效能不好是肯定的了,接下來就是要想辦法如何來提高效能了。
在開發的過程中,自己也總是不斷的拿它來跟JSP比較。個人ASP.NET還是很不錯的,它可以讓你象傳統型程式開發那樣來開發WEB程式,微軟也提供了很豐富的控制項,但是很多控制項感覺有點像雞肋,好像用起來挺方便,但是卻有各方面的缺陷不是很實用。另外VS.NET這套開發工具還有很多Bug,由於是在進行WEB開發的時候(我們用的是2003版)。不過據說VS.NET 2005在2003的基礎上改良了很多,很值得期待。