概述10种常见软件架构模式

备注

本文译自https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013?gi=f8addb915af7,作者Vijini Mallawaarachchi,Sep 4, 2017。

为了更好的组织语言和理解,符合我们的阅读习惯,原文的部分段落被合并或者分割。为体现完整性,不删减文字,保持原文文字内容。翻译纯属个人喜爱、分享和收藏。

正文

是否想知道大型企业级系统是怎么设计的?在软件主体开发之前,我们必须选择一个合适的架构来提供所需的功能和质量特征。所以在应用于设计之前,我们应该了解不同的架构。

什么是架构模式

维基百科: 架构模式是在给定上下文的软件架构中,针对常发生问题的一种通用、复用的解决方案。架构模式类似于软件设计模式,但是范畴更广。

本文中,我将简要的阐述如下10中常见架构模式的应用和优缺点。
    1. 分层模式
    2. 客户端-服务端模式
    3. 主从模式
    4. 管道-过滤器模式
    5. 代理模式
    6. 点对点模式
    7. 事件总线模式
    8. 模型-视图-控制器模式
    9. 黑板模式
    10. 解释器模式

1. 分层模式

该模式用于构建可分解为多组子任务的程序,每个子任务都在某个抽象层,每个层对上一个更高层提供服务。一般信息系统中最常见的4层体系如下。

  • 表示层(也叫 UI 层)
  • 应用层(也叫服务层)
  • 业务逻辑层(也叫领域层)
  • 数据访问层(也叫持久层)
应用场景
  • 一般桌面程序
  • 电子商务网页程序

2. 客户端-服务器模式

该模式由两部分构成:单个服务器端和多个客户端。服务器组件对多个客户端组件提供服务。客户端向服务器端请求服务,服务端提供对应服务给这些客户端。此外,服务器端继续监听客户端请求。

应用场景
  • 在线应用,比如电子邮件、文档分享和银行业务

3. 主从模式

该模式由两部分构成:主节点和多个从节点。主节点组件向多个独立的从节点组件分派任务,并根据从节点返回结果计算出最终结果。

应用场景
  • 数据库复制,主数据库被视为权威来源并同步到从数据库
  • 连接到计算系统的外围设备(主从驱动)

4. 管道-过滤器模式

该模式用于构建生产和处理数据流的系统。每个处理步骤封装在一个过滤器组件中。待处理的数据被传送到管道之中,这些管道可用于缓冲或者同步。

应用场景
  • 编译器,接连的过滤器执行词义分析,语法分析,语义分析和代码生成
  • 生物资料学科的工作流

5. 代理模式

该模式用于构建组件解耦的分布式系统。这些组件通过远程调用彼此交互。代理组件负责多个组件的通信协调,服务器向代理公开他们的能力(服务和特性);客户端从代理中获取服务,然后代理重定向客户端到注册服务库中一个合适的服务。

应用场景
  • 消息队列软件,比如 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging

6. 点对点模式

该模式中,各独立组件都叫对等点。对等点既可以作为客户端从其他对等点获取服务,也可作为服务端向其他对等点提供服务。对等点可作为客户端、或者服务端、或者两者,并且在不时间动态切换角色。

应用场景
  • 文件分享网络,比如 GnutellaG2
  • 多媒体协议,比如 P2PTV 和 PDTP
  • 私媒体程序,比如 Spotify

7. 事件总线模式

该模式主要处理事件,有4个主要组件:事件源,事件监听器,频道和事件总线。事件源发布消息到事件总线上的某个频道,监听器订阅某个频道,并得知在已订阅频道中发布的消息。

应用场景
  • Android 开发
  • 通知服务

8. 模型-视图-控制器模式

该模式也叫 MVC 模式,划分交互程序为3个部分:模型——包含核心功能和数据,视图——显示信息给用户(多个视图可被定义),控制器——处理用户输入。它通过分割用户信息的内部陈述和呈现、接受方式来实现,解耦组件并允许高效的代码复用。

应用场景

  • 主流编程语言的万维网程序架构
  • 网页框架,比如 Django 和 Rails

9. 黑板模式

该模式对没有确定性方案策略的问题很有用。黑板模式由三个主要组件组成,黑板——包含解空间对象的结构化全局内存,知识源——有自拥表示的专门模块,控制组件——选择、配置和执行模块。所有组件都可访问黑板,可生成新的数据对象并添加到黑板中。在黑板中,可根据已有知识源的匹配规则,寻找某些类型的数据。

应用场景
  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声呐信号解释

10. 解释器模式

