多層結構來開發ASP.NET程序
發表時間:2024-06-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]最近我們用ASP.NET開發了一個企業內部的軟件開發管理系統,這也是我們第一次用ASP.NET,用的語言是C#。下面我著重講一下我們系統的架構,懇請大家指點。先講講系統開發的背景。系統不大,開發的目的也是用來管理我們公司的軟件開發流程,同時達到學習.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的基礎上改良了很多,很