個人總結理想DDD分層架構

1YourName.Web ==>表現層

Controllers==>控制器 (只負責直接調用應用層處理業務)

Filters==>個助攻過濾器

 ……==>其他分類文件

 

2YourName.Application==>應用層(實現表現層所需的業務) 

Base==>父服務文件夾

Dtos=>以服務方法名加InputOutPut結尾的數據傳輸對象類

IBaseService.cs==>父服務接口類

BaseService.cs==>父服務實現類

MapperProfile==>對象映射配置【可選】

Student==>學生服務文件夾

Dtos=>以服務方法名加InputOutPut結尾的數據傳輸對象類

IStudentService.cs==>學生服務接口類

StudentService.cs==>學生服務實現類

MapperProfile==>對象映射配置【可選】

……==>其他服務

 

3YourName.Core==>核心領域層【可選】

Entity==>實體文件夾

Student==>學生相關實體文件夾

……==>其他實體文件夾

IRepositories==>倉儲接口文件夾

IRepository.cs==>倉儲接口

……==>其他相關

Manager==>領域服務文件夾

IStudentManager==>學生領域服務接口類

StudentManager.cs==>學生領域服務接口實現類

……==>其他領域服務

 

4YourName.Infrastructure ==>基礎設施層(提供整個業務系統的基礎服務)

StringHelper.cs==>字符串幫助類

MD5Helper.cs==>md5加密幫助類

 ……==>其他基礎服務

 

5、YourName.EntityFramwork==>EF基礎設施層【可選】

Migrations==>數據庫遷移文件夾

EntityFrameworkCore==>ef核心代碼

Repository==>倉儲文件夾

Repository.cs==>>倉儲接口實現類

……==>其他相關

YourNameDBContext.cs==>數據庫上下文

備註:

1、如果架構需要倉儲則建議創建領域層(YourName.Core

2、如果使用ef等重框架建議不要把代碼放到基礎設施層而是單獨一

3、關於MapperProfile

(1) 如果orm可以直接操作dto對數據庫數據進行操作,則建議去除該文件

(2) 如果(1)滿足幷包含領域層則該文件建議只用於領域實體和應用層dto的轉換

4、項目分層建議根據項目情況和團隊及個人能力進行合理分層

 

 

========================各層概念==========================

表現層(Presentation Layer):用戶界面層包括用戶輸入和數據展示。

應用層(Application Layer):應用層定義系統的業務功能,並指揮領域層中的領域對象實現這些功能

領域層(Domain Layer):核心層,實現所有業務邏輯。

基礎設施層(Infrastructure Layer):提供整個業務系統的基礎服務。

 

參考地址:http://t.zoukankan.com/djd66-p-9505103.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章