首页 > 编程知识 正文

10个常见的软件架构模式是,软件体系结构模式有哪些

时间:2023-05-06 16:09:50 阅读:217156 作者:2457

你想知道如何设计面向大企业的系统吗? 在开始主要代码开发之前,必须选择能够提供所需功能和质量属性的适当体系结构。 因此,在将它们应用于我们的设计之前,必须了解不同的体系结构。

- 什么是架构模式 -

据维基百科报道,

模式模型是一种通用的、可重用的解决方案,可以在特定的上下文中解决软件体系结构中常见的问题。 体系结构模型类似于软件设计模型,但范围更广。

本文简要介绍了以下十种常见的体系结构模式及其应用、优势和劣势。

- 分层模式 -

此模式可用于构建可分解为子任务组的程序,每个子任务组都处于特定抽象级别。 每次都为更高层服务。

一般信息系统中最常见的四个层次分为以下几类:

Presentation layer表示层(即UI层)

http://www.Sina.com/APP应用层(即服务层)

Application layer业务逻辑层(即域层)

Business logic layer数据访问层(即数据持久层) )。

应用

典型的桌面APP应用程序

电子商务引用网络APP应用

Data access layer

该模型由一个服务器端和多个客户端两部分组成,服务器为多个客户端提供服务。 客户端向服务器发出请求,服务器为这些客户端提供相关服务后,服务器将继续侦听客户端的请求。

电子邮件、文件共享、银行业务等在线APP应用

- 客户端-服务器模式 -

该模式也分为主模块和从模块两个块。 主模块在同一个从模块之间分配工作,并根据从模块返回的结构计算最终结果。

应用

在数据库复制中,主数据库被视为权威数据源,并与数据库进行同步

连接到计算机系统总线的外围设备(主驱动器和辅助驱动器)

- 主从模式 -

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

应用编译器。 按顺序在不同的过滤器上执行词法分析、语法分析和代码生成

生物信息学中的工作流程

- 管道过滤模式 -

此模式使用可通过远程服务调用进行交互的解绑定组件来构建分布式系统。 代理组件协调组件之间的通信。

服务器向代理公开这些功能(服务和特征等),客户端向代理请求服务,代理根据其注册表将客户端的请求转发给合适的服务。

使用消息代理软件,如Apache ActiveMQ、Apache Kafka、RabbitMQ和JBoss消息。

- Broker模式 -

在此模式中,各个组件称为对等(或对等、对等)。 对等体可以同时充当向其他对等体请求服务的客户端和提供服务的服务器。 同一对等方可能同时是客户端和服务器,并且可以动态更改角色。

使用Gnutella和G2等文件共享网络

P2PTV和PDTP等多媒体协议

基于密码货币的产品,如比特币和区块链

- P2P模式 -

此模式主要处理组件,有四个重要组件:事件源、事件侦听器、通道和事件总线。 事件源将消息发送到事件总线上的特定通道,然后侦听器订阅特定通道。 将消息发送到通道后,订阅该通道的侦听器将收到该消息的通知。

机器人开发

通知服务

- 事物总线模式 -

该模式将交互式APP应用分为三个部分:

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

视图——向用户显示信息。 可以定义多个视图

控制器——处理用户的输入

它将数据的内部表示形式与用户输入或向用户显示的形式分离开来,因此可以断开组件的连接,同时还可以有效地重用代码。

应用主要编程语言的网络APP体系结构

p>

网络框架,如Django 和 Rails.

-     黑板模式     -

此模式对于尚无确定性解决方案的问题很有用,黑板模式由三部分组成:

黑板—— 一个结构化的全局内存,包含解决方案领域的对象

知识源——具有自身含义的专业模块

控制组件——选择、配置和执行模块

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

应用

语音识别

车辆识别与跟踪

蛋白质结构鉴定

声呐信号解释

-     解释器模式     -

此模式通常用于设计组件来解释使用专用语言写出的程序,它主要指定如何估算程序行,即以特定语言编写的语句或表达式。基本思想是为每种语言符号都设计一个类。

应用

数据库查询语言,如SQL

用于描述通信协议的语言

-     架构模式对比     -

模式
优点
缺点

分层模式

一个底层服务可以被不同的高层服务使用;
分层结果更容易进行标准化,因为可以清晰地定义每个层级
层级内的修改不会影响其它层

不是普适性的架构;
某些场景下,需要跳过其中一些分层

CS模式

容易对系列服务进行建模,供客户端请求

请求通常是在服务器的不同线程中进行响应的;
因为不同客户端有不同形式,进程间通信会造成很大负载

主从模式

准确性——服务的执行委托给了不同的从模块

从模块是独立的:没有共享状态;
主从模块间的通信延迟可能是一个问题,尤其在实时系统中。

管道过滤器模式

支持并发处理,其中输入、输出由数据流组成时,过滤器在接收到数据时即开始计算;
容易添加过滤器,系统很容易扩展;
过滤器可重用,可以通过重新组合已有的过滤器来创建不同的管道流。

整体效率受最慢的过滤程序限制;
从一个过滤器传递到另一个时,存在数据转换的负载

代理模式

允许对象进行动态的修改、增、删、重定位,对开发者来说内容分发是透明的

需要对服务描述进行标准化

P2P模式

支持去中心化运算;
对任意节点的失败都有高度稳定性;
在资源和计算能力方面具有高度可伸缩性

无法保证服务质量,因为节点之间是自愿合作的;
很难保证安全;
性能取决于节点的数量

事件总线模式

很容易向系统好加入新的发布者、订阅者和连接;
对于高度分布式应用很有效

伸缩性可能是个难题,因为所有的信息传输都要通过相同的时间总线

MVC模式

对同一模型很容易构建多个视图,在运行时可以任意连接或断开

增加了复杂性,用户操作可能导致很多不必要的更新

黑板模式

容易添加新应用;
很容易扩展数据空间中的结构

修改数据空间的结构很难,因为所有的应用都会被影响;
可能需要同步机制和访问控制

解释器模式

可能支持高度动态化行为;
有利于终端用户的可编程性;
增强了灵活性,因为替换一个解释程序很容易

因为解释型语言通常比编译型语言要慢,因此性能可能是一个问题

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。