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

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
Project Zero
Project Zero
K
Kaspersky official blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
T
The Blog of Author Tim Ferriss
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Recorded Future
Recorded Future
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
S
Schneier on Security
P
Palo Alto Networks Blog
H
Hacker News: Front Page
N
News and Events Feed by Topic
N
Netflix TechBlog - Medium
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
SecWiki News
SecWiki News
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Hacker News
The Hacker News
C
Check Point Blog
L
LangChain Blog
腾讯CDC
小众软件
小众软件
T
Tenable Blog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
About on SuperTechFans
Google Online Security Blog
Google Online Security Blog
C
Cisco Blogs
Recent Announcements
Recent Announcements
Hacker News: Ask HN
Hacker News: Ask HN
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
雷峰网
雷峰网
美团技术团队
D
DataBreaches.Net
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
博客园_首页

博客园 - Hey,Coder!

Elasticsearch ILM 与 Data Stream 概念及实例说明文档 portainer httphelper封装 Ocelot + Consul + SignalR 粘性会话 docker postgresql17 主从复制 rabbitmq总结与c#示例 docker rabbitmq quartz dashboard docker consul registrator 服务自动注册consul 微服务动态扩容 ubuntu24.04 安装docker RAG 检索增强生成 软考 - 架构设计师 知识点总结 c# MailKit3.4.3 发送邮件、附件 nginx 反向代理postgresql c# 信号量 elsa 3.5 中间件记录最后执行的节点数据 xp密钥 c# System.Text.Json 反序列化Dictionary<string,object>时未转换基础类型的处理方法 docker配置代理 openclaw 接入 LMStudio的模型服务 wpf canvas 移动 缩放 windows平台openclaw搭建 wpf scrollerview触摸滚动 c# 动态切换sqlsugar连接字符串 c# Elastic.Clients.Elasticsearch 动态查询 c# es 封装Elastic.Clients.Elasticsearch c# scrollerview滚动到指定元素位置 WPF 重写Expander 基于elsa工作流封装一套变量、组件的体系 常用活动重写 DynamicExpresso 轻量级动态表达式库 c# elsa 3.5.2 程序化工作流常用功能及自定义中间件 leaflet docker 连接老版本的sqlserver ssl错误 c# quartz 动态创建任务 控制任务运行和停止 依赖注入 cefsharp 模拟点击 批量重置数据库的数据 docker 复制远程镜像本地并创建容器 c# newtonsoft dynamic
正交软件架构
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. 定期重构,消除隐性依赖

九、一句话总结

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