当前位置: 首页 > 科技观察

10种常见的软件架构模式

时间:2023-03-19 19:43:18 科技观察

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