开发手记 · 第 11 / 11 篇 合集目录 ‹ 上一篇

写到这一篇,我想给整套工业数据 WebApi 平台画个总图。它给我的感觉,是一座能装很多摊位的商场。

它从几个人、几个工程,慢慢长成现在这样。能长而不乱,靠的就是这四层把"谁该住哪"说清楚了。我维护过那种全塞一个工程的项目,加个人都怕动;这次从一开始就在想怎么长大之后还清楚。全仓一共 243 个 .csproj,约 59 万行 C#。这个体量,靠乱堆是撑不住的。它们不是摊在一起,而是分成四层:最底下是宿主,也就是真正起服务的 WebServerAPICore;往上是框架层 Frames,装着前面说的加载器、契约与基础设施;再往上是两类摊位——业务插件(比如各类数据提供方、数据服务)和基础插件(ORM、缓存、加密、配置、日志)。

(等价改写,名字换掉了)四层大致长这样:

宿主   WebServerAPICore
  └─ 框架   Frames/*(加载器·契约·基础设施)
       ├─ 业务插件   RepositoryProvider/*、DataService…
       └─ 基础插件   ORM·缓存·加密·配置·日志

商场是怎么运转的

宿主只认框架,框架把摊位按约定接进来。业务插件和基础插件都"租用"框架提供的同一套规则,彼此不直连。宿主薄、框架厚、业务插件化,是这个商场的黄金比例:宿主只开门迎客,不干业务;框架层沉淀通用能力;新业务就是新摊位,拎包入驻,不用动商场本身。要扩张就加摊位,结构和物业标准都不用改,所以两百多个工程还能各归其位。

收个尾

这一篇是系列的最后一篇。回看前几篇:热加载靠隔离、可插拔靠图纸分离、自我生长靠零件柜、横切能力靠分层——它们能站稳,根都扎在这个四层拓扑里。从第一个拼错的单词,到能装两百多个摊位的商场,我看到的不是某一项惊世骇俗的设计,而是一连串"让边界待在边界里"的耐心决定。正是这些朴素的选择,撑起了这套平台的样子。回头看,好的架构不是不长大,是长大了还清楚谁在哪。