惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
IT之家
IT之家
B
Blog
博客园_首页
博客园 - 司徒正美
有赞技术团队
有赞技术团队
博客园 - 聂微东
I
InfoQ
美团技术团队
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog

博客园 - Hey,Coder!

微信小程序 web方案实现调音器功能 systemctl slice配置docker最大占用cpu 内存 pipenv环境变量配置 .net8验证码 数据库差异对比工具 docker部署prometheus grafana pgexporter Alertmanager ubuntu24 换源 ssh配置 ubuntu24 Harbor部署 ubuntu24 kvm部署 cockpit web管理界面 .net api代理 Ubuntu 24.04 DMAR IOMMU 报错修复 uniapp iOS App 上架 vs文件软链接 Docker 网络别名 .net8通用中间件处理公共返回值结构 .net环境下OpenTelemetry Body 读取注意事项 jaeger界面显示异常 .net opentelemetry collector jaeger c# opentelemetry 自定义export c# opentelemetry 自定义export c# 生成对象的初始化代码 Elasticsearch ILM 与 Data Stream 概念及实例说明文档 portainer httphelper封装 Ocelot + Consul + SignalR 粘性会话 docker postgresql17 主从复制 rabbitmq总结与c#示例 docker rabbitmq quartz dashboard docker consul registrator 服务自动注册consul 微服务动态扩容
正交软件架构
Hey,Coder! · 2026-06-20 · via 博客园 - Hey,Coder!

正交软件架构(Orthogonal Software Architecture)笔记

一、什么是正交软件架构

将系统划分为职责完全独立、互不依赖的模块(正交维度),
各模块通过统一控制总线 / 中介协作,
一个维度的变化不影响其他维度

核心理念:
“变与不变分离,变化之间互不影响”


二、主要特点

1. 正交性(核心)

  • 模块之间:
    • 无循环依赖
    • 不互相感知具体实现
  • 修改一个模块 → 不影响其他模块行为

2. 统一协作中介

  • 控制总线(Control Bus)
  • 事件总线(Event Bus)
  • 插件容器 / 微内核

┌────────────┐
│ 控制总线 │
└─────┬──────┘
┌────────┼────────┐
┌──▼──┐ ┌──▼──┐ ┌──▼──┐
│模块A│ │模块B│ │模块C│
└─────┘ └─────┘ └─────┘

3. 高复用 & 可组合

  • 模块可在多个系统复用
  • 新功能 = 新组合(非修改旧代码)

4. 易测试、易替换

  • 可单独单元测试
  • 可热插拔替换实现(如存储、算法)

三、优点 ✅

优点 说明
低耦合 模块独立演化
高内聚 单一职责清晰
易扩展 新增模块不改动旧系统
易维护 Bug 定位、替换成本低
高复用 通用模块跨项目使用

四、缺点 ❌

缺点 说明
设计成本高 需要提前识别正交维度
初期复杂 小项目显得过度设计
中介性能损耗 总线/事件机制带来开销
易误用 强依赖伪装成正交

五、适用场景 ✅

  • 大型复杂业务系统(ERP、金融核心、政务系统)
  • 插件化系统(IDE、规则引擎、工作流引擎)
  • 多渠道接入系统(Web / App / API / 第三方)
  • 需求频繁变更、长期演进的系统
  • 对测试性、替换性要求高的系统

六、不适用场景 ❌

  • 小型 CRUD 项目
  • 极致性能、低延迟系统
  • 团队缺乏架构设计经验

七、与其他架构对比

架构 核心思想 对比正交架构
分层架构 上层依赖下层 层间强依赖,不够正交
微内核 核心 + 插件 正交架构常借鉴其思想
微服务 进程级解耦 正交是逻辑级,微服务是部署级
模块化单体 模块拆分 若无真正解耦,仍非正交

八、设计要点(实践建议)

  1. 先识别变化维度
    • 业务规则
    • 技术实现
    • 外部系统
  2. 严禁模块间直接调用
  3. 通过接口 / 事件通信
  4. 保持模块可独立部署或可测试
  5. 定期重构,消除隐性依赖

九、一句话总结

正交软件架构的本质是:
用“完全解耦的可组合模块”,换取系统的长期演进能力。