可是今年來了以後,老師讓做即墨公司的語音項目,一直進行的是windows編程,沒有接觸網站方面的。現在項目基本做完了,開始ASP.NET的學習了。 現在petshop的最新版本已經出到了4.0,下載安裝完成,把Web作為啟動項目,ctrl+F5,運行,出現了激動人心的petshop網站頁面,整體風格 ...
可是今年來了以後,老師讓做即墨公司的語音項目,一直進行的是windows編程,沒有接觸網站方面的。現在項目基本做完了,開始ASP.NET的學習了。
現在petshop的最新版本已經出到了4.0,下載安裝完成,把Web作為啟動項目,ctrl+F5,運行,出現了激動人心的petshop網站頁面,整體風格令人耳目一新。查看源代碼,根據李天平老師的講解,我對整個項目做瞭如下的分析。
微軟推薦的分層式結構一般分為三層,從下至上分別為:數據訪問層、業務邏輯層(又或成為領域層)、表示層,如圖
數據訪問層:有時候也稱為是持久層,其功能主要是負責資料庫的訪問。簡單的說法就是實現對數據表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那麼就會包括對象和數據表之間的mapping,以及對象實體的持久化。在PetShop的數據訪問層中,並沒有使用ORM,從而導致了代碼量的增加,可以看作是整個設計實現中的一大敗筆。
業務邏輯層:是整個系統的核心,它與這個系統的業務(領域)有關。以PetShop為例,業務邏輯層的相關設計,均和網上寵物店特有的邏輯相關,例如查詢寵物,下訂單,添加寵物到購物車等等。如果涉及到資料庫的訪問,則調用數據訪問層。
表示層:是系統的UI部分,負責使用者與整個系統的交互。在這一層中,理想的狀態是不應包括系統的業務邏輯。表示層中的邏輯代碼,僅與界面元素有關。在PetShop中,是利用ASP.Net來設計的,因此包含了許多Web控制項和相關邏輯。
分層式結構究竟其優勢何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一書中給出了答案:
1、開發人員可以只關註整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利於標準化;
5、利於各層邏輯的復用。
概括來說,分層式設計可以達至如下目的:分散關註、鬆散耦合、邏輯復用、標准定義。
一個好的分層式結構,可以使得開發人員的分工更加明確。一旦定義好各層次之間的介面,負責不同邏輯設計的開發人員就可以分散關註,齊頭併進。例如UI人員只需考慮用戶界面的體驗與操作,領域的設計人員可以僅關註業務邏輯的設計,而資料庫設計人員也不必為繁瑣的用戶交互而頭疼了。每個開發人員的任務得到了確認,開發進度就可以迅速的提高。
鬆散耦合的好處是顯而易見的。如果一個系統沒有分層,那麼各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發生改變,則牽一發而動全身,對項目的影響極為嚴重。降低層與層間的依賴性,既可以良好地保證未來的可擴展,在復用性上也是優勢明顯。每個功能模塊一旦定義好統一的介面,就可以被各個模塊所調用,而不用為相同的功能進行重覆地開發。
進行好的分層式結構設計,標準也是必不可少的。只有在一定程度的標準化基礎上,這個系統才是可擴展的,可替換的。而層與層之間的通信也必然保證了介面的標準化。