有没有想过如何设计大型企业级系统? 在开始主要软件开发之前,我们必须选择一个合适的架构来为我们提供所需的功能和质量属性。 因此,在将它们应用于我们的设计之前,我们应该了解不同的体系结构。
![](https://cdn-images-1.medium.com/max/1600/1*M22DR3WPqbWXWidYIq2GwA.png)
什么是建筑模式?
根据维基百科,
架构模式是在特定环境下软件体系结构中常见问题的通用可重用解决方案。 架构模式类似于软件设计模式,但具有更广的范围。
在本文中,我将简要地解释以下10种常见架构模式及其用法,优缺点。
- 分层模式
- 客户端 - 服务器模式
- 主从模式
- 管道过滤器模式
- 经纪人模式
- 点对点模式
- 事件总线模式
- 模型 - 视图 - 控制器模式
- 黑板模式
- 解释器模式
1.分层模式
这种模式可以用来构建可以分解为子任务组的程序,每个子任务都处于特定的抽象层次。 每层为下一个更高层提供服务。
一般信息系统最常见的4层如下。
- 表示层 (也称为UI层 )
- 应用程序层 (也称为服务层 )
- 业务逻辑层 (也称为域层 )
- 数据访问层 (也称为持久层 )
用法
- 一般桌面应用程序
- 电子商务Web应用程序。
![](https://cdn-images-1.medium.com/max/1600/1*jMWk_JqqyyloVPhTs_Zd1A.png)
2.客户端 - 服务器模式
这种模式由两方组成; 一个服务器和多个客户端 。 服务器组件将向多个客户端组件提供服务。 客户端向服务器请求服务,服务器向这些客户端提供相关服务。 此外,服务器继续侦听客户端请求。
用法
- 在线应用程序,如电子邮件,文件共享和银行业务
![](https://cdn-images-1.medium.com/max/1600/1*4xX_WQQuD2u0PMK5bcWFkQ.png)
3.主从模式
这种模式由两方组成; 主人和奴隶 。 主组件将工作分配给相同的从组件,并根据从组件返回的结果计算最终结果。
用法
- 在数据库复制中,主数据库被视为权威来源,并且从属数据库与其同步。
- 在计算机系统中连接到总线的外设(主从驱动器)。
![](https://cdn-images-1.medium.com/max/1600/1*lsK9QntZl2d5oLojwRGXDg.png)
4.管道过滤器模式
这种模式可以用来构造产生和处理数据流的系统。 每个处理步骤都包含在一个过滤器组件中。 要处理的数据通过管道传递。 这些管道可用于缓冲或同步目的。
用法
- 编译器。 连续的过滤器执行词法分析,解析,语义分析和代码生成。
- 生物信息学工作流程。
![](https://cdn-images-1.medium.com/max/1600/1*qikehZcDhhl_wWsqeI_nvg.png)
5.经纪人模式
这种模式用于构建具有解耦组件的分布式系统。 这些组件可以通过远程服务调用相互交互。 代理组件负责协调组件之间的通信。
服务器将其功能(服务和特性)发布给代理。 客户向经纪人请求服务,然后经纪人将客户重定向到其注册中心的适当服务。
用法
- 消息代理软件,如Apache ActiveMQ , Apache Kafka , RabbitMQ和JBoss Messaging 。
![](https://cdn-images-1.medium.com/max/1600/1*1qRQZjLRAd0yY_T9p2OgBw.png)
6.点对点模式
在这种模式中,单个组件被称为同级 。 同事可能既作为客户端 ,向其他同行请求服务,又作为服务器向其他同行提供服务。 对等体可以充当客户端或服务器或两者兼而有之,并且可以随着时间动态地改变其角色。
用法
![](https://cdn-images-1.medium.com/max/1600/1*ROvkckSTw1UncrbQSmUJUQ.png)
7.事件总线模式
这种模式主要处理事件,并有四个主要组成部分; 事件源 , 事件监听器 , 通道和事件总线 。 信息源将消息发布到事件总线上的特定频道。 听众订阅特定频道。 听众会收到发布到他们之前订阅的频道的消息。
用法
- Android开发
- 通知服务
![](https://cdn-images-1.medium.com/max/1600/1*DOZ4nVR9zkJm-EnXT3KOGQ.png)
8.模型 - 视图 - 控制器模式
这种模式也称为MVC模式,将交互式应用程序分为三部分,
- 模型 - 包含核心功能和数据
- 视图 - 将信息显示给用户(可以定义多个视图)
- 控制器 - 处理来自用户的输入
这样做是为了将信息的内部表示与信息呈现给用户并从用户接受的方式分开。 它将组件分离并允许有效的代码重用。
用法
![](https://cdn-images-1.medium.com/max/1600/1*OP0CS6O5Sb66jpc-H-IuRQ.png)
9.黑板模式
这种模式对于没有确定性解决策略的问题是有用的。 黑板图案由3个主要组件组成。
- 黑板 - 包含来自解决方案空间的对象的结构化全局内存
- 知识源 - 具有自己表示的专用模块
- 控制组件 - 选择,配置和执行模块。
所有组件都可以访问黑板。 组件可能产生添加到黑板的新数据对象。 组件在黑板上查找特定类型的数据,并可能通过与现有知识源的模式匹配找到这些数据。
用法
- 语音识别
- 车辆识别和跟踪
- 蛋白质结构鉴定
- 声纳信号解释。
![](https://cdn-images-1.medium.com/max/1600/1*ArbMx7A21I47llvwUTiSDg.png)
10.解释器模式
此模式用于设计解释用专用语言编写的程序的组件。 它主要指定如何评估程序行,称为用特定语言编写的句子或表达式。 基本思想是为语言的每个符号设置一个类。
用法
- 数据库查询语言,如SQL。
- 用于描述通信协议的语言。
![](https://cdn-images-1.medium.com/max/1600/1*DrC3T5R4SsdcQY6aXLCRZA.png)
建筑模式的比较
下面的表格总结了每种架构模式的优缺点。
![](https://cdn-images-1.medium.com/max/2000/1*Z9dKeyf6yi0nFMaUZF1P3Q.png)
希望你发现这篇文章有用。
原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013