软件架构模式

架构模式是一种基于结构和行为的软件设计模式,它把应用程序的核心功能抽象出来,然后将功能分配给不同的组件,以实现更大规模的软件系统

架构模式是在给定上下文中解决软件架构中常见问题的通用、可重用的解决方案

架构模式类似于软件设计模式,但范围更广

它还提供了一个框架,可以让开发人员对系统进行优化,提高可维护性和可扩展性

常见的软件架构模式:

  • 分层模式
  • 客户端-服务器模式
  • 主-从模式
  • 管道过滤器模式
  • 代理模式
  • 点对点模式
  • 事件总线模式
  • 模型-视图-控制器模式(MVC)
  • 黑板模式
  • 解析器模式

总结每种体系架构模式的优缺点:

名称 优点 缺点
分层模式 一个较低的层可以被不同的层所使用
层使标准化更容易,因为我们可以清楚地定义级别
可以在层内进行更改,而不会影响其他层
不是普遍适用的
在某些情况下,某些层可能会被跳过
客户端-服务器模式 很好地建立一组服务,用户可以请求他们的服务 请求通常在服务器上的单独线程中处理
由于不同的客户端具有不同的表示,进程间通信会导致额外开销
主从设备模式 准确性:将服务的执行委托给不同的从设备,具有不同的实现 从设备是孤立的:没有共享的状态
主-从通信中的延迟可能是一个问题,例如在实时系统中
这种模式只能应用于可以分解的问题
管道-过滤器模式 展示并发处理
当输入和输出由流组成时,过滤器在接收数据时开始计算
轻松添加过滤器,系统可以轻松扩展。过滤器可重复使用
可以通过重新组合一组给定的过滤器来构建不同的管道
效率受到最慢的过滤过程的限制
从一个过滤器移动到另一个过滤器时的数据转换开销
代理模式 允许动态更改、添加、删除和重新定位对象,这使开发人员的发布变得透明 要求对服务描述进行标准化
点对点模式 支持分散式计算
对任何给定节点的故障处理具有强大的健壮性
在资源和计算能力方面具有很高的可扩展性
服务质量没有保证,因为节点是自愿合作的
安全是很难得到保证的
性能取决于节点的数量
事件总线模式 新的发布者、订阅者和连接可以很容易地添加
对高度分布式的应用程序有效
可伸缩性可能是一个问题,因为所有消息都是通过同一事件总线进行的
模型-视图-控制器模式 可以轻松地拥有同一个模型的多个视图,这些视图可以在运行时连接和断开 增加复杂性
可能导致许多不必要的用户操作更新
黑板模式 很容易添加新的应用程序
扩展数据空间的结构很简单
修改数据空间的结构非常困难,因为所有应用程序都受到了影响
可能需要同步和访问控制
解释器模式 高度动态的行为是可行的
对终端用户编程性提供好处
提高灵活性,因为替换一个解释程序很容易
由于解释语言通常比编译后的语言慢,因此性能可能是一个问题