基础架构分层说明
分层原则
- 共享基础设施提供通用能力
- 核心请求能力默认启用
- Host 显式声明非核心横切能力
- 模块声明自己的业务集成能力
- 业务模块只依赖自己真正需要的基础设施能力
客户端信息能力
基础客户端信息
接口:
IClientInfoProvider
职责:
- 获取客户端 IP
- 获取 User-Agent
- 获取 Referrer
- 获取基础请求 URI 信息
- 获取域名解析后的 IP 列表
这部分属于轻量通用能力。
客户端地理定位
职责:
- 注册
ip2region搜索器 - 提供基于本地库的地址归属查询能力
这部分属于默认请求侧能力。
当前约定
默认行为
默认状态下:
- 提供基础客户端信息能力
- 默认注册地理定位能力
- 不默认注册 Email 能力
- 不默认注册 SignalR 能力
代码位置
| 位置 | 作用 |
|---|---|
FreeKitCoreServiceExtensions.AddBaseApiFeatures | API 基础能力注册 |
ClientInfoProvider | 客户端基础信息提供者 |
ServiceCollectionExtensions.AddIP2Region | 地理定位资源注册 |
各模块 ModuleStartup.ConfigureServices | 模块级 Email / SignalR / 业务集成注册 |
适用规则
以下能力适合进入共享默认层:
- 轻量级请求上下文能力
- 控制器公共基础能力
- 通用异常处理
- 通用鉴权约定
以下能力适合进入按需层:
- 重资源搜索器
- 对外网络依赖
- 需要额外数据文件的能力
- Email 发送
- SignalR 实时能力
目录目标
基础架构应保持:
- 上层放抽象与约定
- 中层放通用实现
- 下层按 Host 或业务域显式启用可选能力