푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C# 세트 플래그 열거형 이해하기: 플래그 지정

Tim Corey
10분 39초

구성 관리는 C#으로 확장 가능하고 유지 관리가 용이한 애플리케이션을 구축하는 데 필수적인 요소입니다. 구성 설정을 처리하는 가장 효과적인 방법 중 하나는 옵션 패턴을 사용하는 것입니다. Tim Corey는 자신의 비디오 "C#의 옵션 패턴 10분 이내 배우기" 에서 이 패턴에 대한 간결하면서도 통찰력 있는 설명과 효율적인 구현 방법을 제공합니다. 이 글에서는 Tim의 설명과 영상 시연을 통해 옵션 패턴을 살펴보겠습니다.

소개

Tim은 구성 파일에서 정보를 가져와 의존성 주입(DI)에 삽입하는 강력하면서도 간단한 방법인 옵션 패턴을 소개하면서 시작합니다. 그는 이 패턴의 몇 가지 장점을 다음과 같이 강조합니다.

  • 런타임 값 변경을 관리할 수 있는 기능.
  • 내장 데이터 유효성 검사 지원 기능.
  • Blazor 애플리케이션을 포함한 다양한 C# 프로젝트 유형과의 호환성.

팀은 평소에는 심도 있는 기술 교육을 제공하지만, 이 영상은 옵션 패턴 구현을 위한 빠른 시작 가이드 로 제작되었다고 강조합니다.

프로젝트 설정

Tim은 먼저 Visual Studio를 열고 Blazor 웹 앱(서버 측 렌더링만 해당)을 실행합니다. 그는 시연 속도를 높이기 위해 이미 몇 가지 수정을 가했습니다. 핵심 설정은 다음과 같습니다.

  • CloudInfo 섹션에 세 개의 키-값 쌍을 포함하는 appsettings.json 파일을 생성합니다.
  • 이러한 구성 값을 매핑하는 CloudInfoOptions라는 기본 CLR 객체(POCO) 모델을 사용합니다.

구성 파일

appsettings.json 파일에는 다음 섹션이 포함되어 있습니다:

{
  "CloudInfo": {
    "Storage": "Azure Storage",
    "Website": "Azure Static Web Apps",
    "API": "Azure Web App"
  }
}

Tim은 appsettings.json을 사용하고 있지만 구성 값은 다음과 같은 출처로부터도 올 수 있다고 설명합니다:

  • appsettings.Development.json
  • secrets.json
  • 환경 변수

바인딩 구성을 옵션에 연결

이제 Tim은 구성 값을 CloudInfoOptions 클래스에 바인딩하고 이를 DI로 주입하는 방법을 설명합니다.

Program.cs 파일에 옵션 등록하기

Program.cs에서 Tim은 builder.Services 안에 다음 행을 추가합니다:

builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));
builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));

이것은 appsettings.json의 CloudInfo 섹션을 CloudInfoOptions 클래스에 바인딩합니다. 팀은 이 단계를 통해 의존성 주입에서 값을 사용할 수 있게 된다고 언급합니다.

Razor 컴포넌트에 옵션 삽입하기

Tim은 홈 페이지 구성 요소 (Index.razor)로 이동하여 구성 값을 동적으로 표시하도록 수정합니다.

그는 구성 요소에 IOptions 인터페이스를 주입합니다:

@inject IOptions<CloudInfoOptions> CloudInfoOptions

실제 값을 검색하기 위해 그는 이것들을 OnInitialized에 할당합니다:

protected override void OnInitialized()
{
    CloudInfo = CloudInfoOptions.Value;
}
protected override void OnInitialized()
{
    CloudInfo = CloudInfoOptions.Value;
}

Tim은 IOptions<t>이 구성 값의 싱글톤 인스턴스를 제공한다고 설명하며, 이는 애플리케이션의 수명 동안 일정하게 유지됩니다. 애플리케이션이 실행되면 구성 값이 페이지에 올바르게 표시됩니다.

다양한 옵션 인터페이스 살펴보기

Tim은 옵션 패턴을 사용하는 세 가지 다른 방법을 소개합니다.

1. 싱글턴 옵션

기본적으로 IOptions<t>싱글톤 인스턴스를 제공합니다. Tim은 앱이 실행 중인 동안 구성 파일을 업데이트하면 앱을 다시 시작하지 않는 한 변경 사항이 반영되지 않는다는 것을 보여줍니다.

2. 범위 지정 옵션 - IOptionsSnapshot<t> 사용

요청별 업데이트를 활성화하기 위해 Tim은 주입 방식을 다음과 같이 수정합니다.

@inject IOptionsSnapshot<CloudInfoOptions> CloudInfoOptions

이렇게 하면 모든 새로운 HTTP 요청에 최신 구성 값이 적용됩니다. Tim은 appsettings.json를 수정하고 페이지를 새로 고침하여 업데이트된 값이 즉시 표시되는 것을 보여주며 이를 테스트합니다.

그는 IOptionsSnapshot<t>앱을 다시 시작하지 않고도 변경 사항이 반영되어야 하는 시나리오에 유용하지만 라이브 모니터링이 필요하지는 않다고 설명합니다.

3. 변경 모니터링 - IOptionsMonitor<t> 사용

마지막으로 Tim은 실시간 변경 감지를 가능하게 하는 IOptionsMonitor<t>를 소개합니다. 그는 주사를 다음과 같이 업데이트합니다:

@inject IOptionsMonitor<CloudInfoOptions> CloudInfoOptions

요청당 업데이트되는 IOptionsSnapshot와 달리, IOptionsMonitor<t>구성 값이 변경될 때 이벤트를 트리거할 수 있습니다. 이는 구성 변경에 동적으로 대응해야 할 때 특히 유용합니다.

Tim은 IOptionsMonitor<t>싱글톤으로 지원되지만 기본 구성 파일이 변경될 때 값을 동적으로 새로 고칠 수 있다고 설명합니다.

결론

팀은 영상 말미에 세 가지 접근 방식의 주요 차이점을 요약합니다.

인터페이스일생변경 사항 업데이트
IOptions<t>하나씩 일어나는 것아니요
IOptionsSnapshot<t>범위요청에 따라
IOptionsMonitor<t>하나씩 일어나는 것

그는 옵션 패턴이 구성 관리를 단순화하는 동시에 이러한 다양한 변형을 이해하는 것이 프로젝트 요구 사항에 따라 올바른 접근 방식을 선택하는 데 도움이 된다고 강조합니다.

Tim의 접근 방식을 따르면 개발자는 애플리케이션 설정을 효율적으로 관리하고 , 원활한 의존성 주입을 보장하며, 런타임 구성 변경을 효과적으로 처리할 수 있습니다. 더 잘 이해하시려면 전체 영상을 시청해 주시고, 그의 채널을 방문하시면 C#에 대한 더 유익한 영상들을 보실 수 있습니다.

Hero Worlddot related to C# 세트 플래그 열거형 이해하기: 플래그 지정
Hero Affiliate related to C# 세트 플래그 열거형 이해하기: 플래그 지정

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해