Web項目結構分層
阿新 • • 發佈:2018-07-16
pub 負責 frame present http res hibernate framework 案例 ,本層不關心數據數據查詢和存儲的邏輯。
分層的必要性
一個項目必然有其相應的業務邏輯,而一般的業務邏輯不可能特別簡單。如果將這樣的項目寫在一層,那麽這層的邏輯將會變的復雜,不利於後期的維護。如果根據不同的功能進行分層,每層負責相應的邏輯,則提高程序的可讀性,利於後期維護。
分層介紹
這裏將項目分為5層,如果項目不是特別復雜,可以適當減少層數。5層分別為:業務邏輯層、數據訪問稱、服務稱、表現層和用戶層。
案例
這裏利用一個小案例大概展示下各層的協作,關於各層的詳細作用將在以後講解。案例如下:
超市分別向一般顧客和零售商出售商品。現在搞打折活動,一般顧客和零售商采用不同的打折策咯。
業務邏輯層(Business Logic)
主要包括業務所涉及的實體(Model)和實體(Model)間的業務邏輯,根據具體情況采用相應的設計模式(Design Pattern)使代碼滿足設計原則。
聲明數據訪問的接口IProductRepository
數據訪問稱
這裏采用倉儲模式Repository
,一般采用ORM框架。常用的ORM框架有Entity Framework和NHibernate。
服務層
一般需要發布服務的項目需要服務層,根據外觀模式Facde
隱藏業務業務邏輯。
定義請求和返回數據類,數據返回類型結構一般為
public class ProductListResponse { public bool Success { get; set; } public string Message { get; set; } public IList<ProductViewModel> Products { get; set; } }
而且這裏會涉及到對象的映射,添加viewModel,只包含需要用戶看的的屬性(可用第三方插件AutoMapper
)。
表現層
用戶表現層的操作邏輯。常用的模式有MVC和MVVM模式,目的是表現層邏輯與UI層邏輯分離。MVVM的優點是可脫離UI層創建單元測試,但是為每個頁面創建指揮類Presenter
也會增加代碼維護負擔。
UI
展現給用戶的界面層。一般需要結合CSS控制頁面樣式和Javascript頁面交互。
代碼下載
Web項目結構分層