个人总结理想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==>核心领域层【可选】

Entites==>实体文件夹

Student==>学生相关实体文件夹

……==>其他实体文件夹

IRepositories==>仓储接口文件夹

IRepository.cs==>仓储接口

……==>其他相关

Managers==>领域服务文件夹

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

posted @ 2022-12-10 17:17  兴趣就是天赋  阅读(64)  评论(0编辑  收藏  举报