该模式用于设计解释特定语言编写的程序的组件。该组件主要指定怎么去评估程序代码行,也就是所谓的用某种语言写的语句或者表达式,基本点在于给语言符号分类。

应用场景
  • 数据库查询语言,比如 SQL
  • 用于描述通信协议的语言

架构模式比较

下面的表格概述每个架构模式的优缺点。

希望这篇文章对你有帮助,也很想听听你们的想法。谢谢阅读。^_^

(0)

相关推荐

  • MySQL主从复制应用场景有哪些?怎样才能学好linux

    MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,同时有效地保护了物理服务器宕机场景的数据备份.那么MySQL主从复制的企业应用场景有哪些?Linux运维工作人员要注意什么? ...

  • 程序员必知的几种软件架构模式

    本文主要介绍了几种主要的软件架构模式. 架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案. 一种模式就是特定上下文的问题的一种解决方案. 然而,很多开发者至今还对各种软件架构模式 ...

  • SOA服务架构规划-从方法论到实践分享

    但是到了当前微服务架构和中台建设情况下,对于服务架构规划会成为一个关键点,即中台构建完成后最终还是要提供接口服务能力给前台应用使用.那么这些接口服务本身是否可复用,颗粒度是否合适就成为中台提供价值度的 ...

  • 微服务架构设计实践系列之九:应用架构

    微服务架构设计实践  目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 ...

  • 实施微服务架构,有哪些关键步骤?

    微服务架构系列前序文章: 微服务到底改变了什么,你知道吗?:既要低头赶路,又要抬头望天,科技是为人服务的,任何技术背后都有深层次的考量,在此文中我们聊了微服务的本质:一种可以加速分工.促进合作的新协作 ...

  • SAP Commerce Cloud (电商云) UI 的懒加载功能

    最近工作中处理了 SAP Commerce Cloud (电商云) UI 的一个懒加载 (Lazy Load) 功能的问题,这里把自己学到的东西做个记录. UI 懒加载,有时又称惰性加载,延迟加载,是 ...

  • 10种常见的软件架构模式

    林本托 译 分布式实验室 6天前 有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性.因此,在将它们应用到我们的设计之前, ...

  • 探讨10种常见的盈利模式,寻找一条适合自己的创业方向(三)

    第三种  租赁模式 01 关于底层逻辑 就像一棵大树,有了树根才能会有枝繁叶茂的树冠.同理,一个盈利模式的底层逻辑也是非常重要的,因为它是核心与本质.所以,首先我们要深刻理解盈利模式的底层逻辑. 简单 ...

  • 高血压、心绞痛等10种常见心血管系统疾病...

    高血压.心绞痛等10种常见心血管系统疾病,心血管主任常开药,必须为家里老人收藏! 1.原发性高血压--心血管主任常开--马来酸依那普利片 2.肾血管性高血压--心血管主任常开--氯沙坦钾氢氯噻嗪片 3 ...

  • 三甲退休院长总结:中老年人10种常见癌症...

    三甲退休院长总结:中老年人10种常见癌症...

  • 牙痛、风湿痛、便秘等10种常见症状的对本...

    牙痛.风湿痛.便秘等10种常见症状的对本有效中成药,中医师都在用,赶紧收藏. 1.目赤.便秘--[新清宁片] ☆功用☆:清热解毒,活血化阏,缓下 2.高血升高--[降压冲剂] ☆功用☆:降血压,镇静 ...

  • “一到春夏季就觉得浑身痒?”这10种常见...

    "一到春夏季就觉得浑身痒?"这10种常见皮肤病的"速效"药,不知道的赶紧收藏. 1.[皮肤瘙痒症]--乌蛇止痒丸 --"立见成效" 2. [ ...

  • 头痛眩晕,失眠健忘等10种常见症状“对本...

    头痛眩晕,失眠健忘等10种常见症状"对本有效"的穴位,中医师都爱用,不知道的赶紧收藏. 1.足跗肿痛,脚弱无力--[八风穴]--大趾第2趾之间--"常按健康在" ...

  • 老中医公开10种常见治疗脾虚秘方!

    生活当中,你也许经常发现:有人偶尔会出现水肿,有人平时痰很多,有人老是爱腹泻,有人舌苔很厚腻:这些情况看似毫无关联,但是中医认为它们和"脾虚",体内湿气偏重大有关系!中医学认为,脾 ...

  • 实用!10种常见摄影场景的单反相机设置技巧!

    直方图是大家非常熟悉的一个后期工具,也是非常重要的一个后期 相机是爱拍一族必不可少的东西,对于摄影爱好者对于一些相机设置技巧可能也不是太了解,在摄影过程中,有很多的场景需要不同的设置,根据光线变化和周 ...