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

     

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/fengxing/p/2477785.html
Copyright © 2011-2022 走看看