Aegis 3.1 Roadmap
3.1 版本聚焦于运行管控能力补齐和关键基础设施完善,围绕 8 个方向推进。
1. 应用运行端口指定
当前 Aegis 应用的监听端口完全依赖 ASP.NET Core 标准方式(launchSettings.json / ASPNETCORE_URLS 环境变量),框架本身不参与端口决策。
3.1 将提供 Aegis 统一的端口配置入口,支持在 appsettings.json 的 ServerSettings 中直接指定监听地址和端口,同时支持多端点配置(HTTP + HTTPS)。
2. 框架排错与自查
3.1 将增强启动期和运行期的排错能力:
- 启动排错增强:组件加载失败时提供可操作的修复指引,而非仅输出异常信息
- 健康检查端点:整合 HealthChecker 为可配置组件,提供
/health端点,展示组件状态、数据库连接、Redis 连通性等 - 诊断端点:提供
/aegis/diag端点,返回当前加载的组件列表、版本号和配置来源 - 排错 FAQ 文档:整理常见启动异常及排查手册
3. 程序集整体管控
3.1 将对应用启动时的程序集加载和组件管理进行统一封装:
- 内部管理器:将启动过程中分散的静态状态统一封装管理
- 程序集过滤:支持在配置中排除不需要的程序集
- 版本冲突检测:启动时检测同一组件的多版本共存并输出警告
4. CAP 消息总线
当前 Aegis 提供进程内 EventBus(基于 Channel)和 RocketMQ 客户端,但不支持基于本地消息表的分布式事务消息。
3.1 将新增 Aegis.CAP 组件,封装 DotNetCore.CAP,提供:
- 多传输支持:RabbitMQ / Kafka / Redis Streams 等多种消息传输
- 分布式事务消息:基于本地消息表,确保业务操作与消息发送的一致性
- Aegis 风格接入:通过
Component.deps.json启用,与 FreeSql UnitOfWork 事务集成 - 上下文透传:自动透传用户上下文
同时将明确 EventBus(进程内)与 CAP(分布式)的选型指引,帮助开发者根据场景选择合适的消息方案。
5. Jobs 完善
3.1 将补齐延迟任务调度的关键缺失环节,使其达到生产可用:
- 状态机闭环:完成 Succeeded / Canceled / Aborted 三个终态的状态转换和清理
- 数据库轮询调度:完善 JobScheduler,实现从数据库定时捞取待执行任务注入时间轮
- 状态上报:实现 JobStatusReporter,提供任务执行状态的可观测能力
- 配置化:心跳间隔、轮询周期等参数从硬编码改为配置读取
- 异常处理改进:结构化日志替代控制台输出,异常时正确通知状态机
6. Broker + Polly 弹性调用
当前 Aegis.Net.Broker 是成熟的声明式 HTTP 客户端,Aegis.Extensions.Polly 提供容错策略,但两者之间没有集成。3.1 将建立两者的结合机制:
- 策略重写:提供完整的异步策略构建 API,支持重试 + 超时 + 熔断 + 降级的灵活组合
- Broker 集成:在 BrokerClient 中支持注入 Polly 策略,让通过 Broker 发出的 HTTP 调用自动经过弹性策略保护
- 声明式标注:在契约接口上通过
[Retry]、[CircuitBreaker]、[Timeout]等特性标注策略,简化使用 - 配置化:支持在
appsettings.json中配置默认策略参数(重试次数、超时时间等)
7. .NET 6.0 多目标框架支持
当前 Aegis 绝大部分组件仅支持 .NET 8.0。.NET 6.0 是最后一个支持 Windows 7 客户端环境的 LTS 版本。
3.1 将对 Aegis 核心组件扩展 .NET 6.0 支持,采用分层策略:
| 层级 | 模块 | .NET 6.0 支持 |
|---|---|---|
| 传输层 | Transfer / Context / Common | ✅ 多目标 |
| 工具层 | Configuration / Component / IdGenerator / EventBus / Extensions.Polly | ✅ 多目标 |
| 存储层 | FreeSql / Caching.Redis / Jobs.Postgres | ✅ 多目标 |
| 宿主层 | Core.Infrastructure / Swagger / Cors / Authentication / Authorization | ❌ .NET 8.0 only |
每个组件文档将标注支持的 TargetFramework,方便开发者确认兼容性。
8. 本机 IP 获取
当前 Aegis 仅提供获取请求来源 IP(客户端/远程 IP)的能力,无法获取本机 IP 地址。
3.1 将在 Aegis.Core.Common 中新增本机 IP 工具类:
- 获取本机所有有效 IP 地址(自动排除 loopback 和 link-local)
- 支持 IPv4 / IPv6 筛选
- 支持多网卡环境
- 在
ActionContext中增加本机 IP 信息 - 启动时输出本机 IP 列表
优先级
必做
| 功能 | 方向 |
|---|---|
| 启动排错增强 | 排错与自查 |
| 新增 Aegis.CAP 组件 | CAP 消息总线 |
| CAP 与 Aegis 体系集成 | CAP 消息总线 |
| 状态机终态处理器实现 | Jobs 完善 |
| JobScheduler 数据库轮询实现 | Jobs 完善 |
| 重写 HttpPolicy(异步策略 API) | Broker + Polly |
| Broker + Polly 集成机制 | Broker + Polly |
| 多目标改造策略制定 | .NET 6.0 多目标 |
| 核心无依赖模块多目标化 | .NET 6.0 多目标 |
| 新增本机 IP 工具类 | 本机 IP |
应做
| 功能 | 方向 |
|---|---|
| 端口配置入口 | 端口指定 |
| 组件完整性校验 | 排错与自查 |
| HealthChecker 集成 | 排错与自查 |
| 启动异常 FAQ 文档 | 排错与自查 |
| AppCore 内部管理器 | 程序集管控 |
| 程序集过滤机制 | 程序集管控 |
| CAP 与 FreeSql 事务集成 | CAP 消息总线 |
| CAP 使用文档 | CAP 消息总线 |
| JobStatusReporter / 配置化 / 异常处理 | Jobs 完善 |
| 声明式策略标注 | Broker + Polly |
| Polly + Broker 最佳实践文档 | Broker + Polly |
| Demo 更新 | Broker + Polly |
| NuGet 包版本条件引用 | .NET 6.0 多目标 |
| 组件层多目标化 | .NET 6.0 多目标 |
| 本机 IP IPv4/IPv6 筛选 + ActionContext 扩展 | 本机 IP |