App Configuration의 데이터는 .NET Framework 앱에서 앱 설정으로 로드할 수 있습니다. 자세한 내용은 빠른 시작을 참조하세요. 그러나 .NET Framework에서 설계한 대로 앱 설정은 앱을 다시 시작할 때만 새로 고칠 수 있습니다. App Configuration .NET 공급자는 .NET Standard 라이브러리입니다. 앱을 다시 시작하지 않고 동적으로 구성을 캐싱 및 새로 고치도록 지원합니다. 이 자습서에서는 .NET Framework 콘솔 앱에서 동적 구성 업데이트를 구현하는 방법을 보여 줍니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- App Configuration 저장소의 변경에 따라 .NET Framework 앱의 해당 구성을 업데이트하도록 설정합니다.
- 애플리케이션에 최신 구성을 삽입합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정 만들기
- 애플리케이션 구성 저장소. 저장소를 만듭니다.
- Visual Studio
- .NET Framework 4.7.2 이상
키-값 추가
App Configuration 저장소에 다음 키-값을 추가하고 레이블 및 콘텐츠 형식을 기본값으로 둡니다. Azure Portal 또는 CLI를 사용하여 저장소에 키-값을 추가하는 방법에 대한 자세한 내용은 키-값 만들기로 이동합니다.
키 | 값 |
---|---|
TestApp:설정:메시지 | Azure App Configuration의 데이터 |
.NET Framework 콘솔 앱 만들기
Visual Studio를 시작하고 새 프로젝트 만들기를 선택합니다.
새 프로젝트 만들기에서 콘솔 프로젝트 형식을 필터링하고 프로젝트 템플릿 목록에서 C#이 있는 콘솔 앱(.NET Framework)을 선택합니다. 다음을 누릅니다.
새 프로젝트 구성에서 프로젝트 이름을 입력합니다. 프레임워크 아래에서 .NET Framework 4.7.2 이상을 선택합니다. 만들기를 누릅니다.
App Configuration에서 데이터 다시 로드
마우스 오른쪽 단추로 프로젝트를 클릭하고, NuGet 패키지 관리를 선택합니다. 찾아보기 탭에서 다음 NuGet 패키지의 최신 버전을 검색한 후 프로젝트에 추가합니다.
- Microsoft.Extensions.Configuration.AzureAppConfiguration
- Azure.아이덴티티
Program.cs를 열고, 다음 네임스페이스를 추가합니다.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration; using Azure.Identity;
구성 관련 개체를 저장하는 두 개의 변수를 추가합니다.
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
지정된 새로 고침 옵션을 사용하여 App Configuration에 연결하도록
Main
메서드를 업데이트합니다. Microsoft Entra ID(권장) 또는 연결 문자열을 사용하여 App Configuration에 연결합니다.DefaultAzureCredential
을(를) 사용하여 App Configuration 저장소에 인증합니다. 지침에 따라 자격 증명에 App Configuration 데이터 판독기 역할을 할당합니다. 애플리케이션을 실행하기 전에 권한이 전파될 수 있는 충분한 시간을 허용해야 합니다.// Existing code in Program.cs // ... ... static void Main(string[] args) { var builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { string endpoint = Environment.GetEnvironmentVariable("Endpoint"); options.Connect(new Uri(endpoint), new DefaultAzureCredential()) // Load all keys that start with `TestApp:` and have no label. .Select("TestApp:*") // Reload configuration if any selected key-values have changed. .ConfigureRefresh(refresh => { refresh.RegisterAll() .SetRefreshInterval(TimeSpan.FromSeconds(10)); }); _refresher = options.GetRefresher(); }); _configuration = builder.Build(); PrintMessage().Wait(); } // The rest of existing code in Program.cs // ... ...
ConfigureRefresh
메서드 내에서 선택한 키 값(RegisterAll
으로 시작하고 레이블이 없는 키 값)의 변경 내용을 감지할 때마다 전체 구성을 다시 로드하도록 App Configuration 공급자에게 지시하는 메서드를 호출 합니다. 구성 변경 내용을 모니터링하는 방법에 대한 자세한 내용은 구성 새로 고침에 대한 모범 사례를 참조하세요.SetRefreshInterval
메서드는 구성 변경 여부를 확인하기 위해 App Configuration에 새 요청을 하기 전에 경과해야 하는 최소 시간을 지정합니다. 이 예제에서는 기본 만료 시간인 30초를 재정의하여 데모용으로 대신 10초를 지정합니다.App Configuration에서 구성 데이터의 새로 고침을 트리거하는
PrintMessage()
라는 메서드를 추가합니다.private static async Task PrintMessage() { Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); // Wait for the user to press Enter Console.ReadLine(); await _refresher.TryRefreshAsync(); Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); }
ConfigureRefresh
메서드만 호출하면 구성이 자동으로 새로 고쳐지지 않습니다. 인터페이스TryRefreshAsync
에서IConfigurationRefresher
메서드를 호출하여 새로 고침을 트리거합니다. 이 디자인은 애플리케이션이 유휴 상태인 경우에도 App Configuration으로 전송되는 요청을 방지하기 위한 것입니다. 애플리케이션이 활성 상태인 것으로 간주되는TryRefreshAsync
호출을 포함할 수 있습니다. 예를 들어 들어오는 메시지, 주문 또는 복잡한 작업의 반복을 처리할 때 이 작업을 수행할 수 있습니다. 애플리케이션이 항상 활성 상태인 경우 타이머에 있을 수도 있습니다. 이 예제에서는 Enter 키를 누를 때TryRefreshAsync
를 호출합니다. 어떤 이유로TryRefreshAsync
호출이 실패하더라도 애플리케이션은 캐시된 구성을 계속 사용합니다. 구성된 새로 고침 간격이 통과되고TryRefreshAsync
애플리케이션 활동에 의해 호출이 다시 트리거되면 또 다른 시도가 수행됩니다.TryRefreshAsync
를 호출하는 것은 구성된 새로 고침 간격이 지나기 전에 작동하지 않으므로 자주 호출하더라도 성능에 미치는 영향은 최소화됩니다.
로컬로 앱 빌드 및 실행
환경 변수를 설정합니다.
Azure Portal의 저장소
Endpoint
아래에 있는 App Configuration 저장소의 엔드포인트로 명명된 환경 변수를 설정합니다.Windows 명령 프롬프트를 사용하는 경우 다음 명령을 실행하고, 명령 프롬프트를 다시 시작하여 변경 내용을 적용합니다.
setx Endpoint "<endpoint-of-your-app-configuration-store>"
PowerShell을 사용하는 경우 다음 명령을 실행합니다.
$Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
macOS 또는 Linux를 사용하는 경우 다음 명령을 실행합니다.
export Endpoint='<endpoint-of-your-app-configuration-store>'
Visual Studio를 다시 시작하여 변경 내용을 적용합니다.
Ctrl+F5를 눌러 콘솔 앱을 빌드하고 실행합니다.
Azure Portal에서 App Configuration 저장소의 구성 탐색기로 이동하여 다음 키의 값을 업데이트합니다.
키 값 TestApp:설정:메시지 Azure App Configuration의 데이터 - 업데이트됨 실행 중인 애플리케이션으로 돌아가서 Enter 키를 눌러 새로 고침을 트리거하고 명령 프롬프트 또는 PowerShell 창에서 업데이트된 값을 출력합니다.
참고
새로 고침 작업에 대한 구성을 지정하는 동안 메서드를 사용하여
SetRefreshInterval
새로 고침 간격을 10초로 설정했으므로 해당 설정의 마지막 새로 고침 이후 최소 10초가 경과한 경우에만 구성 설정 값이 업데이트됩니다.
리소스 정리
이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.
중요
리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.
- Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
- 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
- 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
- 리소스 그룹 삭제를 선택합니다.
- 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.
잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.
다음 단계
이 자습서에서는 .NET Framework 앱을 사용하도록 설정하여 App Configuration에서 구성 설정을 동적으로 새로 고칩니다. ASP.NET 웹 애플리케이션(.NET Framework)에서 동적 구성을 사용하도록 설정하는 방법을 알아보려면 다음 자습서를 계속 진행하세요.
Azure 관리 ID를 사용하여 App Configuration에 대한 액세스를 간소화하는 방법을 알아보려면 다음 자습서로 계속 진행하세요.