第三章 项目结构
源代码GitHub:https://github.com/ZhaoRd/Zrd_0001_AuthorityManagement
1.介绍
中秋节前后回了一趟老家,搁置了博客的更新,回到无锡后补了补工作上的事情,今天挤点时间来谢谢博客。
本篇主要介绍本Demo的分层结构、项目组织以及引用关系的内容。该demo是使用DDD推荐的分层结构,主要包括基础设施层、领域层、应用层和展示层;项目组织通过解决方案文件夹进行组织,通过解决方案文件夹,可以对项目进行分门别类的进行管理;在引用关系上,依据依赖倒转原则,上层类库不依赖底层实现类库,底层实现类库依赖上层类库接口。
2.DDD分层结构(参考 http://www.cnblogs.com/mienreal/p/4534598.html)
2.1 基础设施层(Infrastructure)
基础设施层主要包括两个程序集,一个是项目中需要依赖的公共资源,必须加密解密等等一些工具;另一个是实现数据持久化的项目,实现领域层定义的仓储接口,可以使用ORM工具,例如EntityFramework.
2.2 领域层(Core)
项目的核心层,所有与项目有关的核心算法和实现放在这一层,主要包括领域对象、值对象、仓储、领域服务、领域事件等内容
2.3 应用层(Application)
协调领域层资源,提供服务方法供展示层调用,不包含业务逻辑。
使用dto和automapper
2.4 展示层(Presentation)
使用不同的展示技术提供用户操作界面,实现用户交互操作。
该demo主要使用mvc4,前端使用angularjs
3.项目组织结构
该demo改用的结构如下,参考郭明峰博客
1-Infrastructure 主要放基础设施层的程序集
2-Core 主要是放和项目有关的的程序集
3-Applicatgion 主要是实现展示层定义的接口,依赖Core
4-Presentation 主要包括展示层使用的接口和一个web项目
4.引用关系
引用关系图如上所示,其中青色的线表示程序集实现依赖另一个程序集,粉红色的是依赖。
1-Infrastructure里的Data.dll是数据持久层的实现,依赖Core.Domain.dll,仓储接口定义在Core.Domain.dll
展示层使用的接口定义在 Presentations.dll里,Applications.dll实现Persentations.dll定义的接口,在Applications.dll里配置automapper的初始化
依赖倒转主要是使用IOC容器实现的,本案例采用autofac实现IOC
推荐QQ群:
278252889(AngularJS中文社区)
5008599(MVC EF交流群)
134710707(ABP架构设计交流群 )
59557329(c#基地 )
230516560(.NET DDD基地 )
本人联系方式:QQ:351157970