본문 바로가기

Programming/.Net

ConfigurationSection을 이용한 App configuration

App.config의 AppSettings를 통하여 손쉽게 configuration을 할 수 있습니다.

그렇지만 이는 일차원적인 KeyValuePair Collection 형태이다 보니 내용이 많아지면 혼돈이 찾아올 수 있습니다.

단적으로 복잡한 Hierarchy를 고려해서 key를 정의하다보면...


Xml을 특성을 살려 계층적인 형태로 config를 작성할 수 있다면.

<mailSettings> 설정에서 보듯이 훨씬 직관적이고 configuration을 이해하고 수정할 수 있을 겁니다.


이를 위한 Westwind.Utilities.Configuration이라는 NuGet이 있으므로 이를 활용하면 훨씬 정돈된 setting configuration을 가져갈 수 있을 것 같습니다.

최신버전 (2014-10-13)


NuGet의 사용법은 intro page에서 충분히 설명할 것이고, 그 용법은 충분히 손쉬울 것이므로

조금 도전 정신을 가지고 그 base를 찾아 보기로 했습니다.


System.Configuration 어셈블리에서 제공하는 class 들을 활용하니 손쉽게 구현할 수 있었습니다.

ConfigurationSection, ConfigurationElement class를 이용하면 됩니다.


쉽게 ConfigurationSection은 Parent, ConfigurationElement 은 자식 요소라고 보면 될 것 같습니다.

각각의 class를 상속한 class를 만들고,

config file을 통해서 획득할 값을 ConfigurationPropertyAttribute를 통해서 설정하면 됩니다.

추가적으로 ValidationAttribute를 이용해 유효성 검사를 할 수 있습니다.

코드로 보는 게 빠를 듯 합니다. :)

.Net에서 config 파일의 attribute는 humel표기법을 따르므로 노출할 property명은 소문자로 시작합니다.

DefaultValue를 통해서 기본값을 설정하거나 Validator를 이용하여 최소 최대 값등을 설정할 수 있습니다.


section의 type 부분에 class와 project명을 명시해줍니다.

appSettings로 선언한 것을 직접 비교하지는 않았지만 훨씬 직관적인 것을 알 수 있습니다.


위의 구현만으로 Intellisense의 도움을 받을 수는 없습니다.

이는 VisualStudio의 config 파일을 손대는 등의 방법이 필요한 것으로 대략 파악했습니다.


References

http://weblog.west-wind.com/posts/2012/Dec/28/Building-a-better-NET-Application-Configuration-Class-revisited

http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.140).aspx

http://stackoverflow.com/questions/16285169/an-error-occurred-creating-the-configuration-section-handler

http://msdn.microsoft.com/ko-kr/library/windows/desktop/ackhksh7(v=vs.85).aspx




'Programming > .Net' 카테고리의 다른 글

(Workaround) return iterator with 'out' or 'ref' parameters  (0) 2015.02.16
Select object within min or max property value.  (0) 2015.01.20
문서변환  (0) 2014.11.05
Oracle Stored Procedure for .Net  (0) 2014.10.23
[NuGet] ImageResizer  (0) 2014.10.14