XML 구성 파일을 래핑하는 .NET 어셈블리가 있습니다. config 파일에는 오류 로그 파일의 경로 및 파일 이름 형식 정보를 비롯한 많은 시스템 설정이 포함되어 있습니다. 다른 어셈블리는 싱글 톤 클래스를 통해이 일을 참조 :순환 참조가없는 시스템 어셈블리에 대한 오류 로깅은 어떻게 처리합니까?
public sealed class SettingsManager
{
private static volatile SettingsManager manager;
private static object syncRoot = new Object();
//...
private SettingsManager()
{
//load XML config file
}
public static SettingsManager Manager
{
get
{
if (manager == null)
{
lock (syncRoot)
{
if (manager == null)
manager = new SettingsManager();
}
}
return manager;
}
}
//......
//Methods getting and setting configuration data
//......
}
나는 또한 시스템의 나머지 부분에서 오류 처리 및 사용 추적을위한 클래스를 제공하는 Logging
어셈블리를 가지고있다.
SettingsManager.Manager.GetCurrentErrorFileName();
는 그래서 Settings
어셈블리가 프로젝트의 다른 어셈블리의 핵심 의존성이다 : 그것은 오류를 저장할 위치를 파악하기 위해 Settings
라이브러리를 참조합니다. 그러나 Settings
라이브러리에 오류를 기록해야한다면 Settings
에 대한 참조로 Logging
어셈블리를 참조 할 수 없으므로 순환 참조가 있습니다.
내가 부딪히는 문제는 Settings
라이브러리의 XML 파일 루틴에서 생성되는 오류를 처리하는 방법입니까? 이 오류가 기록 할 기본 파일 위치를 하드 코드합니까? 이 경우 가장 좋은 방법은 무엇입니까?
시스템 이벤트 로그에 대해 생각했지만이 어셈블리는 Windows 서비스와 호스팅 된 MVC 웹 사이트에서 모두 사용됩니다. 그래서 이벤트 로그가 옵션이라고 생각하지 않습니다.
내가 수행 한 대부분의 응용 프로그램은 사내 프로젝트 또는 간단한 .NET 또는 MVC 웹 사이트였습니다. 그러나이 프로젝트에 깊이 들어가면 IoC와 Dependency Injection의 개념에 대해 더 많은 것을 알게되었습니다. 그러나 그것은 나에게 여전히 새로운 개념이다. IoC와 의존성 삽입에 대한 다른 좋은 참조 정보가 있다면, 그 정보가 무엇인지 알고 싶습니다. (나는 당신이 지금에 링크 된 기사를 읽고있다). – jwatts1980
나는 이것을 좋아한다 : [IoC 컨테이너는 가지고 있지 않은 문제를 해결하지만 가지고있는 것은 좋은 문제이다.] (http://kozmic.net/2012/10/23/ioc-container-solves-a-problem-you 그다지 좋은 것은 아니다.)하지만, 오랫동안 읽었을 때 큰 차이가있다. 여기에 [다른 하나] (http://blogs.msdn.com/b/nblumhardt/archive/2008/12/27/container-managed-application-design-prelude-where-does-the-container-belong.aspx)가 있습니다. 그건 더 짧아. –
또는 주제에 관한 책이 필요하면 Mark Seemann의 [_Dependency Injection in .NET_] (http://manning.com/seemann/)을 참조하십시오. –