

1.软件架构风格(Software Architecture Style)
1.1 定义
软件架构风格是一类应用系统的组织方式的通用模式。它描述了系统构件如何组织及它们之间的交互方式,提供了一种架构级别的设计语言。
核心组成:
(1)词汇表(Vocabulary)
构件(Component):系统中的基本模块或单元,如服务、处理器、数据库等。 连接件(Connector):描述构件之间交互的机制,如消息传递、调用、事件、管道等。
(2)约束规则(Constraints)
描述构件和连接件如何组合、组织,以及它们的交互规则。 例如,数据流架构风格要求信息只能沿单向管道流动。
1.2 作用与价值
(1)反映结构 & 语义特征
不同风格强调不同关注点,如性能、可扩展性、可维护性等。 例:客户端-服务器风格强调分布式服务与资源共享,事件驱动风格强调异步响应和解耦。
(2)提供设计复用
经过验证的架构风格可以在多个系统中复用,降低设计风险。 例:REST 风格可用于大规模 Web 服务系统;MVC 风格可用于 GUI 应用。
(3)构成架构复用基础
架构模式(Architecture Pattern)往往基于一种或多种架构风格。 复用风格可以加速系统开发,同时保证质量属性的满足。
1.3 典型架构风格示例
| 架构风格 | 主要特点 | 适用场景 | 例子 |
|---|---|---|---|
| 分层(Layered) | |||
| 客户端-服务器(Client-Server) | |||
| 事件驱动(Event-Driven) | |||
| 管道-过滤(Pipe-and-Filter) | |||
| 共享存储(Shared Repository) | |||
| 微内核(Microkernel) | |||
| 微服务(Microservices) |
1.4 深度解析
(1)可组合性
架构风格不是孤立使用的,常常可以混合使用,如微服务 + 事件驱动。
(2)质量属性驱动
风格选择应考虑非功能需求(性能、可维护性、安全性等)。
(3)演化与适应性
风格可以随着系统需求演化进行调整,但核心约束通常保持不变。
(4)验证与复用
一个被广泛应用的风格,其可复用性和设计安全性已经得到验证。
2.基本架构风格分类
2.1 数据流风格(Data Flow)
核心思想:系统中的数据沿着预定路径流动,每个处理单元只关注数据的处理,不关注控制流程。
| 子类 | 核心机制 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 批处理序列(Batch Sequential) | ||||
| 管道-过滤器(Pipe & Filter) |
2.2 调用/返回风格(Call/Return)
核心思想:系统由调用关系驱动,上层模块通过调用下层模块实现功能。
| 子类 | 核心机制 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 主程序/子程序 | ||||
| 面向对象(Object-Oriented) | ||||
| 层次结构(Layered) | ||||
| 客户端/服务器(Client/Server) |
2.3 独立构件风格(Independent Component)
核心思想:构件独立存在,通过消息或事件进行协作,强调松耦合。
| 子类 | 核心机制 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 进程通信(Process Communication) | ||||
| 事件驱动 / 隐式调用(Event-driven / Implicit Invocation) |
2.4 虚拟机风格(Virtual Machine)
核心思想:通过虚拟执行环境或规则推理系统,实现抽象层的功能控制。
| 子类 | 核心机制 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 解释器(Interpreter) | ||||
| 基于规则系统(Rule-based System) |
2.5 以数据为中心风格(Data-Centric)
核心思想:系统围绕数据组织,处理模块围绕统一数据存储进行操作。
| 子类 | 核心机制 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 仓库风格(Repository) | ||||
| 黑板风格(Blackboard) |
分析:
数据流风格适合顺序处理或流式处理任务,关注数据传递路径。 调用/返回风格强调控制流和模块层次结构,适合有明确调用关系的系统。 独立构件风格强调松耦合和异步协作,适合分布式、事件驱动系统。 虚拟机风格适合解释执行或基于规则的复杂逻辑推理。 以数据为中心风格以数据为核心,适合知识密集型或大型企业系统。 暂时无法在飞书文档外展示此内容
3.层次结构风格扩展
3.1 基本思想
层次结构风格通过分层组织系统,每层只与上下相邻层交互,强调模块化、封装与职责分离。 每层只关注自身职责,简化开发、维护和扩展。
3.2 常见层次结构分类
两层 C/S:客户端 + 服务器

三层 C/S:表现层 + 应用层 + 数据层

三层 B/S:浏览器 + Web 服务器 + 数据库

混合架构:C/S + B/S 结合

RIA(富互联网应用):增强 B/S 用户体验(典型:小程序、Flash、Silverlight)

| 类型 | 架构层 | 核心特点 | 典型应用 |
|---|---|---|---|
| 两层 C/S | |||
| 三层 C/S | |||
| 三层 B/S | |||
| 混合架构 | |||
| RIA(富互联网应用) |
3.3 经典模式:MVC / MVP / MVVM
MVC / MVP / MVVM MVC:Model-View-Controller

MVP:Presenter 作为中介,隔离 View-Model

MVVM:双向数据绑定(前端框架 Vue/React 常用)

| 模式 | 组成 | 核心特点 | 典型应用 |
|---|---|---|---|
| MVC | |||
| MVP | |||
| MVVM |
深入解析:
MVC:强调控制器驱动,UI 被动渲染。 MVP:Presenter 处理逻辑并直接操作 View,实现解耦。 MVVM:数据绑定自动同步 Model 与 View,前端框架支持响应式 UI,减少手动 DOM 操作。
3.4 层次结构风格 示例(竖向树形表示)

4.面向服务架构(SOA)
4.1 核心思想
粗粒度(Coarse-grained):服务封装完整业务功能,而非微小操作。 松耦合(Loosely Coupled):服务之间低依赖,调用方式统一。 标准化接口(Standardized Interface):通过规范协议实现跨语言、跨平台调用。
4.2 特征
| 特征 | 说明 |
|---|---|
| 服务可重用 | |
| 服务可组合 | |
| 语言无关 | |
| 标准化接口 |
4.3 实现方式
(1) Web Service
UDDI(Universal Description, Discovery and Integration):服务注册与发现。 WSDL:服务接口描述,包括方法、参数、返回值、协议。 SOAP:消息传输协议,XML 格式封装请求和响应。 特征:平台无关、可跨网络调用,典型用于企业系统集成。
(2) 企业服务总线(ESB)
核心作用:实现企业内部服务的统一总线通信。 功能: 消息路由与转换 协议适配(HTTP、JMS、SOAP 等) 安全、事务、监控管理 优点:集中管理服务,支持业务流程编排,提高可扩展性。
4.4 SOA 图示


5.其他补充风格
闭环/过程控制风格:典型于控制系统(空调、汽车巡航)。 C2 风格:构件-连接件,按规则组合(多用于学术研究)。
6.总结表
| 架构风格 | 关键特征 | 典型应用 |
|---|---|---|
夜雨聆风