news 2026/6/12 22:48:00

软件体系结构风格与软件体系结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件体系结构风格与软件体系结构

目录

软件体系结构风格 全分类

一、经典五大基础架构风格(必考主干)

1. 数据流风格

2. 调用 / 返回风格

3. 独立组件风格(无直接调用,靠中间媒介协作)

(1)仓库 / 黑板风格

(2)隐式调用(事件驱动风格)

4. 客户 - 服务器(C/S)风格

5. 虚拟机风格

二、现代分布式架构风格(工程常用,拓展考点)

三、硬件层面架构(区分软件架构,易混补充)

四、快速归类速记表

五、关键补充说明

主流软件体系结构

一、经典基础体系结构(最常用)

1. 主程序 - 子程序(典型过程式架构)

2. 分层架构(Layered)

3. 管道 - 过滤器(Pipe-Filter)

4. 仓库 / 黑板架构(Repository/Blackboard)

5. 事件驱动架构(隐式调用)

6. 客户端 / 服务器(C/S)

二、分布式 & 现代架构(互联网 / 云原生主流)

1. 微服务架构

2. 面向服务架构(SOA)

3. 对等网络架构(P2P)

4. 云原生 / Serverless(无服务器架构)

三、专用 / 特殊架构

1. 面向对象架构(OO)

2. 虚拟机架构

3. 闭环控制架构

快速选型速览


软件体系结构风格 全分类

结合高校教材、软考、面试通用分类,按「经典五大架构风格 + 衍生 / 现代分布式风格」完整梳理,同时标注归属、核心、示例,衔接你之前学的所有知识点,条理清晰方便背诵。

一、经典五大基础架构风格(必考主干)

1. 数据流风格

核心:数据流动驱动执行,组件为数据加工单元,无直接函数调用

  • 批处理序列:整块数据串行处理,上一步完成才执行下一步
  • 管道 - 过滤器:数据分片流式传输,流水线并行,组件为过滤器、连接件为管道 示例:Shell 命令、编译器、ETL、日志分析

2. 调用 / 返回风格

核心:显式函数 / 方法调用,流程由代码主动控制,最通用

  • 主程序 - 子程序:自上而下分层调用,常共用全局数据 示例:老式过程式程序、小型工具
  • 分层架构:垂直分层,层间单向依赖、禁止跨层乱调用 衍生:MVC、MVP、MVVM(界面专用分层变体)、传统三层架构 示例:Web 系统、企业管理软件
  • 面向对象风格:数据 + 行为封装为对象,对象间方法调用协作,自带状态 示例:绝大多数桌面、后端、APP 软件

3. 独立组件风格(无直接调用,靠中间媒介协作)

(1)仓库 / 黑板风格

组件只读写全局共享数据区,彼此不交互 示例:IDE、专家系统、AI 分析平台

(2)隐式调用(事件驱动风格)

基于事件总线 / 消息队列,发布 - 订阅模式,事件触发执行(隐式调用) 示例:GUI 界面、消息推送、物联网、监控系统

4. 客户 - 服务器(C/S)风格

核心:请求 - 应答交互,分布式基础形态

  • 两层 C/S:客户端、服务端角色固定
  • 多层 C/S:拆分网关、应用服务等多层
  • B/S(浏览器 / 服务器):C/S 特例,浏览器作为通用客户端
  • P2P 对等网络:C/S 变种,去中心化,每个节点同时是客户端 + 服务端 示例:网站、传统客户端、P2P 下载、区块链

5. 虚拟机风格

核心:模拟独立运行环境,解释 / 执行指令与自定义语言

  • 解释器风格:解析并执行脚本、规则、自定义语法 示例:脚本引擎、规则引擎、编译器前端
  • 虚拟机:构建隔离运行环境,上层代码在虚拟环境执行 示例:JVM、Python 虚拟机、模拟器

二、现代分布式架构风格(工程常用,拓展考点)

基于经典风格演化,多用于大型互联网、微服务场景

  1. SOA 面向服务架构依托 ESB 服务总线整合异构系统与服务,侧重企业旧系统集成
  2. 微服务架构按业务域拆分为自治小型服务,独立部署、迭代、扩容
  3. Serverless 无服务器架构仅编写函数逻辑,由平台管理资源,事件触发执行,运维成本极低
  4. 分布式发布 - 订阅(Pub/Sub)事件驱动在分布式的落地,依托消息中间件,异步解耦多服务

三、硬件层面架构(区分软件架构,易混补充)

不属于软件架构风格,是计算机硬件体系,常对比考查:

  1. 冯・诺依曼架构:指令 + 数据同内存、统一总线、指令串行驱动(CPU、通用 GPU)
  2. 哈佛架构:指令、数据物理分存,双内存 + 双总线(单片机、DSP)
  3. 神经网络 / 类脑架构:海量轻量计算单元、数据驱动(NPU、TPU、AI 芯片)

四、快速归类速记表

表格

大类风格核心特征包含具体架构 / 模式
数据流风格数据流转驱动批处理序列、管道 - 过滤器
调用 / 返回风格显式方法调用主程序 - 子程序、分层、OO、MVC
独立组件风格靠数据 / 事件中转黑板、事件驱动(隐式调用)
客户 - 服务器风格请求 - 应答、网络交互C/S、B/S、P2P
虚拟机风格指令解释、虚拟运行环境解释器、虚拟机
分布式拓展风格多节点协同、网络通信SOA、微服务、Serverless、分布式 Pub/Sub

