zoukankan      html  css  js  c++  java
  • 分层架构设计

    分层架构是将软件模块按水平切分的方式分成多个层,最基本的分层方式是表现层、业务逻辑领域层和数据持久层(MVC)。也有分为四层表现层、应用层、领域层和基础层,业务逻辑在领域层,基础层比持久层范围更大,不仅可以提供持久层服务,还提供缓存服务。四层中应用层是对三层架构中领域层的进一步拆分,但业务逻辑永远在领域层。

    分层架构的好处是高内聚低耦合,单一职责、提高可复用性和降低维护成本,缺点是开发成本高、性能低和可扩展性低。

    分层架构的好处

    分层架构的目的是通过关注点分离来降低系统的复杂度,同时满足单一职责、高内聚、低耦合、提高可复用性和降低维护成本。

    • 单一职责:每一层只负责一个职责,职责边界清晰,如持久层只负责数据查询和存储,领域层只负责处理业务逻辑。
    • 高内聚:分层是把相同的职责放在同一个层中,所有业务逻辑内聚在领域层。这样做有什么好处呢?试想一下假如业务逻辑分散在每一层,修改功能需要去各层修改,测试业务逻辑需要测试所有层的代码,这样增加了整个软件的复杂度和测试难度。
    • 低耦合:依赖关系非常简单,上层只能依赖于下层,没有循环依赖。
    • 可复用:某项能力可以复用给多个业务流程。比如持久层提供按照还款状态查询信用卡的服务,既可以给申请信用卡做判断使用,也可以给展示未还款信用卡使用。
    • 易维护:面对变更容易修改。把所有对外接口都放在对外接口层,一旦外部依赖的接口被修改,只需要改这个层的代码即可。

    以上这些既是分层的好处也是分层的原则,大家在分层时需要遵循以上原则,不恰当的分层会违背了分层架构的初衷。

    分层架构的缺点

    分层架构也有几个缺点

    • 开发成本高:因为多层分别承担各自的职责,增加功能需要在多个层增加代码,这样难免会增加开发成本。但是合理的能力抽象可以提高了复用性,又能降低开发成本。
    • 性能略低:业务流需要经过多层代码的处理,性能会有所消耗。
    • 可扩展性低:因为上下层之间存在耦合度,所有有些功能变化可能涉及到多层的修改。

    http://ifeve.com/am-hierarchy/?hmsr=toutiao.io

  • 相关阅读:
    Django【进阶篇-缓存类型】
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    Istio技术与实践03:最佳实践之sidecar自动注入
    原来你是这样的PaaS!
    5分钟APIG实战: 使用Rust语言快速构建API能力开放
    Log4J日志配置详解
    cookie是如何保存到客户端,又是如何发送到服务端
    session cookie
  • 原文地址:https://www.cnblogs.com/doit8791/p/9280081.html
Copyright © 2011-2022 走看看