.NET应用如何优雅的实现功能定时开关
点击上方蓝字关注“汪宇杰博客”
导语
我们在打工的时候,总能遇到一种类型的需求:“我想要这个活动广告在双11期间才显示”,“我想要这个API在20号以后才开放”,可能你觉得这个需求没什么难的,写个时间判断不就行了?但是这么做并不优雅,如果你的系统里有诸如此类的其他功能也需要时间段控制,那么你的代码将像咖喱????一样涂满厕所。今天分享一个优雅的小技巧,可以不写任何 if,动态灵活的配置功能定时开关。
本文的内容是对前篇《.NET 应用如何优雅的做功能开关》的补充。因此请先阅读前文,了解相关库的用法。
FeatureFilter
FeatureManagement 库提供了两种 Filter:百分比(Percentage)、时间窗口(TimeWindow)。我们这里使用的就是 TimeWindowFilter。
配置文件
之前我们的功能开关只是简单的true或false。要使用Filter,需要在功能名称下定义 EnabledFor。例如此处的 TimeWindow。
"FeatureManagement": {
"Fubao": {
"EnabledFor": [
{
"Name": "TimeWindow",
"Parameters": {
"Start": "11/20/2020 00:00:00 GMT",
"End": "11/30/2020 00:00:00 GMT"
}
}
]
}
}
我定义了一个名为 Fubao 的功能,让它在 GMT 时间 2020年11月20日到11月30日之间打开。
依赖注入
之前我们不使用 Filter 的时候,DI 里只要加入下面这行代码就可以了。
services.AddFeatureManagement();
为了使用 Filter,我们现在还得加上对应的 Filter 类型。例如此处的 TimeWindowFilter 类型。
services.AddFeatureManagement().AddFeatureFilter<TimeWindowFilter>();
样例视图
Feature 的用法和之前没有区别,在视图里仍然可以用 taghelper,例如:
<feature name="Fubao">
<p>年轻的时候不996,什么时候可以?</p>
</feature>
今天是11月21日,程序运行起来后,符合显示条件。
如果我们把时间段改到今天之前,福报就消失了。
在 Controller / Action 以及代码里用 Feature 开关的方法见前文。
小提示
由于 TimeWindow 的时间属性是 DateTimeOffset? 类型的,因此我们没法配置具体时区(如中国 CST)的时间,必须人肉转换为 GMT 时间才行。
当然,如果你愿意自己996实现一个带时区的 Filter,可以参考微软开源代码:
https://github.com/microsoft/FeatureManagement-Dotnet/tree/main/src/Microsoft.FeatureManagement/FeatureFilters
汪宇杰博客
Azure | .NET | 微软 MVP
无广告,不卖课,做纯粹的技术公众号
喜欢本篇内容请点个在看
.NET应用如何优雅的实现功能定时开关相关推荐
- Arduino项目——定时控制,手机控制Arduino实现远程开关和定时开关
功能效果 1. 通过手机app的按键实时控制舵机转动. ...
- 【锐捷无线】定时开关无线信号配置
功能介绍 定时开关无线功能适用于那些在固定周期提供无线接入的场合.比如:某高校的教学楼只在白天上课时提供无线接入服务:某办公楼留给访客的无线网络只在工作日的上班时间开启等等.此功能可以减少网络流量,节 ...
- openwrt折腾记1-DDNS动态域名更新与WIFI定时开关脚本
本来无事,因为刚得知ipv6可以直接访问内部家庭宽带,于是开始试用.移动的第三方公司,运维人员给的答复是IP公网的需要安装专线,ipv6够呛. 0x01使用ipv6拨号 首先通过他的超极用户进入光猫, ...
- 广告牌定时器怎么设置时间_定时开关如何设置时间呢
路灯定时开关怎么设置定时 内容如下:1.先按取消键5秒就可解锁设置2.如果有设置,先选择,然后选择校时,校分,这个是开:3.再次按设置,校时,校分,第一组就设置完成.以此类推下去就行.4.选择自动,或 ...
- 腾达f3虚拟服务器设置,高手指南win7系统腾达F3路由器设置WIFI定时开关的法子
许多win7系统用户在工作中经常需要对win7系统腾达F3路由器设置WIFI定时开关进行设置,比如近日有用户到本站反映说win7系统腾达F3路由器设置WIFI定时开关的问题,但是却不知道要怎么设置wi ...
- TP-LINK 720N刷了OpenWRT后LED灯定时开关
TP-LINK 720N刷了OpenWRT后LED灯定时开关 参考链接:https://blog.wangmao.me/openwrt-timing-off-led-lights.html 因为家里有 ...
- PLC如何实现循环定时开关(Cycle_time_switch)
1.smartPLC 如何实现循环定时开关子程序,我们这里讨论的是实现这样的子程序,可以多次调用,控制多个回路的循环定时开关. 2.下面直接上代码: SUBROUTINE_BLOCK SecCycli ...
- H3C NX30 PRO无线路由器刷OpenWRT后LED定时开关
H3C NX30 PRO无线路由器刷OpenWRT后LED定时开关 前几天刚入手的H3C的NX30 PRO路由器做旁路由使用,跟着b站up主@酱紫表的视频[H3C NX30 Pro 超值百元路由器 ...
- Windows定时截屏、后台自动截屏工具,带有密码保护功能 —— 定时执行专家
目录 一.软件简介 二.使用教程 1.软件下载 2.软件的安装方法 3.无察觉自动截屏(例如:间隔每 10分钟,执行 1次) 一.软件简介 <定时执行专家>是一款制作精良.功能强大.简单易 ...
最新文章
- 详解程序包管理RPM
- 人生第一个快速幂的题(HDU - 1097--A hard puzzle )
- 关于Android消息机制你所需要知道的
- activiti7可以两个网关连着用吗
- argb可以和rgb同步吗_神光同步酷炫幻彩,安钛克光棱120 RGB风扇套装
- 法学学士学位的完整形式是什么?
- 不少人暗搓搓的准备春招了,我有一些好东东和招聘信息给你
- 复试分数线该怎么划定呢(洛谷P1068题题解,Java语言描述)
- NPM 简单实用说明
- sdp ddp内存怎么分_小鑫课堂 | 多余的内存不要浪费,拿来做硬盘吧
- [Hive]-架构篇
- c语言回文数实验报告,C语言 · 回文数
- 华为软件编程规范和范例
- u盘文件夹变成应用程序怎么恢复?方法来了!
- 高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案,高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案...
- BZOJ-1827 [Usaco2010 Mar]gather 奶牛大集会
- 吊打安卓?鸿蒙OS 2,android热更新流程
- 嵌入式Linux驱动学习【9】—— Nor Flash
- Spring高手之路——深入理解与实现IOC依赖查找与依赖注入
- 【转】Ogitor中Gizmo的绘制技巧 - 战魂小筑 - C++博客
热门文章
- JQuery框架2.位置属性|筛选方法|事件
- 51 Nod 1670 打怪兽
- 实现简单的shell sed替换功能
- 关于电商购物车与订单
- *[hackerrank]Girlfriend Necklace
- 页面闲置一段时间后,跳转
- ubuntu 安装 php
- UVA 10518 How Many Calls?
- 在Windows 7中禁用或修改Aero Peek的“延迟时间”
- java cas volatile_每日一个知识点:Volatile 和 CAS 的弊端之总线风暴