2012-04-13 2 views
0

최근에 꽤 큰 응용 프로그램에서 작업하기 시작했으며 web.config보다는 정적 클래스/속성에 많은 설정이 저장되어 있다는 것을 알았습니다.web.config 대신 코드에 값 저장

public static class FormSettings 
{ 
    public const string HttpPostContentType = "application/x-www-form-urlencoded"; 
    public const string HttpPostMethodValue = "POST"; 
} 

내가 이것을 할 수있는 유일한 이유는 하나의 파일에 다루기 힘들어하는 수많은 설정 때문입니다.

코드를 다시 컴파일하지 않으면 이러한 설정을 변경할 수 없다는 것 외에도이 접근법에는 다른 단점이 있습니까?

편집 :

확인의 예는 위의 최고 아니었다 :

public static class ThirdPartyApiSettings 
{ 
    public const string EmployeeXmlNodeName = "Employee"; 
    public const string FirstNameXmlNodeName = "FirstName"; 
} 
+3

왜 이들은 web.config에 저장되기를 원합니까? 솔직히 말해서, 나는 그들이 "const"가치가 있는지조차 확신하지 못한다. 대개 시나리오와 관련이 있기 때문이다. 시스템의 모든 값/리터럴을 앱 설정이나 const로 만들 필요가 없다. –

+1

(어쨌든'application/x-www-form-urlencoded'가 아니어야합니다.) – Joey

+2

이와 마찬가지로,이 ** 특정 ** 값이 얼마나 자주 변경 될 것인지, 그리고 변경 될 가능성이 얼마나 높은지 고려하십시오. GET과 POST는 매우 특별한 의미를 지니고 있습니다. 다시 컴파일하기가 불편한 * 경우, 배포 프로세스를 개선하는 데 약간의 시간을 투자하십시오. –

답변

2

저장 설정은 실제로 응용 프로그램과 시나리오에 따라 다릅니다. 접근 방식에있어 가장 큰 문제는 모든 것이 하드 코딩되어 있다는 것입니다. 누군가가 위에서 언급 한 바와 같이 , 당신에 대해 생각해야 다음 "변수"사용 빈도

  • 가 변경 될 가능성을이다
  • 응용 프로그램의 일부로이 변수
  • 에 액세스해야하는
  • 어떤 정보는 (설정) 당신은 저장하는 것

저장 설정의 몇 가지 방법이 있습니다 :

,369은
  • Web.config (appsettings) - 방대한 이름 목록을 저장하기 위해이 방법을 사용하지 않는 것이 좋습니다. 또한 실제로 복잡한 유형을 저장할 수는 없습니다 (물론 ... 할 수는 있지만 객체를 직렬화하고 web.config에 저장하는 사람은 본 적이 없습니다). 이 방법은 문자열 값을 저장하는 데 유용합니다. 이 접근법에서 가장 큰 문제는 (적어도 저에게는) web.config에서 무언가를 추가/변경할 때마다 앱을 다시 컴파일하는 것입니다.
  • 리소스 파일 - 콘텐츠에 유용합니다. 특히 현지화하려는 경우 유용합니다. 설정을 저장할 수도 있습니다. 문제는 컴파일 된 것이므로 쉽게 업데이트 할 수 없습니다.
  • 사용자 지정 클래스 - 비용과 열거 형을 저장하는 데 좋습니다 (매우 자주 변경되지는 않음).하지만 변경 가능성이 높은 콘텐츠를 저장하려는 경우에는 최선의 방법이 아닙니다.
  • 사용자 지정 XML 파일 -이 방법을 사용하면 응용 프로그램을 다시 컴파일하지 않고도이 방법을 변경할 수 있습니다. 문제는 직접 파서를 작성하고 매우주의해야한다는 것입니다. xml 파일을 놓치기 쉽습니다.
  • 데이터베이스 - 지역화, 원격, 쉽고, 다른 응용 프로그램에 액세스 당신은 또한 같은 버전 관리, 감사 및 물건을 필요로하는 경우 생각 할 수 있습니다

변경합니다.

희망이 있습니다.

0

당신은 컴파일이 더있다, 당신은 더 많은 의존성을 가지고 있고 당신은 전체 응용 프로그램을 다시 작성하지 않고 변경할 수 없습니다.

또한 프로그래밍 부분이 아니며 별도로 사용해야합니다. 컨트롤러, 뷰, 액션 및 DAO를 하나의 파일 (웹 응용 프로그램)에 넣을 수도 있지만 작동하지 않지만 그냥 수행하지 마십시오.

+1

C#의 컴파일 단위는 파일이 아니라 어셈블리이므로 컴파일러는 실제로 얼마나 많은 파일이 있는지 또는 얼마나 작은 파일이 있는지를 신경 쓰지 않습니다. – Joey