MVC項目實踐,在三層架構下實現SportsStore,從類圖看三層架構


在"MVC項目實踐,在三層架構下實現SportsStore-02,DbSession層、BLL層"一文的評論中,博友浪花一朵朵建議用類圖來理解本項目的三層架構。於是就有了本篇:

 

  IDAL層

IDAL

 

→IBaseRepository接口,基接口,提供泛型實現

所有的數據接口層的方法基本上是一樣的,包括查詢、分頁查詢、添加、批量添加、更新、批量更新、刪除、批量刪除等。所以,有必要針對所有的數據接口提煉出基接口,提供泛型實現。

 

→IProductRepository接口

實現IBaseRepository接口。

 

→IDbContextFactory接口,當前EF上下文的抽象工廠

在DAL的BaeRepository中一定會用到EF上下文,我們借助IDbContextFactory這個"抽象工廠"生產DbContext的實例。

 

→IDbSession接口,數據庫訪問層的統一入口接口

主要做了3件事:
1、提交所有變化
2、拿到各個IXXXRepository類型
3、執行SQL語句

 

→IDbSessionFactory接口,IDbSession接口的抽象工廠

在BLL的BaseService中一定會用到IDbSession這個數據層的統一入口,我們借助IDbSessionFactory這個"抽象工廠"生產IDbSession的實例。

 

  DAL層

DAL

 

→BaseRepository,所有XXXRepository的基類,提供泛型實現

BaseRepository沒必要實現IBaseRepository,因為它的存在是為了避免各個XXXRepository代碼重復,它提供了各個XXXRepository的泛型實現。

BaseRepository實現IDisposable接口后,以便實施手動回收。

 

→ProductRepository

派生於BaseRepository<Product>基類。
實現IProductRepository接口,它的行為受IProductRepository約束。

 

→DbContextFactory,實現抽象工廠IDbContextFactory接口,用來生產EF上下文實例

它的實現過程保證了在當前線程內獲取唯一EF上下文實例。

 

→DbSession,對IDbSession接口的實現

主要做了3件事:
1、提交所有變化
2、拿到各個IXXXRepository類型
3、執行SQL語句

 

→DbSessionFactory,實現IDbSessionFactory接口

它的實現過程保證了在當前線程內獲取唯一數據層訪問入口IDbSession實例。

 

  IBLL層

IBLL

 

→IBaseService,是所有IXXXService接口的基接口,提供了泛型實現

它的實現避免了各個IXXXService接口的重復部分。

 

→IProductService,對基接口IBaseService<Product>的實現

 

  BLL層

BLL

 

→BaseService,是所有XXXService的基類,提供了泛型實現

他的實現避免了各個XXXService的重復部分。
實現IDisposable接口后,以便實施手動回收。

 

→ProductService,派生於BaseService<Product>基類。
它的行為受實現IProductService接口約束。

 

源碼在這里

 

“MVC項目實踐,在三層架構下實現SportsStore”系列包括:

MVC項目實踐,在三層架構下實現SportsStore,從類圖看三層架構

MVC項目實踐,在三層架構下實現SportsStore-01,EF Code First建模、DAL層等

MVC項目實踐,在三層架構下實現SportsStore-02,DbSession層、BLL層

MVC項目實踐,在三層架構下實現SportsStore-03,Ninject控制器工廠等

MVC項目實踐,在三層架構下實現SportsStore-04,實現分頁

MVC項目實踐,在三層架構下實現SportsStore-05,實現導航

MVC項目實踐,在三層架構下實現SportsStore-06,實現購物車

MVC項目實踐,在三層架構下實現SportsStore-07,實現訂單提交

MVC項目實踐,在三層架構下實現SportsStore-08,部署到IIS服務器

MVC項目實踐,在三層架構下實現SportsStore-09,ASP.NET MVC調用ASP.NET Web API的查詢服務

MVC項目實踐,在三層架構下實現SportsStore-10,連接字符串的加密和解密


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM