简单罗列下Weapsy项目几个层,它们分别是
1 Core 核心层
2 Data 数据层
3 Entites 实体层
4 Service 服务层
5 Web层
我想通过对DDD(领域模型)的典型层次来分析这个项目,看看这个项目在架构上有啥优点,说的不好的地方别丢砖就行了- -
首先看下比较公认的3层架构(希望看了后学习上不会有太大的曲线)和DDD的层次划分。(有空我会专门写几个DDD相关的东西)
左边的是三层架构:表现层,业务层和数据访问层。
右边的是DDD通用性分层架构:表现层,应用层,领域层和基础设施层。
通过比较:
- Weapsy的Core 其实对应着基础设施层,不过这里的并不是指领域模型中的基础设施,更恰当的说应该是一些普通项目的核心层,封装一些常用的工具和服务。
- Data暂时好像没有找到对应的层
- Entities 这个对应着领域层,它是其中的一个部分。领域层如果进行细分,会出现一些专门对应的一些领域核心层,领域核心实体扩展层。
- 领域核心层:这个层专门用于进行对领域层的扩展:用于定义一些领域中常用模式的接口,属于上层建筑。如仓储,工作单元等,
- 领域核心扩展层:这个层专门用于对领域层中的实体进行扩展,如实体跟踪,合并等。
- Service:这个层对应着应用层。用于对外提供服务。
- Web层:毫无疑问属于表现层。
OK,这里还有一个Data层,它到底干嘛的?仔细看看它的功能:
- 定义了上下文如何初始化(Initalizers文件夹)。
- 定义了实体之间的关联(Mapping文件夹)。
- 定义了仓储
- 定义了上下文的接口。
- 最后就是上下文。
上下文的初始化和实体关系类这里属于CodeFirst,所以这层其实是由EntityFramework和DDD结合所产生的。(个人理解,有更好的阐述的可以发言哈!)
结论:项目还是标准的,虽然层没有在细分,但是我感觉这个是可以的,因为层越多,有时候也不一定能hold住。对于小规模的项目来说简单点还是很重要的。哪天项目感觉有点烂了,考虑重构吧。^_^