1、YourName.Web ==>表現層
Controllers==>控制器 (只負責直接調用應用層處理業務)
Filters==>個助攻過濾器
……==>其他分類文件
2、YourName.Application==>應用層(實現表現層所需的業務)
Base==>父服務文件夾
Dtos=>以服務方法名加Input或OutPut結尾的數據傳輸對象類
IBaseService.cs==>父服務接口類
BaseService.cs==>父服務實現類
MapperProfile==>對象映射配置【可選】
Student==>學生服務文件夾
Dtos=>以服務方法名加Input或OutPut結尾的數據傳輸對象類
IStudentService.cs==>學生服務接口類
StudentService.cs==>學生服務實現類
MapperProfile==>對象映射配置【可選】
……==>其他服務
3、YourName.Core==>核心領域層【可選】
Entity==>實體文件夾
Student==>學生相關實體文件夾
……==>其他實體文件夾
IRepositories==>倉儲接口文件夾
IRepository.cs==>倉儲接口
……==>其他相關
Manager==>領域服務文件夾
IStudentManager==>學生領域服務接口類
StudentManager.cs==>學生領域服務接口實現類
……==>其他領域服務
4、YourName.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