日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET应用如何优雅的实现功能定时开关

發布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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应用如何优雅的实现功能定时开关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。