使用功能篩選來啟用條件式功能旗標

功能旗標可讓您在應用程式中啟用或停用功能。 簡單功能旗標為開啟或關閉。 應用程式的行為一律會相同。 例如,您可以在功能旗標後推出新功能。 啟用功能旗標時,所有使用者都會看到該新功能。 停用功能旗標則會隱藏該新功能。

相反地,條件式功能旗標會允許動態啟用或停用功能旗標。 根據功能旗標準則,應用程式的行為可能會不同。 假設您一開始想要向一小部分的使用者顯示您的新功能。 條件式功能旗標可讓您為某些使用者啟用功能旗標,同時為其他人停用此功能旗標。 功能篩選會決定每次評估功能旗標的狀態。

Microsoft.FeatureManagement 程式庫包含三個功能篩選:

  • PercentageFilter 會根據百分比啟用功能旗標。
  • TimeWindowFilter 會在指定的時段內啟用功能旗標。
  • TargetingFilter 會為指定的使用者和群組啟用功能旗標。

您也可以建立自己實作 Microsoft.FeatureManagement.IFeatureFilter 介面的功能篩選。

必要條件

註冊功能篩選

您可以藉由呼叫 AddFeatureFilter 方法來註冊功能篩選,並指定所需功能篩選的類型名稱。 例如,下列程式碼會註冊 PercentageFilter

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddFeatureManagement().AddFeatureFilter<PercentageFilter>();
}

在 Azure 應用程式組態中設定功能篩選

某些功能篩選有其他設定。 例如,PercentageFilter 會根據百分比啟動功能。 它具有設定可定義要使用的百分比。

您可以針對 Azure 應用程式組態中定義的功能旗標設定這些設定。 例如,請遵循下列步驟來使用 PercentageFilter,以針對 Web 應用程式 50% 要求啟用功能旗標:

  1. 請遵循快速入門:將功能旗標新增至 ASP.NET Core 應用程式,以建立具有功能旗標的 Web 應用程式。

  2. 在 Azure 入口網站中,移至您的組態存放區,然後選取 [功能管理員]

    Screenshot of the Azure portal, selecting the Edit option for the Beta feature flag, under Feature manager.

  3. 在快速入門中建立的 Beta 功能旗標行上,選取捷徑功能表,然後選取 [編輯]

  4. 在開啟的 [編輯功能旗標] 窗格中,核取 [啟用功能旗標] 核取方塊 (若尚未啟用)。 然後勾選 [使用功能篩選] 核取方塊,並選取 [建立]

    Screenshot of the Azure portal, filling out the form 'Edit feature flag'.

  5. [建立新的篩選] 窗格隨即開啟。 在 [篩選類型] 下,選取 [目標篩選] 來為特定使用者或群組啟用新的篩選。

    Screenshot of the Azure portal, creating a new targeting filter.

  6. 選擇性地展開 [評估流程] 功能表,以查看顯示目標篩選在所選案例中評估方式的圖表。 將 [預設百分比] 保留為 50。 [依群組覆寫] 和 [依使用者覆寫] 選項可讓您為精選群組或使用者啟用或停用功能旗標。 預設會停用這些選項。

  7. 選取 [新增] 以儲存新的功能篩選,並返回 [編輯功能旗標] 畫面。

  8. 您建立的功能篩選現在會列在功能旗標詳細資料中。 選取 [套用] 以儲存新的功能旗標設定。

    Screenshot of the Azure portal, applying new targeting filter.

  9. 在 [功能管理員] 頁面上,功能旗標現在的 [功能篩選] 值會是 1

    Screenshot of the Azure portal, displaying updated feature flag.

作用中的功能篩選

若要查看此功能旗標的效果,請啟動應用程式,並在瀏覽器中點選 [重新整理] 按鈕多次。 有大約 50% 的時間,您會看到 Beta 項目出現在工具列上。 其餘時間會隱藏,因為 PercentageFilter 會停用要求子集的 Beta 功能。 下列影片顯示此行為的運作情況。

Screenshot of a web browser showing a targeting filter in action.

下一步