제 질문은 일반적으로 소프트웨어 아키텍처에 대한 것입니다.구조적으로 단일 개체를 IoC 컨테이너로 대체하십시오.
Google은 Windows 서비스 응용 프로그램을 보유하고 있습니다.
Program.cs는 MainService
클래스의 인스턴스를 만들고 시작합니다.
MainService
은 ServiceBase
을 상속하므로 OnStart(string[] args)
메서드를 구현합니다.
보통, 내 응용 프로그램을 설계 할 때, 나는 OnStart
방법으로 이런 짓을 할 것이다 :
MainSingletonObject.Initialize();
초기화가의 app.config에서 구성 데이터를 읽고 필요한 클래스의 인스턴스를 만들 것이다, 개방 WCF 호스트 (있는 경우)
서비스 응용 프로그램을 시작하는 것이 좋습니까? 디자인을 개선하기위한 개인적인 건축 조언은 무엇입니까? IoC 컨테이너에 맞는 곳과 내가 손으로 의존성 주입을하는 경우 왜 필요할까요?
두 가지 문제점이 있습니다. 1) 싱글 톤 안티 패턴을 사용하고 있습니다 (http://jalf.dk/blog/2010/03/singletons-solving-problems-you-didnt-know-you-never- had-since-1995 /), 2) 아무런 도움이되지 않는다. 소프트웨어 아키텍처는 서로 위에 패턴을 쌓는 것에 관한 것이 아니라 개발, 이해 및 유지하기가 쉬운 방식으로 프로그램을 구성하는 것에 관한 것입니다. 이 중 하나에 기여하지 않는 것은 아키텍처에 자리가 없습니다. 그래서 싱글 톤을 만들거나, 정규 클래스를 사용하거나, 심지어 함수를 만들어서 얻는 것은 무엇입니까? – jalf
나는 깨끗한 코드를 얻는다. var를 호출 할 필요없이 myMainClass = new MainClass(); 및 myMainClass.Start(); 서비스 OnStart 메서드에는 한 줄의 코드 만 있습니다. 단순히 개체를 만들고 메서드를 실행하면 어떤 이점이 있습니까? –
하지만 당신이 맞을 수도 있습니다, 나는 잃고 능력을 생성자에 매개 변수를 전달합니다. OnStart 메서드의 app.config에서 모든 종속성을 읽는 것만으로 문제가있을 경우 서비스 시작에 실패했음을 나타낼 수 있습니다. –