2008-09-17 3 views
1

구성 파일을 사용하여 C# 웹 사이트에서 (제 3 자) 로깅 및 캐시 사용과 같은 것들을 켜고 끌 수 있습니다. 솔루션은 특히 로깅 및 캐싱에만 국한되어서는 안되며보다 일반적인 것이므로 다른 용도로도 사용할 수 있습니다.C# ASP.NET 웹 사이트에서 조건부로 동작을 활성화하는 방법

필자는 로깅과 캐싱을 켜거나 끌어야한다고 주장 할 수있는 구성 XML 파일을 가지고 있습니다 (예 : Web.Config에있을 수도 있음). bool loggingbool cachingtrue 또는 false입니다.

문제는이 부분에 관한 것입니다 : 은 내가 할 수있는 것은 앞에 추가 if (logging)if (caching)로 문을 관련된 모든 로깅/캐싱입니다 . 이것을 프로그래밍하는 더 좋은 방법은 무엇입니까? 이런 종류의 문제에 대한 프로그래밍 용어가 있습니까? 어쩌면 속성도 갈 수있는 방법일까요?

답변

2

당신이 가지고있는 로깅/캐싱 문장의 종류가 궁금합니다. WriteLog 또는 StoreCahce 등을 수행하는 클래스가 있다면 ... WriteLog 메소드에 if (로깅)를 넣지 않는 이유는 무엇입니까? 로깅 캐싱과 관련된 모든 메서드를 한 번 클래스에 넣고 해당 클래스가 로깅/캐싱의 사용 여부를 알고있는 경우 각 인스턴스에 If 문을 한꺼번에 저장할 수있는 것처럼 보입니다.

+0

아마도이 방법으로 문제를 해결하고 래퍼 클래스를 작성하거나 해당 작업을 수행하는 대리인 일 수도 있습니다. –

+0

어떤 사람들은 속성 같은 것을 생각해 낼 수 있을지 궁금해했습니다. –

6

왜 이미 존재하는 web.config 및 System.Configuration 기능을 사용하지 않는 것이 좋을까요?

웹 응용 프로그램은 모든 페이지로드시 web.config를 구문 분석하므로 기존 구성에서 고유 섹션을 정의 할 수있을 때 또 다른 XML 구성 파일을 가지고있는 오버 헤드가 과도한 것처럼 보입니다.

+0

예, 가능하지만 코드에서 이러한 조건을 처리하는 방법이 더 궁금합니다. –

+0

이에 따라 문제가 변경되었습니다. –

+1

참고로 - Web.Config는 AppStart에서 한 번만 구문 분석되며 다시 OnFileChange – stephbu

0

캐시 구성과 관련된 자세한 내용은 http://msdn.microsoft.com/en-us/library/ms178606.aspx을 참조하십시오.

+0

죄송합니다. 질문을 명확하게 작성하지 않은 것 같습니다. 이후의 솔루션은 특히 캐싱에 관한 것이 아니라 이러한 종류의 사례를 일반적으로 프로그래밍하는 방법에 관한 것입니다. 나는 그 질문을 바꾸었다. –

0

나는 foxxtrot에 동의하고, web.config를 사용하고 appsetting 또는 2를 추가하여 값을 보유하고자합니다.

그런 다음 구현을 확인하려면 yes를 사용하여 조치를 취해야하는지 확인하십시오. 코드 복제를 방지하기 위해 로깅 클래스를 중앙 집중화하는 것이 좋습니다.

0

종속성 주입 컨테이너를 사용하고 구성에 따라 다른 로깅 및 캐싱 개체를로드 할 수 있습니다. 로깅을 활성화하려면 config에 활성 로깅 객체/공급자를 지정합니다. 이 기능을 사용하지 않으려는 경우 DI를 로그하지 않고 즉시 반환하는 "더미"로깅 공급자를 DI에 추가시킬 수 있습니다.

@foxxtrot에서 제안한 것과 같은 단순한 디자인을 선호하지만 유틸리티 구성 요소를 런타임으로 스와핑하는 것이 DI가 여러분에게 도움이되는 일 중 하나입니다.

1

Microsoft 엔터프라이즈 라이브러리를 확인할 수 있습니다. 로깅 및 캐싱과 같은 기능이 있습니다. 로깅 코드는 항상 포함하지만 실제 로깅 코드는 설정에 의해 제어되므로 로깅이 쉽습니다.

http://msdn.microsoft.com/en-us/library/cc467894.aspx

당신은 패턴과 관행 그룹의 다른 멋진 물건을 찾을 수 있습니다.

+0

P & P boys +1 - 캐싱 및 로깅에 대해 전체 응용 프로그램 블록이 있습니다. – stephbu

관련 문제