Weapsy分析(二)项目分层

简单罗列下Weapsy项目几个层,它们分别是

1  Core  核心层

2 Data 数据层

3 Entites 实体层

4 Service 服务层

5 Web层

我想通过对DDD(领域模型)的典型层次来分析这个项目,看看这个项目在架构上有啥优点,说的不好的地方别丢砖就行了- -

首先看下比较公认的3层架构(希望看了后学习上不会有太大的曲线)和DDD的层次划分。(有空我会专门写几个DDD相关的东西)

左边的是三层架构:表现层,业务层和数据访问层。

右边的是DDD通用性分层架构:表现层,应用层,领域层和基础设施层。

通过比较:

  1. Weapsy的Core 其实对应着基础设施层,不过这里的并不是指领域模型中的基础设施,更恰当的说应该是一些普通项目的核心层,封装一些常用的工具和服务。
  2. Data暂时好像没有找到对应的层
  3. Entities 这个对应着领域层,它是其中的一个部分。领域层如果进行细分,会出现一些专门对应的一些领域核心层,领域核心实体扩展层。
    1. 领域核心层:这个层专门用于进行对领域层的扩展:用于定义一些领域中常用模式的接口,属于上层建筑。如仓储,工作单元等,
    2. 领域核心扩展层:这个层专门用于对领域层中的实体进行扩展,如实体跟踪,合并等。
  4. Service:这个层对应着应用层。用于对外提供服务。
  5. Web层:毫无疑问属于表现层。

OK,这里还有一个Data层,它到底干嘛的?仔细看看它的功能:

  1. 定义了上下文如何初始化(Initalizers文件夹)。
  2. 定义了实体之间的关联(Mapping文件夹)。
  3. 定义了仓储
  4. 定义了上下文的接口。
  5. 最后就是上下文。

上下文的初始化和实体关系类这里属于CodeFirst,所以这层其实是由EntityFramework和DDD结合所产生的。(个人理解,有更好的阐述的可以发言哈!)

结论:项目还是标准的,虽然层没有在细分,但是我感觉这个是可以的,因为层越多,有时候也不一定能hold住。对于小规模的项目来说简单点还是很重要的。哪天项目感觉有点烂了,考虑重构吧。^_^

 

posted @ 2012-05-01 12:22  陈卓杰  阅读(644)  评论(2编辑  收藏  举报