业务模块开发与扩展指南 (Business Modules Guide)
在基于 BitzOrcas.Modern 构建企业级业务系统(如律所管理、诉讼协同、金融风控或电商中台)时,业务模块(Business Modules) 是所有定制业务逻辑、专有聚合根与行业用例的唯一合法落地点。
依据 ADR 0203(物理目录结构)与 ADR 0205(商业包交付与客户扩展模型),业务系统严禁直接修改或侵入框架底座(src/Framework)与模板平台能力(src/Platform)源码,所有业务特性均需在 src/Modules/** 独立物理目录下构建。
1. 物理目录结构与防腐隔离 (ADR 0203)
1.1 模块目录命名规范
- 业务分组路径:
src/Modules/<DomainCategory>/<ModuleName>/ - 四层物理工程推荐结构:
BitzOrcas.Modules.<ModuleName>.Contracts:对外发布的 DTO、接口与集成事件;BitzOrcas.Modules.<ModuleName>.Domain:聚合根、实体、值对象与领域事件;BitzOrcas.Modules.<ModuleName>.Application:CQRS Command/Query、Mediator Handler、IRequestRule<T>校验规则;BitzOrcas.Modules.<ModuleName>.Infrastructure:SqlSugar / EF Core 双 ORM 仓储适配器、持久化模型与 Outbox 发布器。
2. 平台能力消费与扩展范式 (ADR 0205)
业务模块与平台能力之间遵循严格的深模块(Deep Module)单向依赖原则:
| 扩展方式 | 适用场景 | 架构原则 |
|---|---|---|
| Contracts 引用 | 业务模块需要调用身份、文件、通知等平台能力 | 仅允许 ProjectReference 或 PackageReference 引用 *.Contracts,架构测试静态拦截对 .Application / .Infrastructure 的引用 |
| 集成事件驱动 (CAP Outbox) | 跨模块状态同步与流程联动 | 遵循 ADR 0304,使用 RabbitMQ + CAP Outbox 传递版本化集成事件,保证分布式最终一致性 |
| 动态验证策略 (Strategy) | 租户级定制业务规则或特殊准入逻辑 | 注册 ITenantValidationStrategy<TRequest>,在 Pipeline 中实现热配置多租户合规拦截(ADR 0403) |
| Store 端口替换 | 业务专有数据持久化与复杂报表读模型 | 实现模块特定的 Store 接口,在 Host 组合根中无缝覆盖默认 Adapter |
3. 业务模块扩展核心专栏导航
为指导工程团队从零搭建生产级业务域,本专题包含以下核心实践篇章:
- Sandbox 黄金样例全景拆解:三层物理工程划分、CQRS 读写分离、聚合根实体与不可篡改错误字典;
- 模块生命周期与 Modularity 引擎:拓扑排序依赖解析、依赖注入自动接线与中间件挂载;
- Profiles 多租户定制与元包发行机制:按客户版本、部署规模与场景按需装配业务模块的元包架构。
4. 平台内置能力一览
开发业务模块时,请优先复用平台已有的 36 项成熟基础设施与领域能力,避免重复造轮子:
包括: