跳到主要内容

基础架构分层说明

分层原则

  1. 共享基础设施提供通用能力
  2. 核心请求能力默认启用
  3. Host 显式声明非核心横切能力
  4. 模块声明自己的业务集成能力
  5. 业务模块只依赖自己真正需要的基础设施能力

客户端信息能力

基础客户端信息

接口:

  • IClientInfoProvider

职责:

  • 获取客户端 IP
  • 获取 User-Agent
  • 获取 Referrer
  • 获取基础请求 URI 信息
  • 获取域名解析后的 IP 列表

这部分属于轻量通用能力。

客户端地理定位

职责:

  • 注册 ip2region 搜索器
  • 提供基于本地库的地址归属查询能力

这部分属于默认请求侧能力。

当前约定

默认行为

默认状态下:

  • 提供基础客户端信息能力
  • 默认注册地理定位能力
  • 不默认注册 Email 能力
  • 不默认注册 SignalR 能力

代码位置

位置作用
FreeKitCoreServiceExtensions.AddBaseApiFeaturesAPI 基础能力注册
ClientInfoProvider客户端基础信息提供者
ServiceCollectionExtensions.AddIP2Region地理定位资源注册
各模块 ModuleStartup.ConfigureServices模块级 Email / SignalR / 业务集成注册

适用规则

以下能力适合进入共享默认层:

  • 轻量级请求上下文能力
  • 控制器公共基础能力
  • 通用异常处理
  • 通用鉴权约定

以下能力适合进入按需层:

  • 重资源搜索器
  • 对外网络依赖
  • 需要额外数据文件的能力
  • Email 发送
  • SignalR 实时能力

目录目标

基础架构应保持:

  • 上层放抽象与约定
  • 中层放通用实现
  • 下层按 Host 或业务域显式启用可选能力