티스토리 뷰
개인적인 사이트라면 모를까.. 점점 사이트 규모가 커지면 그곳에 필요한 설정 정보들 또한 굉장히 많이 늘어나게 될겁니다. Web.Config 라인수가 200 라인 넘어가게 되면 이거 영~ 찾기도 힘들고…
그럼 어떻게 하면 될까… Web.Config 를 여러 개의 파일로 쪼개어 연관성 있는 정보들만 묶으면 되지 않을까? 좋다.. 또는 관련된 섹션끼리 묶을 수 없을까??
그럼 한번 해보자..
다음과 같이 실습에 필요한 Config 파일을 만들어 봅시다.
Web.Config |
기본 생성되는 파일 |
Umc.Core.Config |
Core 모듈에 설정이 들어가는 파일 |
Umc.Message.Config |
Message 관련 설정이 들어가는 파일 |
그리고 다음과 같이 Web.Config 에 추가해봅시다.
<configuration>
<configSections>
<!-- Web.Config 섹션 설정-->
<sectionname="Umc.Web"type="Umc.Core.Web.UmcConfigurationSectionHandler, Umc.Core"/>
<sectionname="Umc.Core"type="Umc.Core.Web.UmcConfigurationSectionHandler, Umc.Core"/>
<sectionname="Umc.Message"type="Umc.Core.Web.UmcConfigurationFileAttributeHandler, Umc.Core"/>
</configSections> |
Section name 에서는 섹션의 이름과,
Type 에서는 섹션 처리를 담당할 클래스, 그리고 콤마뒤에는 어셈블리 이름(DLL 을 뺀)을 등록합니다.
그럼 위 Web.Config 에서 type 에 등록한 클래스를 만들어 봅시다.
UmcConfigurationSectionHandler.cs
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Text;
namespace Umc.Core.Web
{
///<summary>
/// Web.Config 의섹션을구성하는핸들러
///</summary>
public class UmcConfigurationSectionHandler : System.Configuration.NameValueSectionHandler
{
}
} |
UmcConfigurationFileAttributeHandler.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Umc.Core.Web
{
///<summary>
/// Web.Config 의file 특성을처리하는핸들러
///</summary>
public class UmcConfigurationFileAttributeHandler
: System.Configuration.NameValueFileSectionHandler
{
public UmcConfigurationFileAttributeHandler()
{
}
}
} |
줸장~ 보는대로 소스는 텅텅~ 비었습니다.
텅 비었다고 생각하지 말아주세요. 각각 섹션 핸들러를 상속받아 쓰고 우리의 프로젝트에 포함시키려
한 것 뿐입니다^^
이걸로 섹션 처리기는 완성이 되었습니다.
그럼 이제 이것을 활용할 수 있도록 클래스를 하나 만들어 보겠습니다.
using System;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace Umc.Core
{
///<summary>
///환경설정내용을가져온다..
///</summary>
public class UmcConfiguration
{
public static string ConnectionString
{
get
{
return ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
}
}
///<summary>
/// Umc.Web Configuration 을가져온다.
///</summary>
public static NameValueCollection Web
{
get
{
return (NameValueCollection)ConfigurationManager.GetSection("Umc.Web");
}
}
///<summary>
/// Umc.Core Configuration 을가져온다.
///</summary>
public static NameValueCollection Core
{
get
{
return (NameValueCollection)ConfigurationManager.GetSection("Umc.Core");
}
}
///<summary>
/// Umc.Message COnfiguration 을가져온다.
///</summary>
public static NameValueCollection Message
{
get
{
return (NameValueCollection)ConfigurationManager.GetSection("Umc.Message");
}
}
}
}
|
우리는 섹션의 타입을 NameValueSectionHandler 을 상속받은 처리기를 만들었으므로, 리턴값도 NameValueCollection 으로 리턴할 수 있습니다.
이제 적당한 config 파일을 만들어 보도록 할게요
<?xmlversion="1.0"?>
<configuration>
<!-- Web.Config 설정 섹션 -->
<sectionname="Umc.Web"type="Umc.Core.Web.UmcConfigurationSectionHandler, Umc.Core"/>
<sectionname="Umc.Core"type="Umc.Core.Web.UmcConfigurationSectionHandler, Umc.Core"/>
<sectionname="Umc.Message"type="Umc.Core.Web.UmcConfigurationFileAttributeHandler, Umc.Core"/>
</configSections>
.
.
<!-- Database 연결 -->
<connectionStrings>
<addname="ConnectionString"connectionString="server=(Local); database=UmcBlog; uid=sa; pwd=anjfqhk"/>
</connectionStrings>
<Umc.Web>
<addkey="umc"value="엄씨야~~" />
</Umc.Web>
<Umc.Core>
<addkey="umc.core"value="코어관련 셋팅" />
</Umc.Core>
<Umc.Messagefile="Umc.Message.Config">
</Umc.Message> |
Umc.Message 섹션을 잘 보면, file 속성을 사용하는 것을 볼 수 있습니다.
이것은 지정한 파일을 현재 config로 가져올 수 있습니다. 소위 include 할 수 있다는 것이지요.
Umc.Message.Config
<?xmlversion="1.0"encoding="utf-8"?>
<Umc.Message>
<addkey="umcMessage"value="메시지"></add>
</Umc.Message> |
이제 마지막으로 샘플 페이지를 만들어 볼게요.
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string sectionValue = Umc.Core.UmcConfiguration.Message["umcMessage"];
Response.Write( sectionValue );
}
} |
비쥬얼스튜디오 2005 기준으로 작성이 되었구여.. 2003 버전에서는 GetSection 대신 GetConfig를 사용하시면 됩니다.
어렵지 않게 구현할 수 있는건데, 제가 설명하려니 길어지고 오히려 난해해지네요 ㅋ^^;;
'.NET > ASP.NET' 카테고리의 다른 글
너 ASPX 웹폼 확장자를 바꿔봤니? 난 해봤~어! (0) | 2007.04.09 |
---|---|
Composite Pattern 을 사용하여 MVC Pattern 구현 (0) | 2007.04.06 |
이미지를 합성해보자~ [ 이미지 도용방지 ] (0) | 2007.04.06 |
제네릭 처리기를 이용하여 자동가입방지 폼 구현 (Captcha) (0) | 2007.04.05 |
파일을 압축하여 내려받자 (0) | 2007.04.05 |
- TAG
- ASP.NET, WEb.config
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- 2,841,419
- Today
- 40
- Yesterday
- 71
링크
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
TAG
- ASP.NET
- MEF
- Team Foundation Server 2010
- .NET Framework 4.0
- testing
- Team Foundation Server
- 땡초
- 비주얼 스튜디오
- test
- POWERUMC
- ALM
- Visual Studio 2008
- Visual Studio 2010
- Windows 8
- 팀 파운데이션 서버
- TFS
- mono
- 비주얼 스튜디오 2010
- TFS 2010
- umc
- Managed Extensibility Framework
- LINQ
- Visual Studio
- github
- c#
- Visual Studio 11
- Silverlight
- monodevelop
- .NET
- 엄준일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
- 2020/05 (1)
- 2019/10 (3)
- 2018/11 (1)
- 2018/08 (2)
- 2017/04 (1)
- 2017/01 (2)
- 2016/11 (2)
- 2016/08 (1)
- 2016/05 (1)
- 2016/04 (2)
- 2016/02 (2)
- 2016/01 (1)
- 2015/05 (1)
- 2015/04 (2)
- 2015/03 (1)
- 2015/02 (1)
- 2015/01 (1)
- 2014/11 (1)
- 2014/09 (2)
- 2014/08 (2)
- 2014/05 (2)
- 2014/04 (3)
- 2014/03 (2)
- 2014/02 (2)
- 2014/01 (4)
- 2013/12 (2)
- 2013/11 (1)
- 2013/10 (2)
- 2013/09 (6)
- 2013/08 (3)