Skip to content

Commit 4dfb11f

Browse files
committed
Review feedback
1 parent 7e55273 commit 4dfb11f

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

articles/azure-app-configuration/howto-best-practices.md

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ App Configuration treats each key stored within it as an independent entity. It
3434

3535
Consider an example where you have a configuration setting named *TestApp:MySetting*, whose value varies depending on the environment. You can create two keys with the same name, but assign different labels—one with no label (default) and another labeled *Development*. The unlabeled key holds the default value, while the labeled key contains the environment-specific value.
3636

37-
In your application code, you first load the default (unlabeled) key-values, then load the environment-specific key-values using the *Development* label. When loading the second set, any matching keys overwrite the previously loaded values. This approach allows you to "stack" multiple configuration sets, with the last loaded value taking precedence. [App Configuration providers](./configuration-provider-overview.md) across supported languages and platforms support this stacking capability.
37+
In your application code, you first load the default (unlabeled) key-values, then load the environment-specific key-values using the *Development* label. When loading the second set, any matching keys overwrite the previously loaded values. This approach allows you to "stack" multiple configuration sets, with the last loaded value taking precedence. [App Configuration providers](./configuration-provider-overview.md) across supported languages and platforms offer this stacking capability.
3838

3939
The following example demonstrates how to implement key-value composition in a .NET application:
4040

4141
```csharp
4242
configBuilder.AddAzureAppConfiguration(options => {
43-
options.Connect("<your-app-config-endpoint>", new DefaultAzureCredential())
43+
options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
4444
// Load all keys that start with `TestApp:` and compose with two different labels
4545
.Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
4646
.Select(keyFilter: "TestApp:*", labelFilter: "Development");
@@ -55,14 +55,14 @@ Azure App Configuration supports dynamic configuration refresh without requiring
5555

5656
#### Monitoring all selected keys
5757

58-
In this approach, the provider monitors all selected keys. If a change is detected in any of the selected key-values, the entire configuration is reloaded. This approach ensures immediate updates without needing a dedicated sentinel key.
58+
In this approach, the provider monitors all selected keys. If a change is detected in any of the selected key-values, the entire configuration is reloaded. This approach ensures immediate updates without requiring additional key modifications.
5959

6060
Here's an example using .NET:
6161

6262
```csharp
6363
configBuilder.AddAzureAppConfiguration(options =>
6464
{
65-
options.Connect("<your-app-config-endpoint>", new DefaultAzureCredential())
65+
options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
6666
// Load all keys that start with `TestApp:` and have no label
6767
.Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
6868
.ConfigureRefresh(refreshOptions =>
@@ -82,26 +82,20 @@ Here's an example using .NET:
8282
```csharp
8383
configBuilder.AddAzureAppConfiguration(options =>
8484
{
85-
options.Connect("<your-app-config-endpoint>", new DefaultAzureCredential())
85+
options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
8686
// Load all keys that start with `TestApp:` and have no label
8787
.Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
8888
.ConfigureRefresh(refreshOptions =>
8989
{
90-
// Register the sentinel key; refresh all values if this key changes.
90+
// Trigger full configuration refresh only if the `SentinelKey` changes.
9191
refreshOptions.Register("SentinelKey", refreshAll: true);
9292
});
9393
});
9494
```
9595

96-
Both approaches are supported by App Configuration providers across supported languages and platforms.
96+
Both approaches are available through App Configuration providers across supported languages and platforms.
9797

98-
Regardless of the approach you choose, consider the following best practices to minimize the risk of configuration inconsistencies:
99-
100-
- Design your application to tolerate transient configuration inconsistencies.
101-
- Warm up your application before serving requests.
102-
- Include default configuration within your application as a fallback when validation fails.
103-
- Choose a configuration update strategy that minimizes impact, such as updating during low-traffic periods.
104-
- Use [configuration snapshots](./howto-create-snapshots.md) for guaranteed configuration integrity.
98+
To reduce the risk of configuration inconsistencies, use [configuration snapshots](./howto-create-snapshots.md) to ensure configuration integrity.
10599

106100
## References to external data
107101

0 commit comments

Comments
 (0)