2009-10-22 8 views
3

200 개가 넘는 구성 설정이있는 웹 응용 프로그램이 있습니다. UI에서 비즈니스 로직까지 모든 것을 제어합니다.asp.net 웹 응용 프로그램의 구성 설정 처리

응용 프로그램 시작시 또는 필요할 때 검색해야합니까?

필요한 경우 ISettings 인터페이스를 삽입해야합니다.

의견을주세요.

업데이트 : 이러한 항목은 응용 프로그램에서 켜고 끌 수 있으므로 데이터베이스에 저장됩니다. 일부는 사용자 별 설정이고 일부는 응용 프로그램 설정입니다. 지금 생각해?

답변

0

우리는 많은 구성 설정도 가지고 있습니다. 우리는 그것들을 중앙 데이터베이스 테이블에 저장합니다. 처음 액세스 할 때 데이터베이스에서 모두로드하고 절대 만료 1 분으로 캐시에 저장합니다. 이를 통해 우리는 우리의 구성 설정의 메모리 내 사본을 가질 수 있으며, 우리가 알고있는 구성 업데이트를 최대 1 분 동안 푸시 할 수 있습니다.

그래서, 일종의 하이브리드입니다. 구성 설정에 대한 첫 번째 요청에서 모두 캐시에로드되고 저장됩니다. 이 작업은 매우 가볍기 때문에 매 분마다 발생하는 것은 큰 문제가되지 않습니다.

귀하의 마일리지는 다를 수 있습니다.

+0

이것은 우리가하고 싶은 것과 비슷합니다. db의 200 개의 행은 검색하는 데 오랜 시간이 걸리지 않습니다. 구성 설정의 개체가있는 캐시가 하나뿐입니까? – Schotime

0

MSDN ISettings는 VS Tools -> Options에서 호스트 설정에 사용됩니다. 웹 앱의 좋은 후보자로 보이지 않습니다. 일반적으로 앱 설정은 ConfiguraionManager.Appsettings [ "keyname"]을 사용하여 요청시로드되어 지정된 키의 최신 값을 가져옵니다. 응용 프로그램이 작동하는 동안 값이 변경되지 않는다는 것을 알고 있지만 ConfigurationManager.AppSettings [ "keyname"]을 사용하여 web.Confg에서 매번 값을 읽는 이점은 Application_start에 항상 캐시 할 수 있습니다. ASP.NET 런타임은 web.config의 변경 사항 (예 : 앱 설정 값을 수정할 때)을 감지하고 키에 대한 최신 값을 제공합니다.

6

필요에 따라 검색합니다. ASP.NET은이 데이터를 자동으로 캐시합니다. 매번 파일을 읽지 않습니다. 실행 중일 때 web.config 파일을 변경하면 모든 세션이 종료되고 앱이 효과적으로 재설정됩니다.

지나치게 복잡하지 마십시오. web.config에서 이러한 설정의 의도는 액세스해야하는 전체 응용 프로그램의 설정에 사용되었습니다. MS는 도서관에 액세스 할 수있는 도서관을 제공했으며 최대한 빠른 시일 내에 그 과정을 진행했습니다. 어쩌면 수천 가지의 설정이 있거나 더 나은 캐싱 알고리즘을 찾을 수는 있지만 드문 경우 일 수 있습니다.

코드의 다른 부분에 시간을 할애하면 web.config 앱 설정에 액세스하는 방법을 변경할 필요가 없습니다.

업데이트 : 설정이 응용 프로그램이있는 경우 넓은 다음의 Web.config를 사용합니다. 사용자가 특정 DB에 저장 한 다음 로그인시 사용자 세션에 저장합니다. 일부 사용자는 사용자 별 설정에 쿠키를 사용한다고하지만 사용자가 누구인지 알면 세션을 사용하는 것이 훨씬 좋습니다 해당 사용자가 요청할 때마다 큰 쿠키가 서버에 다시 게시되지 않도록합니다.

4

나는 Kelsey에 동의하며, 지나치게 복잡하게 작성하지 않고 그냥 사용하십시오.값을 검색하기위한 .NET 프레임 워크 클래스. Web.config는 대개 어디서나 보관합니다.
나는 그러나 액세스를위한 간단한 정적 클래스를 만드는 것이 좋습니다 :

using System.Configuration // Add a reference for this... ; 

public static class Config 
{ 
    public static string DbConnection 
    { 
    get 
    { 
     return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
    } 
    } 

    public static string SomeValue 
    { 
    get 
    { 
     return ConfigurationManager.AppSettings["SomeValue"].ToString(); 
    } 
    } 
} 

그것은 당신에게 강력하게 형식화 된 값과 쉽게 액세스 할 수 있습니다. 이와 같은 클래스를 사용하여 일종의 유효성 검사를 수행 할 수도 있습니다. 매우 편리합니다. 그리고 나중에 web.config를 사용하지 않기로 결정한 경우이 클래스를 다른 곳에서 값을 검색하도록 쉽게 변경할 수 있습니다.

관련 문제