引子
在看 Scalable Frontend 1 — Architecture Fundamentals 的时候,想到应该不止这一种分层模式吧,就去找了些材料,翻译记录。
原文:10 Common Software Architectural Patterns in a nutshelle
- Origin
- My GitHub
注释
有没有想过大型企业级零碎是如何设计的?在次要软件开发开始之前,咱们必须抉择一个适合的架构,它将为咱们提供所需的性能和品质个性。因而,咱们应该了解不同的架构,在将它们利用到咱们的设计中之前。
什么是架构模式?
依据维基百科,
架构模式 是一种通用的、可重用的解决方案,用于解决在特定环境下软件架构中的常见问题。架构模式相似于软件设计模式,但范畴更广。
在这篇文章中,我将简要解释以下 10 种常见的架构模式及其利用、劣势和有余。
- 分层模式(Layered pattern)
- 客户端 - 服务器模式(Client-server pattern)
- 主从模式(Master-slave pattern)
- 管道过滤模式(Pipe-filter pattern)
- 代理模式(Broker pattern)
- 点对点模式(Peer-to-peer pattern)
- 事件总线模式(Event-bus pattern)
- MVC 模式(Model-view-controller pattern)
- 黑板模式(Blackboard pattern)
- 解析器模式(Interpreter pattern)
1. 分层模式(Layered pattern)
这种模式能够用于结构能够合成为子工作组的程序,每个子工作都处于特定的形象级别。每层都为下一个更高层提供服务。
个别信息系统里最常见的 4 个档次如下。
- 出现层(也称为 UI 层)
- 应用层 (也称为 服务层)
- 业务逻辑层 (也称为 定义域层)
- 数据拜访层 (也称为 长久层)
利用
- 个别桌面应用程序。
- 电子商务 web 应用程序。
2. 客户端 - 服务器模式(Client-server pattern)
这种模式由两个局部组成:一个 服务器 和多个 客户端。服务器组件将为多个客户端组件提供服务。客户端向服务器申请服务,服务器向这些客户端提供相干服务。此外,服务器持续侦听客户端申请。
利用
- 在线应用程序,例如电子邮件、文档共享和开账户等。
3. 主从模式(Master-slave pattern)
这种模式由两个局部组成:主 (Master)和 从(slave)。主组件为雷同的从组件调配工作,并依据从组件返回的后果计算最终后果。
利用
- 在数据库复制中,主数据库被视为权威源,从数据库与主数据库同步。
- 连贯到计算机系统(主驱动器和从驱动器)总线的外围设备。
4. 管道过滤模式(Pipe-filter pattern)
此模式可用于结构生成和解决数据流的零碎。每个解决步骤都蕴含在 过滤器 组件中。要解决的数据通过 管道 传递。这些管道可用于缓冲或同步。
利用
- 编译器。间断过滤器执行词法剖析、解析、语义剖析和代码生成。
- 生物信息学的工作流程。
5. 代理模式(Broker pattern)
这种模式用于结构具备解耦组件的分布式系统。这些组件能够通过近程服务调用相互合作。代理组件负责协调组件之间的通信。
服务器将其性能(服务和个性)公布给代理。客户端向代理申请服务,而后代理从注册表中将客户端重定向到适合的服务。
利用
- 音讯代理软件,例如 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging。
6. 点对点模式(Peer-to-peer pattern)
在这种模式中,单个组件称为 对等点 。对等点既能够作为 客户端 ,向其它对等点申请服务,也能够作为 服务器,向其它对等点提供服务。对等点能够充当客户端或服务器,也能够同时充当两者,并且能够随工夫动静地更改其角色。
利用
- 文件共享网络,例如 Gnutella 和 G2。
- 多媒体协定,例如 P2PTV 和 PDTP。
- 基于数字加密货币的产品,如比特币和区块链。
7. 事件总线模式(Event-bus pattern)
这种模式次要处理事件,有 4 个次要组件:事件源 (event source)、 事件侦听器 (event listener)、 频道 (channel)和 事件总线(event bus)。源将音讯公布到一个事件总线上的特定频道。侦听器订阅特定频道。侦听器将收到音讯的告诉,这些音讯将公布到它们之前订阅的频道。
利用
- Android 开发。
- 告诉服务。
8.MVC 模式(Model-view-controller pattern)
这种模式也称为 MVC 模式,它将交互应用程序分为三个局部:
- model —— 蕴含外围性能和数据。
- view —— 向用户显示信息(能够定义多个视图)。
- controller —— 解决来自用户的输出。
这样做是为了将出现给用户外部信息的形式和承受用户信息的形式辨别开。它把组件解耦并容许高效的代码复用。
利用
- 在次要编程语言中的万维网应用程序架构。
- Web 框架,例如 Django 和 Rails。
9. 黑板模式(Blackboard pattern)
这种模式对于不晓得确定解决方案策略的问题很有用。黑板模式由三个次要局部组成。
- 黑板(blackboard)—— 一个结构化的全局内存,蕴含来自解决方案空间的对象
- 常识源(knowledge source)—— 具备自我标识的专门模块
- 管制组件(control component)—— 抉择、配置和执行模块。
所有的组件都能拜访到黑板。组件可能会生成新的数据对象,并将其增加到黑板中。组件在黑板上查找特定类型的数据,并能够通过与现有常识源的模式匹配来找到这些数据。
利用
- 语音辨认。
- 车辆辨认与跟踪。
- 蛋白质构造鉴定。
- 声纳信号解析。
10. 解析器模式(Interpreter pattern)
这种模式用于设计解释用特定语言编写的程序的组件。它次要指定如何解析每行程序,即用特定语言编写的语句或表达式。其根本思维是为语言的每个符号建设一个类。
利用
- 数据库查询语言,例如 SQL。
- 用于形容通信协议的语言。
架构模式比拟
上面总结了每种架构模式的劣势和有余。
参考资料
- Architectural Patterns
- 10 Common Software Architectural Patterns in a nutshelle