管理應用程式功能
功能管理是現代的軟體開發實務,可讓功能發行與程式碼部署脫勾,而能夠快速地依需求變更功能可用性。 它會使用稱為功能旗標的技術 (也稱為功能切換、功能切換控制等等) 來動態管理功能的生命週期。
基本概念
以下是與功能管理相關的幾個新詞彙:
- 功能旗標:功能旗標是具有 開啟 或 關閉二進位狀態的變數。 功能旗標也有相關聯的程式碼區塊。 功能旗標的狀態會觸發是否執行程式碼區塊。
- 功能管理員:功能管理員是應用程式套件,可處理應用程式中所有功能旗標的生命週期。 功能管理員通常會提供額外的功能,例如快取功能旗標並更新其狀態。
- 篩選:篩選條件是評估功能旗標狀態的規則。 使用者群組、裝置或瀏覽器類型、地理位置和時間範圍都是篩選可以代表的範例。
有效的功能管理實作至少須由兩個搭配運作的元件組成:
- 一個使用功能旗標的應用程式。
- 一個儲存功能旗標及其目前狀態的個別存放庫。
下列範例展示這些元件互動的方式。
程式碼中的功能旗標使用方式
在應用程式中實作功能旗標的基本模式很簡單。 您可以將功能旗標想成布林值狀態變數,並搭配程式碼中的 if 條件陳述式使用:
if (featureFlag) {
// Run the following code
}
在此情況下,如果 featureFlag 設定為 True,則會執行封閉式程式碼區塊;否則會略過。 您可以靜態設定 featureFlag 的值,如下列程式碼範例所示:
bool featureFlag = true;
您也可以根據特定規則評估旗標的狀態:
bool featureFlag = isBetaUser();
您可以擴充條件以設定任一狀態的應用程式行為:
if (featureFlag) {
// This following code will run if the featureFlag value is true
} else {
// This following code will run if the featureFlag value is false
}
功能旗標宣告
每個功能旗標都有兩個部分:名稱和一或多個篩選清單,用來評估功能的狀態是否 開啟 (也就是其值為 True時)。 篩選條件會定義何時應該開啟功能的使用案例。
如果功能旗標有多個篩選條件,則會依序周遊篩選條件清單,直到其中一個篩選條件確定應啟用功能。 此時,功能旗標已 開啟,並略過任何剩餘的篩選結果。 如果沒有篩選條件表示應該啟用此功能,功能旗標就會 關閉。
功能管理員支援 appsettings.json 作為功能旗標的組態來源。 下列範例示範如何在 JSON 檔案中設定功能旗標:
"FeatureManagement": {
"FeatureA": true, // Feature flag set to on
"FeatureB": false, // Feature flag set to off
"FeatureC": {
"EnabledFor": [
{
"Name": "Percentage",
"Parameters": {
"Value": 50
}
}
]
}
}
功能旗標存放庫
若要有效地使用功能旗標,您必須將用於應用程式中的所有功能旗標外部化。 此方法可讓您變更功能旗標狀態,而不需修改和重新部署應用程式本身。
Azure 應用程式組態的設計目的是要成為功能旗標的集中式存放庫。 您可以使用它來定義不同種類的功能旗標,並快速且自信地操作其狀態。 然後,您可以針對各種程式設計語言架構使用 Azure 應用程式組態程式庫,輕鬆地從您的應用程式存取這些功能旗標。