SuperAPI AI 工具集

feature-flags

通用与其它

查看项目

更新于 10-16 01:26

技能介绍

用途:该技能整理在 ASP.NET Core Razor Pages 应用中实现功能开关(feature flags)的模式,用于支持安全部署、渐进式发布、A/B 测试与快速回滚,避免部署未完成功能或无法快速响应线上问题。主要能力:1)配置式开关,用 appsettings.json 及环境覆盖,如 FeatureManagement 节点下发 NewDashboard、BetaFeature、DarkMode、PaymentV2 等,并可使用 Microsoft.Targeting 按用户、组与默认放量百分比控制;2)强类型开关,定义 FeatureFlags 常量、IFeatureAwareService 与 IFeatureManager 扩展方法,提升编译期安全与可发现性;3)Razor Pages 集成,在 PageModel 中注入 IFeatureManager,页面视图用 @if 或 @inject 做条件渲染;4)FeatureGate 动作筛选器,可在控制器或 PageModel 上加 [FeatureGate(...)] 控制访问,支持 RequirementType.All 与 NoFeatureRedirect 跳转,也可继承自定义;5)基于目标和百分比的渐进发布,注册 ITargetingContextAccessor 从 HttpContext 用户与角色构建 TargetingContext;6)时间窗口开关,配置 Microsoft.TimeWindow 的 Start/End,并可作为自定义 IFeatureFilter 实现周期性时间;7)中间件与管道集成,在请求级缓存开关并写入 HttpContext.Items,配合视图辅助方法使用。必要用法:在 Program.cs 中注册 AddFeatureManagement(),按需 AddFeatureFilter<TargetingFilter>()、PercentageFilter、TimeWindowFilter;注册 AddHttpContextAccessor() 与 ITargetingContextAccessor;中间件用 app.UseFeatureFlags()。限制与注意事项:避免硬编码环境判断、避免紧密循环中反复检查开关、使用常量并捕获 FeatureManagementException 做安全回退、避免业务层紧耦合 IFeatureManager、及时清理过期开关并统一命名规范,且对开关使用做监控;官方未提供具体费用、价格或平台兼容范围。