源代码GitHub:https://github.com/ZhaoRd/Zrd_0001_AuthorityManagement

1.介绍

      中秋节前后回了一趟老家,搁置了博客的更新,回到无锡后补了补工作上的事情,今天挤点时间来谢谢博客。

      本篇主要介绍本Demo的分层结构、项目组织以及引用关系的内容。该demo是使用DDD推荐的分层结构,主要包括基础设施层、领域层、应用层和展示层;项目组织通过解决方案文件夹进行组织,通过解决方案文件夹,可以对项目进行分门别类的进行管理;在引用关系上,依据依赖倒转原则,上层类库不依赖底层实现类库,底层实现类库依赖上层类库接口。

2.DDD分层结构(参考 )

        2.1  基础设施层(Infrastructure)

               基础设施层主要包括两个程序集,一个是项目中需要依赖的公共资源,必须加密解密等等一些工具;另一个是实现数据持久化的项目,实现领域层定义的仓储接口,可以使用ORM工具,例如EntityFramework.

        2.2  领域层(Core)

               项目的核心层,所有与项目有关的核心算法和实现放在这一层,主要包括领域对象、值对象、仓储、领域服务、领域事件等内容

        2.3  应用层(Application)

               协调领域层资源,提供服务方法供展示层调用,不包含业务逻辑。

               使用dto和automapper

        2.4  展示层(Presentation)

               使用不同的展示技术提供用户操作界面,实现用户交互操作。

               该demo主要使用mvc4,前端使用angularjs

3.项目组织结构

   该demo改用的结构如下,参考郭明峰博客

ios 项目结构设计 项目结构模式_程序集

   1-Infrastructure 主要放基础设施层的程序集

   2-Core 主要是放和项目有关的的程序集

   3-Applicatgion 主要是实现展示层定义的接口,依赖Core

   4-Presentation 主要包括展示层使用的接口和一个web项目

4.引用关系

ios 项目结构设计 项目结构模式_基础设施_02

引用关系图如上所示,其中青色的线表示程序集实现依赖另一个程序集,粉红色的是依赖。

1-Infrastructure里的Data.dll是数据持久层的实现,依赖Core.Domain.dll,仓储接口定义在Core.Domain.dll

展示层使用的接口定义在 Presentations.dll里,Applications.dll实现Persentations.dll定义的接口,在Applications.dll里配置automapper的初始化

依赖倒转主要是使用IOC容器实现的,本案例采用autofac实现IOC