建立配對的索引鍵與值
Azure 應用程式組態會將組態資料儲存為索引鍵/值組。
金鑰
鍵作為鍵值對的名稱,並且用來儲存和擷取相對應的值。 常見的方法是使用字元分隔符號 (例如 / 或 :),來將索引鍵組織到階層命名空間。 使用最適合您應用程式的慣例。 應用程式組態會將索引鍵視為一個整體。 既不會剖析索引鍵來找出索引鍵名稱的結構,也不會對索引鍵強制執行任何規則。
以下是根據元件服務階層結構設計的鍵名稱範例:
AppName:Service1:ApiEndpoint
AppName:Service2:ApiEndpoint
在應用程式框架中使用組態資料可能決定鍵值的特定命名方案。 例如,Java 的 Spring Cloud 架構定義供應 Spring 應用程式設定的 Environment 資源。 這些資源是由包含「應用程式名稱」和「設定檔」的變數參數化。 Spring Cloud 相關設定資料的索引鍵通常會以這兩個元素開頭,並以分隔符號隔開。
儲存在應用程式組態中的索引鍵是以 Unicode 為基礎的字串 (需區分大小寫)。 在應用程式組態存放區中,索引鍵 app1 和 App1 是不同的。 因為部分架構會以不區分大小寫的方式處理組態索引鍵,所以當您在應用程式內使用組態設定時,務必記得這一點。
您可以在輸入到應用程式組態的索引鍵名稱中使用任何 Unicode 字元,但 *、, 和 \ 除外。 這些都是保留字元。 如果您需要包含保留字元,您必須使用 \{Reserved Character} 來將其逸出。 索引鍵/值組的合併大小限制為 10,000 個字元。 此限制包括索引鍵中的所有字元、索引鍵的值及所有相關聯的選擇性屬性。 在此限制中,您可以有許多索引鍵階層層級。
設計關鍵命名空間
命名設定資料所使用的索引鍵一般有兩種方法:平面式或階層式。 從應用程式使用情況的角度來看,這些方法會很類似,但階層式命名可提供許多優點:
- 易於閱讀。 比起一長串的字元,階層式索引鍵名稱中的分隔符號可作為句子中的空格。
- 易於管理。 索引鍵名稱的階層表示設定資料的邏輯群組。
- 易於使用。 您可以更輕鬆地撰寫查詢,以透過模式來比對階層式結構中的索引鍵,並只擷取一部分的組態資料。
標籤索引鍵
應用程式組態中的索引鍵值可以選擇性地附加標籤屬性。 標籤會用於區分具有相同索引鍵的索引鍵值。 具有標籤 A 和 B 的索引鍵 app1,會在應用程式組態存放區中形成兩個個別的索引鍵。 預設情況下,鍵值沒有標籤。 若要明確參考沒有標籤的機碼值,請使用 \0 (編碼為 %00 的 URL)。
標籤可提供便利的方式來建立鍵的變體。 標籤的常見用法是為相同索引鍵指定多個環境:
Key = AppName:DbEndpoint & Label = Test
Key = AppName:DbEndpoint & Label = Staging
Key = AppName:DbEndpoint & Label = Production
版本鍵值
應用程式組態不會在索引鍵值受到修改時自動編排版本。 使用標籤作為創建多個鍵值版本的方法。 例如,您可以在標籤內輸入應用程式版本號碼或 Git 認可識別碼,以識別與特定軟體組建相關聯的索引鍵值。
查詢索引鍵值
透過索引鍵和標籤 (可以是 \0),即可識別每個唯一的索引鍵值。 您可以透過指定模式查詢應用程式設定儲存庫的鍵值。 應用程式組態存放區會傳回和模式相符的索引鍵值,包括其對應的值和屬性。
價值觀
指派給索引鍵的值也是 Unicode 字串。 您可以使用所有 Unicode 字元來作為值。 每個值都可以與選擇性的使用者定義內容類型建立關聯。 使用這個屬性來儲存有關值的資訊,例如編碼配置,可協助您的應用程式正確處理它。
儲存在應用程式設定存放區的設定資料(包括所有的鍵和值)在靜態和傳輸過程中皆會加密。 應用程式組態並不是 Azure Key Vault 的替代方案。 請勿在其中儲存應用程式祕密。