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