通俗地讲述10种常用的软件架构模式

有没有想过如何设计大型企业级系统? 在开始开发主要软件之前,我们必须选择一个合适的架构来为我们提供所需的功能和质量等属性。 因此,在将它们应用于我们的设计之前,我们应该了解不同的架构体系。

什么是架构模式?

下面引用自维基百科

架构模式是在特定环境下软件体系结构中常见问题的通用可重用解决方案。架构模式类似于软件设计模式,但它属于更广泛的领域。

在本文中,我将简要地解释以下10种常见的架构模式及其用法,优缺点。

分层模式

客户端-服务器模式(CS模式)

主从模式

管道过滤器模式

经纪人模式(又可以称为代理模式)

点对点模式

事件总线模式

MVC模式(模型-视图-控制器)

黑板模式

解释器模式

1.分层模式

这种模式可以用来构建能分解为子任务组的结构化程序,每个子任务都处于特定的抽象级别。每层为下一更高层提供服务。

一个通用信息系统常见的4层如下:

呈现层(UI-用户界面层)

应用层(service-服务层)

业务逻辑层(domain-领域层)

数据访问层(persistence-持久化层)

用途

常用的桌面应用

电子商务web应用

2.CS模式

这个模式包含两个部分:一个服务端+多个客户端。服务端组件提供给多个客户端组件服务。客户端请求服务,服务端提供相应的服务给客户端。除此之外,服务端不间歇地监听来自客户端的服务请求。

用途

在线应用程序,如电子邮件,文件共享和银行业务

3.主从模式

这种模式由两部分组成:主人(master)和奴隶(slaves)。主组件将工作分配给特定的从组件,并根据从组件返回的结果计算最终结果。

用途

在数据库复制中,主数据库被视为权威来源,并且从属数据库与其同步

在计算机系统中连接到总线的外设(主从驱动器)

4.管道过滤器模式

这个模式可被用于构建生成和处理数据流的系统。每个处理步骤都包含在一个过滤器组件中。被处理的数据需通过管道进行传递。这些管道可用于缓冲或同步目的。

用途

编译器。使用连续的过滤器执行词法分析,解析,语义分析和代码生成。

生物信息学工作流程

5.经纪人模式

这个模式用于使用架构的组件来构建的分布式系统。这些组件可以通过远程服务调用相互交互。代理组件负责协调组件之间的通信。服务端将其能力(服务和特性)发布给代理。客户端向经纪人请求服务,然后经纪人将客户重定向到其注册的对应服务。

用途

消息代理软件,如Apache ActiveMQ,Apache Kafka,RabbitMQ,JBoss Messaging

6.点对点模式

在这种模式中,单个组件被称为同级点(Peer:身份,级别相同的点)。 同级点可以既作为客户端,向其它同级点请求服务,又作为服务器向其它同级点提供服务。 一个同级点既可以充当客户端或服务器或两者兼而有之,并且可以随着时间动态地改变其角色。

用途

文件分享网络,例如Gnutella,Gnutella2

多媒体协议,例如P2PTV、PDTP

7.事件总线模式

这个模式主要用于处理事件,有4个主要的组件:事件源,事件监听器,频道,事件总线。事件源将消息发布到事件总线上的特定频道。监听器订阅特定频道。监听器会收到发布到他们之前订阅的频道的消息。

用途

android 开发

通知系统

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

这个模式又叫MVC模式,他把交互式应用程序分成了3个部分。

模型,包含核心功能和数据

视图,把信息呈现给用户(可能有多个视图)

控制器,处理用户输入

用途

使用主流的编程语言架构的web应用程序

web框架如Django、Ruby on Rails

9.黑板模式

这种模式对于没有确定性解决策略的问题是有帮助的。黑板模式由3个主要组件组成。

黑板-一个包含来自解决方案空间对象的结构化全局内存

知识源-具有自我表达的专用模块

控制组件-选择,配置,执行模块

所有组件都可以访问黑板。 组件可能产生添加到黑板的新数据对象。 组件在黑板上查找特定类型的数据,并可能通过与现有知识源的模式匹配找到这些数据。

用途

语音识别

车辆识别与跟踪

蛋白质结构鉴定

声纳信号解释

10.解释模式

此模式用于设计解释用专用语言编写的程序的组件。 它主要指定如何解释执行程序代码,称为用特定语言编写的句子或表达式。 基本思想是为语言的每个符号设置一个类。

用途

数据库查询语言例如SQL

用于描述通信协议的语言

架构模式的比较

下表总结了每种架构模式的优缺点(表里面的英文就不翻译了)

内容部分

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180601A0H7G200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券