Skip to content

Fox Configruation Overview

Fox Configuration은 NeoDEEX와 어플리케이션에 대해 구성 설정 인프라를 제공합니다.

NeoDEEX 4.x 버전까지는 .Net Framework를 기반으로 하였기 때문에 .NET Framework의 XML 기반 구성 설정 API를 사용하여 구성 설정을 제공하였습니다. NeoDEEX 5.x 버전부터는 .Net Core를 기반으로 하기 때문에 JSON 파일로부터 구성 설정을 읽도록 기능을 제공합니다.

What's New & Features

  • 구성 설정 변경 감지

    Fox Configuration은 구성 설정 파일의 변경을 감지하여 구성 설정을 다시 읽어 들입니다. 예를 들어, 구성 설정 파일의 DB 연결 문자열을 변경하고 저장하면 FoxDbAccess 객체는 변경된 연결 문자열을 다시 읽어 사용합니다.

    Note

    bizservice:modules 와 같은 일부 구성 설정 섹션은 변경된 구성 설정을 다시 읽어 들이더라도 효과가 없습니다.

  • 기본 구성 설정 파일 (Default Configuration File)

    • NeoDEEX 5.x 버전부터 app.config 혹은 web.config 파일과 무관하게 별도의 구성 설정 JSON 파일을 사용합니다. 명시적인 설정이 없는 경우, Fox Configuration은 어플리케이션의 베이스 디렉터리에서 neodeex.config.json 파일을 읽어 구성 설정을 초기화 합니다.

    • FoxConfigurationManager.ConfigurationFileName 속성에 구성 설정 파일을 절대 경로 혹은 상대 경로로 명시할 수 있습니다.

  • 베이스 구성 설정 (Base configuration file)

    • 구성 설정 파일은 기본으로 사용할 베이스 구성 설정 파일을 명시할 수 있습니다. 베이스 구성 설정 파일이 지정되면 두 구성 설정은 병합됩니다. 다음 구성 설정에서 maxConnection 속성은 base.neodeex.config.json 구성 설정의 값(존재하는 경우)을 오버라이드 합니다.

      1
      2
      3
      4
      5
      6
      7
      {
          "$baseConfig": "..\\config\\base.neodeex.config.json",
          "appSettings":
          {
              "maxConnection": 20
          }
      }
      
    • 여러 어플리케이션이 동일한 구성 설정하에 작동하는 환경에서 특정 어플리케이션 만 약간의 변경이 필요한 경우 유용하게 사용할 수 있는 기능힙니다.

    Note

    베이스 구성 설정 파일은 구성 설정 변경 감지 대상이 아닙니다. 베이스 구성 설정 파일이 변경되더라도 구성 설정을 다시 읽어들이지 않습니다.

  • JSON 기반 AppSettings

    • FoxConfigurationManager 클래스의 AppSettings 속성은 JSON 경로를 key로 사용하여 복잡한 구성 설정을 손쉽게 읽을 수 있습니다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      {
        "appSetting": {
          "simple": "simpleData",
          "complex": {
              "prop1": true,
              "prop2": "PropValue"
          }
        }
      }
      
      1
      2
      3
      var simpleValue = FoxConfigurationManager.AppSettings["simple"];
      var complexValue1 = FoxConfigurationManager.AppSettings["complex:prop1"];
      var complexValue2 = FoxConfigurationManager.AppSettings["complex:prop2"];
      
    • FoxConfigurationAppSettings 클래스가 제공하는 GetValue<T> 메서드와 Get<T> 메서드를 사용하여 appSettings 설정을 특정 타입에 매핑할 수 있습니다.

      1
      2
      3
      4
      5
      6
      7
      8
      class ComplexSetting
      {
          public bool? Prop1 { get; set; }
          public string? Prop2 { get; set; }
      }
      
      var boolValue = FoxConfigurationManager.AppSettings.GetValue<bool>("complex:prop1");
      var mySettings = FoxConfigurationManager.AppSettings.Get<ComplexSetting>("complex");
      

Basic usage

Fox Configuration을 사용하기 위해서는 neodeex.config.json 파일을 작성하고 어플리케이션 디렉터리에 복사하기만 하면 됩니다. Fox Configuration은 어플리케이션이 구성 설정을 읽으려는 최초의 시도 시점에서 자동으로 구성 설정 파일을 읽습니다.

Note

Visual Studio를 사용하는 경우, 프로젝트에 neodeex.config.json 파일을 추가하고 속성 창에서 Copy o Output Directory 속성 값을 Copy if newer로 설정합니다. 만약 CLI 인터페이스를 사용하는 경우, .csproj 파일에서 다음 속성을 추가합니다.

1
2
3
4
5
  <ItemGroup>
    <None Update="neodeex.config.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

어플리케이션 설정을 읽기 위해서는 FoxConfigurationManager 클래스의 AppSettings 속성에 접근하거나, 어플리케이션 자체 구성 설정 섹션을 읽고 사용하기 위해 FoxConfigurationSection 클래스 혹은 FoxConfiguration<T> 클래스를 사용할 수도 있습니다. 상세한 내용 및 예제는 다음 문서를 참고 하십시요.

Important

Fox Configuration은 Fox Data Access 나 Fox Biz/Data Service와 같은 NeoDEEX의 다른 기능들에 의해 사용됩니다. 이 문서에서는 NeoDEEX의 다른 기능들의 구성 설정을 다루지 않습니다. 해당 기능의 문서에서 관련된 구성 설정이 설명될 것입니다.

Samples