Home Full Site
.NET Configuration 파일

프로그램의 옵션들을 담아 두는 파일로서 아주 예전에는 .INI 파일을 사용하였었으며, 이후 윈도우즈가 관리하는 레지스트리 데이타베이스에 시스템 및 응용프로그램의 옵션들을 저장하였다. 레지스트리는 프로그램의 옵션을 저장하는 훌륭한 저장 장소이나, 모든 응용프로그램이 항상 레지스트리에 데이타를 쓰는 권한을 갖는 것은 아니였기 때문에 Permission 제약점이 있었다. .NET Framework에서는 프로그램의 행위를 결정짓는 옵션들을 저장하기 위해 .Config 파일을 사용한다.
데스크탑 응용프로그램 .EXE 에 대해서 Configuration 파일(구성파일)은 .EXE.Config이 되는데, 예를 들어, TEST.EXE의 구성 파일은 TEST.EXE.Config가 된다. Visual Studio에서 콘솔, 윈폼, 혹은 WPF 등의 데스크탑 프로젝트를 생성한 후 App.config 파일을 추가하고(아래 그림처럼 Application Configuration File 추가) 여기에 필요한 옵션들을 설정한 후 빌드하면 .EXE 파일에 대한 .EXE.Config 파일이 자동으로 생성된다.
App.Config 파일이 .DLL 파일에 추가되는 경우가 있는데, 이는 .DLL.Config 파일을 생성한다. 이 DLL 구성파일은 해당 DLL을 테스팅(Unit Test)할 때 많이 사용된다.
ASP.NET과 같은 웹 프로그램에서는 Web.config를 사용하는데, 이 web.config는 각 가상디렉토리마다 존재할 수 있으며, 이를 통해 하위 디렉토리에서 상위 옵션들을 Override할 수 있다. 예를 들어, http://localhost/Test/Inv/web.config 의 web.config는 시스템 전체에 영향을 미치는 machine.config, 웹호스트 루트의 localhost/web.config, TEST 디렉토리의 web.config, 그리고 마지막으로 Inv의 web.config 등이 존재할 수 있으며, 하위 디렉토리의 web.config가 우선순위를 갖는다. Visual Studio에서 ASP.NET이나 WCF등의 웹 프로젝트를 생성하면 web.config이 생성되는데, 여기에 필요한 프로그램 옵션을 설정할 수 있다.
참고로 이러한 app.config나 web.config는 프로그램 전반에 영향을 미치는 옵션들을 설정하는 것이고, 해당 프로그램 사용자들이 설정하는 사용자 옵션들은 별도의 XML 파일이나 DB 등에 저장하는 것이 일반적이다.






App Configuration 파일

App.config나 web.config 파일 모두 XML로 작성되어 지는데, 각기 다른 XML Schema를 사용한다. App.config 구성파일의 경우, 프로그램의 간단한 옵션들을 주로 appSettings 라는 섹션에 키와 값을 쌍으로 지정하게 된다. 그리고 데이타베이스와 연결하는 Connection String 정보는 특별히 ConnecitonStrings 섹션에 지정하면 된다. 아래 예제는 app.config에 SeucirtyLevel과 Locale 옵션을 appSettings 섹션에 그리고 TestDBConnection을 connectionStrings 섹션에 지정한 예이다. 이러한 기본 섹션 이외에 개발자는 Custom Section을 configSections에 지정할 수 있다.

예제

/* App.config 구성 파일 예 */

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>    
  </configSections>
  <appSettings>
    <add key="SeucirtyLevel" value="3" />
    <add key="Locale" value="en" />
  </appSettings>
  <connectionStrings>
    <add name="TestDBConnectionString"
        connectionString="Data Source=.;Initial Catalog=Test;Integrated Security=True"
        providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>




C#에서 구성 파일 사용

C#에서 App.config 파일을 읽기 위해서는 System.Configuration 네임스페이스에 있는 ConfigurationManager 클래스를 이용한다 (초기 버젼에서는 System.Configuration.ConfigurationSettings 사용했었으나, 이는 더 이상 사용하지 않는다). 또한, C#에서 web.config 파일을 사용하기 위해서는 동일 네임스페이스에 있는 WebConfigurationManager 클래스를 사용한다. ConfigurationManager 클래스에는 AppSettings와 ConnectionStrings과 같은 인덱서(Indexer)가 제공되므로 키값에 상응하는 값을 쉽게 얻어 올 수 있다. 아래 예제는 ConfigurationManager를 사용하여 위 예제의 구성파일에 있는 값들을 읽어오는 예를 보여준다.

예제

using System;
using System.Configuration;
using System.Diagnostics;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        private int secLevel = 0;
        private string dbConn;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // AppSettings에서 SecurityLevel 읽기
            string level = ConfigurationManager.AppSettings["SecurityLevel"];
            int.TryParse(level, out secLevel);

            // ConnectionStrings에서 TestDBConnection 읽기
            dbConn = ConfigurationManager.ConnectionStrings["TestDBConnection"].ConnectionString;
        }
    }
}



© csharpstudy.com