RPNetworks.Configuration - 02

현재 주소 복사
트랙백 주소 복사
방실이님의 글 (12/4/2010 2:29:38 PM) Viewing : 1715

이전글 에서 밝혔듯이 projectInfo 부터 살펴 보도록 하겠습니다.

이 클래스는 한 가지 이유 때문에 생성되었습니다.

이 Configuration 이라는 어셈블리를 생성한 이유는 여러 프로젝트에서 공용으로 쓰기 위함이었습니다.

대부분 db연결이라든지 monitoring 관련해서는 공통되지만 분명 해당 프로젝트에 따라 새로 추가되어야 하는 섹션들은 존재 할 것입니다.

이전 글의 예에서 NetworkSection 처럼 말이죠.

해당 섹션 클래스는 새로운 프로젝트를 생성하여 그 안에 생성 할 수 있습니다.

예를 들면 프로젝트 이름이 MyProject 라면 MyProject.Configruation 이라는 어셈블리를 생성할 수 있으며 이 어셈블리는 RPNetworks.Configration을 참조 하여 상속 받으면 됩니다.

그런데 문제는 이렇게 생성된 Section의 특정 값에 접근을 하기 위해서는 ConfigurationHelper 라는 클래스를 통해서만이 가능합니다.

NetworkSection의 경우라면 ConfigrationHelper.Network 처럼 접근을 해야 한다는 얘기죠.

그러면 섹션이 새로 생길때마다 ConfigurationHelper 클래스에 Property를 생성해주어야 한다는 의미가 되겠습니다.

이는 재사용성에 큰 문제가 발생하게 됩니다.

그래서 고안해 낸게 바로 이번 글에서 살펴보게 될 ProjectInfoSection 입니다.

config의 설정을 보게 되면 다음과 같습니다.

<projectInfo sectionGroupName="myProject" version="1.0.0.0" lastUpdate="2010년 07월 11일 13시 25분 18초"/>

여기서 version과 lastUpdate는 별 의미는 없습니다. 배포시에 수정하고 런타임시에 프로그램(웹이든 윈폼이든)에서 해당 값을 보여 줄수 있습니다. 필요하다면 말이죠.

중요한 것은 sectionGroupName 이 되겠습니다.

여기서 설정한 이름은 실제로 config에서 <rpnetworks> 아래 섹션그룹으로 등록됩니다.

이전 글 예시에서 확인해 볼 수 있습니다.

이렇게 생성해 놓으면 MyProject.Configuration에 위치하는 NetworkSection에 다음과 같이 접근이 가능하게 됩니다.

string domain = ConfigurationHelper.Project.GetSection("network").GetParameter("domain");

자. 이제 ConfigurationHelper클래스에는 Project 라는 Property가 하나만 있으면 언제든지 동적으로 해당 MyProject.Configuration의 해당 값을 얻어 올 수 있습니다.

ProjectInfoSection 클래스는 아래와 같이 간략하게 구성되어 있습니다.

public class ProjectInfoSection : CustomConfigurationSection
{
    /// <summary>
    /// 섹션그룹이름으로 사용할 현재 프로젝트의 이름을 가져옵니다.
    /// </summary>
    /// <value>The name of the project section group.</value>
    [ConfigurationProperty("sectionGroupName", IsRequired = true)]
    public string ProjectSectionGroupName
    {
        get
        {
            return (string)base["sectionGroupName"];
        }
    }

    /// <summary>
    /// 마지막 업데이트 일시를 가져오거나 설정합니다.
    /// </summary>
    /// <value>The last update.</value>
    [ConfigurationProperty("lastUpdate", IsRequired = true)]
    public string LastUpdate
    {
        get
        {
            return (string)base["lastUpdate"];
        }
        set
        {
            base["lastUpdate"] = value;
        }
    }

    /// <summary>
    /// 업데이트 완료 버전을 가져오거나 설정합니다.
    /// </summary>
    /// <value>The version.</value>
    [ConfigurationProperty("version", DefaultValue = "1.0.0.0")]
    public string Version
    {
        get
        {
            return (string)base["version"];
        }
        set
        {
            base["version"] = value;
        }
    }
}

여기서 버전에 대한 값을 가져 오기 위해서는 http://bangsil.net/Tag/Configuration 를 읽어 보신분은 알겠지만

다음과 같이 읽어 올수 있습니다.

 string version = ConfigurationHelper.ProjectInfoSection.Version;

마지막 업데이트 : (12/4/2010 2:29:38 PM)




Trackback 보기 (0)
댓글 보기 (0)
댓글 쓰기