• 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住。对于小规模的项目来说简单点还是很重要的。哪天项目感觉有点烂了,考虑重构吧。^_^

     

  • 相关阅读:
    Dubbo笔记(二)
    Dubbo笔记(一)
    初识多线程
    Redis底层结构全了解
    用golang刷算法--归并排序算法
    谈谈golang中的channel
    用golang刷算法--快速排序算法
    谈谈golang中的引用类型与地址分配
    Arch安装后的配置(超详细)
    ArchLinux安装(Deepin v20桌面环境)
  • 原文地址:https://www.cnblogs.com/fengxing/p/2477785.html
Copyright © 2020-2023  润新知