软件架构设计的4种原则和模式


  本文来自 Firat Atagun 的《架构演化中的软件设计原则》,文中给出了软件架构演化过程中出现的 4 种经典架构,就每种架构,分析了其主要特点并在几个度量维度给出结论。在文章的最后,Firat Atagun 给出了 4 种架构的多维对比。本文的完整演讲稿是架构演化中的软件设计原则。

1.分层架构

分层架构是最常见的架构,也被称为 n 层架构。多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师、开发者和软件设计者所熟知。

分层架构中的层次和组件是水平方向的分层,每层扮演应用程序中特定的角色。根据需求和软件复杂度,我们可以设计 N 层,但大多数应用程序使用 3-4 层。有太多层的设计会很糟糕,将导致复杂度的上升,因为我们必须维护每一层。

在传统的分层架构中,分层包括表现层、业务或者服务层,以及数据访问层。 表现层负责应用程序的用户交互和用户体验(外观和视觉)。通常我们会使用数据传输对象(Data Transfer Object)将数据带到这一层,然后使用视图模型(View Model)渲染到客户端。业务层接收请求并执行业务规则。数据访问层负责操作各种类型的数据库,每个访问数据库的请求都要经过这一层。

分层无需知道其他层如何去做,比如业务层无需知道数据访问层是如何查询数据库的,相反,业务层在调用数据层的特定方法时,只需关注需要部分数据还是全部数据。这就是我们所说的关注点分离。这是非常强大的功能,每层负责其所负的责任。

分层架构中的核心概念是管理依赖。如果我们使用依赖倒置原则和测试驱动开发 (Test Driven Development),我们的架构会有更好的健壮性。因为,我们要保证所有可能的用例都有测试用例。

我们需要这样的冗余,即使业务层没有处理业务规则,也要通过业务层来调用数据层,这叫分层隔离。对于某些功能,如果我们从表现层直接访问数据层,那么数据层后续的任何变动都将影响到业务层和表现层。

在这里插入图片描述
分层架构中的一个重要的概念就是分层的开闭原则。如果某层是关闭的,那么每个请求都要经过着一层。相反,如果该层是开放的,那么请求可以绕过这一层,直接到下一层。
  
分层隔离有利于降低整个应用程序的复杂度。某些功能并不需要经过每一层,这时我们需要根据开闭原则来简化实现。
  
分层架构是 SOLID 原则的通用架构,当我们不确定哪种架构更合适的时候,分层架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值