个人总结理想DDD分层架构
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==>核心领域层【可选】
Entites==>实体文件夹
Student==>学生相关实体文件夹
……==>其他实体文件夹
IRepositories==>仓储接口文件夹
IRepository.cs==>仓储接口
……==>其他相关
Managers==>领域服务文件夹
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

浙公网安备 33010602011771号