응용 프로그램 설정 개요
업데이트: 2007년 11월
이 항목에서는 응용 프로그램과 사용자를 대신하여 설정 데이터를 만들어 저장하는 방법에 대해 설명합니다.
Windows Forms의 응용 프로그램 설정 기능을 사용하면 클라이언트 컴퓨터에서 사용자 지정 응용 프로그램과 사용자 기본 설정을 쉽게 만들고 저장하고 유지 관리할 수 있습니다. Windows Forms 응용 프로그램 설정을 사용하면 데이터베이스 연결 문자열과 같은 응용 프로그램 데이터뿐 아니라 사용자 응용 프로그램 기본 설정과 같은 사용자 특정 데이터도 저장할 수 있습니다. Visual Studio 또는 사용자 지정 관리 코드를 사용하면 새 설정을 만들어 디스크에 쓰거나 디스크에서 읽어 오고, 폼의 속성에 바인딩하고, 로드하거나 저장하기 전에 설정 데이터의 유효성을 검사할 수 있습니다.
응용 프로그램 설정을 사용하면 개발자가 아주 약간의 사용자 지정 코드를 사용하여 응용 프로그램에 상태를 저장할 수 있습니다. 이러한 응용 프로그램 설정은 이전 버전의 .NET Framework의 동적 속성을 대신합니다. 응용 프로그램 설정에는 런타임에 바인딩되고 사용자 지정 프로그래밍이 더 많이 필요한 읽기 전용의 동적 속성에 대해 향상된 여러 기능이 포함되어 있습니다. 동적 클래스는 .NET Framework 버전 2.0에서 계속 유지되고 있지만 응용 프로그램 설정 클래스를 래핑하는 셸 클래스일 뿐입니다.
응용 프로그램 설정이란?
Windows Forms 응용 프로그램에는 응용 프로그램 실행에 중요한 역할을 하는 데이터가 필요하지만 이런 데이터를 응용 프로그램 코드에 직접 포함하고 싶지 않은 경우가 많습니다. 응용 프로그램에서 웹 서비스나 데이터베이스 서버를 사용하는 경우, 나중에 해당 파일을 다시 컴파일하지 않고도 변경할 수 있도록 이 정보를 별도의 파일에 저장해야 할 수도 있습니다. 마찬가지로 응용 프로그램에서 현재 사용자에 따라 다른 데이터를 저장해야 할 수 있습니다. 예를 들어, 대부분의 응용 프로그램에는 응용 프로그램의 모양과 동작을 사용자 지정하는 사용자 기본 설정이 있습니다.
응용 프로그램 설정을 사용하면 클라이언트 컴퓨터에서 응용 프로그램 범위 설정과 사용자 범위 설정 모두를 쉽게 저장할 수 있습니다. Visual Studio 또는 코드 편집기에서 지정된 속성의 이름, 데이터 형식 및 범위(응용 프로그램 또는 사용자)를 지정하여 해당 속성에 대한 설정을 정의할 수 있습니다. 관련 설정을 그룹별로 이름을 지정하여 사용하기 쉽고 알아보기 쉽게 할 수도 있습니다. 이렇게 정의된 설정은 영구적으로 유지되고 런타임에 자동으로 메모리에 읽어들여집니다. 플러그형 아키텍처를 사용하여 지속성 메커니즘을 변경할 수 있지만 기본적으로는 로컬 파일 시스템이 사용됩니다.
응용 프로그램 범위 설정인지 사용자 범위 설정인지에 따라 데이터를 여러 구성 파일(.config)에 대해 XML로 유지함으로써 응용 프로그램 설정이 작동합니다. 대부분의 경우 응용 프로그램 범위 설정은 읽기 전용인 프로그램 정보이기 때문에 일반적으로 덮어쓸 필요가 없습니다. 반대로 사용자 범위 설정은 응용 프로그램이 부분 신뢰 환경에서 실행되는 경우에도 런타임에 안전하게 읽고 쓸 수 있습니다. 부분 신뢰에 대한 자세한 내용은 Windows Forms의 보안 개요를 참조하십시오.
설정은 구성 파일에 XML 조각으로 저장됩니다. 응용 프로그램 범위 설정은 <application.Settings> 요소로 나타내며 일반적으로 app.exe.config에 배치됩니다. 여기서 app는 주 실행 파일의 이름입니다. 사용자 범위 설정은 <userSettings> 요소로 나타내며 user.config에 배치됩니다. 여기서 user는 응용 프로그램을 현재 실행하고 있는 사람의 사용자 이름입니다. 응용 프로그램과 함께 app.exe.config 파일을 배포해야 하며, 응용 프로그램에서 해당 사용자에 대한 설정을 처음 저장할 때 필요에 따라 설정 아키텍처에 의해 user.config 파일이 만들어집니다. app.exe.config 안에 <userSettings> 블록을 정의하여 사용자 범위 설정에 대한 기본값을 지정할 수도 있습니다.
사용자 지정 컨트롤은 SaveSettings 메서드를 노출하는 IPersistComponentSettings 인터페이스를 구현하여 고유 설정을 저장할 수도 있습니다. Windows Forms ToolStrip 컨트롤은 이 인터페이스를 구현하여 응용 프로그램 세션 간에 도구 모음 항목 및 도구 모음의 위치를 저장합니다. 사용자 지정 컨트롤 및 응용 프로그램 설정에 대한 자세한 내용은 사용자 지정 컨트롤에 대한 응용 프로그램 설정을 참조하십시오.
응용 프로그램 설정의 제한 사항
.NET Framework를 호스팅하는 관리되지 않는 응용 프로그램에서는 응용 프로그램 설정을 사용할 수 없습니다. Visual Studio 추가 기능, Microsoft Office용 C++, Internet Explorer에서 호스팅하는 컨트롤 또는 Microsoft Outlook 추가 기능 및 프로젝트와 같은 환경에서는 응용 프로그램 설정이 작동하지 않습니다.
현재 Windows Forms의 일부 속성에는 바인딩할 수 없습니다. 이러한 속성 중 가장 주목할 만한 것은 ClientSize 속성입니다. 이 속성에 바인딩하면 런타임에 예기치 않은 동작이 발생합니다. 일반적으로 이러한 문제는 해당 설정을 프로그래밍 방식으로 저장하고 로드하여 해결할 수 있습니다.
응용 프로그램 설정에는 정보를 자동으로 암호화하기 위한 기본 제공 기능이 없습니다. 따라서 데이터베이스 암호와 같은 보안 관련 정보를 일반 텍스트로 저장하면 안 됩니다. 이와 같이 중요한 정보를 저장하려면 응용 프로그램 개발자 본인이 직접 안전성을 확인해야 합니다. 연결 문자열을 저장하려면 Windows 통합 보안을 사용하고 하드 코드된 암호를 URL에 사용하지 않는 것이 좋습니다. 자세한 내용은 코드 액세스 보안 및 ADO.NET을 참조하십시오.
응용 프로그램 설정 시작
Visual Studio를 사용하는 경우 속성 창에서 (ApplicationSettings) 속성을 사용하여 Windows Forms 디자이너의 설정을 정의할 수 있습니다. 이런 식으로 설정을 정의하면 Visual Studio에서 각 설정을 클래스 속성과 연결하는 관리되는 사용자 지정 래퍼 클래스가 자동으로 만들어집니다. 또한 폼을 표시하면 자동으로 컨트롤 설정이 복원되고 폼을 닫으면 자동으로 컨트롤 설정이 저장되도록 폼이나 컨트롤의 속성에 설정이 바인딩됩니다. 자세한 내용은 방법: 디자이너를 사용하여 응용 프로그램 설정 작성을 참조하십시오.
사용자 지정 응용 프로그램 설정 래퍼 클래스를 정의하여 설정을 세부적으로 제어할 수 있습니다. ApplicationSettingsBase에서 클래스를 파생시키고 각 설정에 해당하는 속성을 추가하고 이 속성에 특수한 특성을 적용하면 됩니다. 래퍼 클래스를 만드는 방법에 대한 자세한 내용은 응용 프로그램 설정 아키텍처를 참조하십시오.
Binding 클래스를 사용하여 설정을 폼이나 컨트롤의 속성에 프로그래밍 방식으로 바인딩할 수도 있습니다. 래퍼 클래스를 만드는 방법에 대한 자세한 내용은 방법: 디자이너를 사용하여 응용 프로그램 설정 작성을 참조하십시오.