五、关键补充说明

  1. MVC 定位:不是独立大类,是分层架构的界面专用变体,归属调用 / 返回风格;
  2. P2P 定位:属于客户 - 服务器风格的去中心化变种;
  3. 发布订阅:单机版属于事件驱动(隐式调用),跨机器版属于分布式事件驱动;
  4. 混合架构:实际项目大多混用多种风格(如:B/S + 分层 + MVC + 事件驱动)。


主流软件体系结构


主流软件体系结构,分经典基础架构、分布式架构、特殊架构三大类,附核心特点、典型场景,简洁好记。

一、经典基础体系结构(最常用)

1. 主程序 - 子程序(典型过程式架构)

  • 结构:主程序逐层调用子程序,自上而下执行,常共享全局数据。
  • 特点:结构简单、紧耦合、流程固定。
  • 场景:小型工具、简单桌面程序、传统单体软件。

2. 分层架构(Layered)

  • 结构:按职责垂直分层(表现层→业务层→数据层),层间单向依赖。
  • 特点:职责清晰、易分工、易维护。
  • 场景:Web 系统、企业管理软件、后端业务系统。

3. 管道 - 过滤器(Pipe-Filter)

  • 结构:过滤器处理数据,管道传输数据流,组件独立、无共享状态。
  • 特点:数据流驱动、可拼接、易复用、天然支持流水线。
  • 场景:编译器、Shell 命令、ETL、日志分析、音视频处理。

4. 仓库 / 黑板架构(Repository/Blackboard)

  • 结构:以中央共享数据仓库为核心,所有组件读写仓库,互不直接通信。
  • 特点:组件高度解耦,依赖全局数据。
  • 场景:专家系统、AI 推理、IDE、数据挖掘。

5. 事件驱动架构(隐式调用)

  • 结构:基于事件总线 / 消息队列,组件发布 / 订阅事件,异步触发执行。
  • 特点:异步、松耦合、响应灵活,流程不固定。
  • 场景:GUI 界面、物联网、监控告警、消息中间件。

6. 客户端 / 服务器(C/S)

  • 结构:客户端发起请求,服务端统一处理响应,主从模式。
  • 衍生:B/S(浏览器 / 服务器,C/S 特例)。
  • 场景:桌面客户端、网站、APP、远程服务。

二、分布式 & 现代架构(互联网 / 云原生主流)

1. 微服务架构

  • 结构:按业务域拆分为独立小型服务,可单独部署、扩容、迭代,通过网关 / 接口 / 消息互通。
  • 特点:去中心化、高可用、弹性伸缩,运维复杂度高。
  • 场景:大型互联网平台、电商、支付、中台系统。

2. 面向服务架构(SOA)

  • 结构:以ESB 企业服务总线为核心,整合异构服务,统一协议与路由。
  • 特点:侧重企业系统集成、协议统一,偏传统大型政企系统。

3. 对等网络架构(P2P)

  • 结构:无中心服务器,节点互为客户端与服务端,点对点通信。
  • 特点:去中心化、容错强、负载分散。
  • 场景:文件传输、直播、区块链、分布式下载。

4. 云原生 / Serverless(无服务器架构)

  • 结构:开发者只写函数逻辑,无需管理服务器,按调用计费。
  • 特点:运维极简、弹性极强。
  • 场景:短时任务、接口服务、触发器类应用。

三、专用 / 特殊架构

1. 面向对象架构(OO)

  • 结构:以对象、类、继承、组合为核心,封装数据与行为。
  • 特点:模块化、可复用,多数现代架构的基础实现方式。

2. 虚拟机架构

  • 结构:宿主程序模拟独立运行环境,隔离执行代码。
  • 场景:Java 虚拟机、Docker 容器、模拟器。

3. 闭环控制架构

  • 结构:采集数据→计算决策→执行反馈,形成闭环。
  • 场景:工业控制、智能家居、自动驾驶、工控系统。

快速选型速览

  1. 简单小工具 → 主程序 - 子程序
  2. 常规业务 / 网站 → 分层架构、B/S
  3. 流式数据处理 → 管道 - 过滤器
  4. 界面 / 实时消息 → 事件驱动
  5. 大型互联网应用 → 微服务
  6. 多模块智能分析 → 黑板架构
  7. 企业老旧系统集成 → SOA
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 22:36:52

20行JavaScript实现流式AI对话界面:纯前端ChatGPT类机器人

1. 项目概述:用不到20行JavaScript打造类ChatGPT对话机器人,真能行?你有没有试过在浏览器控制台里敲几行代码,就让网页“开口说话”?不是调用现成的SDK封装包,也不是拖拽式低代码平台,而是从零开…

作者头像 李华
网站建设 2026/6/12 22:35:56

LTPI协议深度解析:为什么它能把GPIO、I2C、UART“塞进”一根LVDS线里?

LTPI协议:如何用LVDS单线承载多协议通信的工程魔法当系统架构师面对日益复杂的硬件互连需求时,线缆数量往往成为令人头疼的瓶颈。想象一下,一个典型的边缘计算模块需要集成GPIO状态监测、I2C传感器读取、UART调试输出以及自定义数据通道——传…

作者头像 李华