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

Darren Ji發表於2014-07-07

在"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,連線字串的加密和解密

相關文章