个人总结理想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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构