10种常见的软件架构模式(软件架构设计模式)
ccwgpt 2024-11-04 11:57 92 浏览 0 评论
你是否想知道企业大规模系统是如何设计的?在软件开发开始之前,我们必须选择一个合适的架构,能提供所需的功能和质量特性。因此,在将架构应用到我们的设计之前,我们应该了解各种不同架构的特点。
什么是架构模式?
根据维基百科:
架构模式是在软件架构上针对特定上下文件解决常见问题的通用、可复用的解决方案。架构模式与软件设计模式相似,但范围更广。
在本文中,我将简要解释以下10种常见的体架构模式及其用法和优缺点。
1、分层模式
2、客户服务器模式(CS)
3、主从模式
4、管道过滤器模式
5、代理模式
6、P2P模式
7、事件总线模式
8、MVC模式
9、黑板模式
10、解释器模式
1、分层模式
此模式可用于构造可分解为子任务组的程序,每个子任务组处于特定的抽象级别。每一层都为下一层提供服务。
信息系统中常见的四层模式如下:
- 表示层(也称为UI层)
- 应用层(也称服务层)
- 业务逻辑层(也称领域层)
- 数据访问层(也称持久化层)
用途
- 通用桌面应用
- 电子商务应用
2、客户端服务器模式
这个模式由两部分组成;一个服务器和多个客户端。服务器组件将为多个客户端组件提供服务。客户端向服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器继续侦听客户机请求。
用途
在线应用程序,如电子邮件,文档共享和银行应用。
image
3、主从模式
这个模式由两部分组成;master和slaves。master组件将工作分配给相同的slave组件,并根据slave组件返回的结果计算最终结果。
用途
- 在数据库复制中,将主数据库视为中心负责写数据,从数据库与主数据库同步。
- 连接到计算机系统总线上的外设(主驱动器和从驱动器)。
4、管道过滤器模式
此模式可用于创建流数据处理系统。每个处理步骤都包含在一个过滤器组件中。要处理的数据通过管道传递。这些管道可用于缓冲或同步目的。
用途
- 编译器。连续的过滤器分别执行:词法分析、解析、语义分析和代码生成。
- 信息处理工作流
5、代理模式
此模式结合解耦组件构造分布式系统。这些组件可以通过远程服务调用,相互交互。代理组件负责协调组件之间的通信。
服务器将其功能(服务和特征)发布到代理。客户端向代理请求服务,然后代理根据注册中心将客户端请求重定向到合适的服务。
用途
消息代理软件,如Apache ActiveMQ、Apache Kafka、RabbitMQ、JBoss Messaging。
6、P2P模式
在此模式中,单个组件称为对等组件peer。对等组件既可以作为客户端向其他对等组建请求服务,也可以作为服务器向其他对等组件提供服务。对等组建可以充当客户端或服务器,也可以同时充当两者,它可以随时间动态地更改其角色。
用途
- 文件共享网络比如Gnutella和G2
- 基于加密货币的产品,如比特币和区块链
7、事件总线模式
该模式主要处理事件,有4个主要组件;事件源、事件监听器、通道和事件总线。事件源将消息发布到事件总线上的特定通道。侦听器订阅特定的通道。当消息发布到它们订阅过的通道时,侦听器会得到通知。
用途
- 安卓开发
- 通知服务image
8、MVC模式(model-view-controller)
这种模式,将交互式应用程序分为3个部分:
1、模型-包含核心功能和数据
2、将信息显示给用户(可以定义多个视图)
3、处理来自用户的输入
这样做是为了将信息的内部表示与信息呈现给用户和从用户接受信息的方式分离开来。它解耦了组件,并允许高效的代码重用。
用途
大部分编程语言都使用的web开发架构
Web框架,如Django和Rails。
9、黑板模式
这种模式在没有确定性解决策略的问题方面很有用。黑板模式由3个主要部分组成。
- 黑板-结构化的全局内存包含解决方案对象
- 知识源-具有自己表示形式的专用模块
- 控制组件-选择、配置和执行模块。
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上寻找特定类型的数据,并通过与现有的知识源进行模式匹配来找到这些数据。
用途
- 语音识别
- 车辆识别与跟踪
- 蛋白质结构识别
- 声纳信号解析
10、解释器模式
此模式用于设计组件,该组件用于解释专用语言编写的程序。它主要规定了如何对程序行求值,这些程序被称为用特定语言编写的句子或表达式。其基本思想是为语言的每个符号都建立一个类。
用途
- 数据库查询语言,如SQL。
- 用于描述通信协议的语言。
相关推荐
- 用Deepseek扩写土木工程毕业论文实操指南
-
用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...
- 985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图
-
在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...
- AI写论文刷屏?大学生正在丢掉的思考力
-
一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...
- Grok在辅助论文写作上能不能既“聪明”又“可怕”?!
-
AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...
- 大四论文沟通场景!音频转文字难题听脑AI来化解
-
大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...
- 论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)
-
技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...
- 25年信息系统项目管理师考试第2批论文题目写作建议思路框架
-
25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师
- 微信购物应尽快纳入法律框架(微信购物管辖)
-
符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...
- 泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》
-
新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...
- 离线使用、植入微信-看乐心Mambo手环如何打破框架
-
从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...
- 华专网络:如何零基础制作一个网站出来?
-
#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...
- WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架
-
大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...
- 约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错
-
直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...
- 视频号带货为什么一个流量都没有?顶级分析框架送给你
-
视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)