저는 IoC를 처음 접했고 앞으로 나아갈 모범 사례에 조금 머물러 있습니다. 내가 일하고있는 프로젝트는 샤프 아키텍처 (Sharp Architecture)가 적용된 MVC에 내장되어있다. 현재 IoC를 사용하는 방법은 각 컨트롤러의 생성자에서 저장소 인터페이스를 지정하고 Castle Windsor가 나머지 작업을 수행하고 이러한 인스턴스를 각 모델에 전달하는 것입니다. 그러나 컨트롤러가 많은 모델을 인스턴스화 할 수 있으므로 다른 모델을 호출하는 등 쉽게 손에서 벗어날 수 있으며 일부 컨트롤러는 이제 생성자 매개 변수에 20 개 이상의 저장소 인터페이스를 갖습니다.Castle Windsor/Sharp Architecture에서 많은 저장소 처리하기
각 컨트롤러가 BaseController를 상속 할 때, 저장소 리포지토리를 만들려고했습니다.이 저장소는 형식 T의 리포지토리를 반환하는 Get() 메서드가있는 리포지토리의 목록이었습니다.이 인스턴스는 기본 컨트롤러에서 인스턴스화되거나 채워질 수 있습니다. 각 모델에 전달되면 모든 리포지토리가 전달되는 것에 대해 걱정할 필요가 없습니다.
그러나 이것은 어떤 느낌이 들지만 Castle Windsor가 이미 이와 같이해야한다고 느끼지만 도움이되지 않을 수 있습니다.
의견을 듣고 싶습니다.
감사합니다.
컨트롤러에 20 개 이상의 리포지토리를 주입해야한다면 컨트롤러가 많은 책임을 져야한다고 생각합니까? Sharp Architecture는 또한 애플리케이션 서비스 패턴을 도입하여 일부 논리를 더 작은 부분으로 그룹화 할 수 있습니다. –
나는 그것이 그렇게 느껴진다는 것에 동의하지만, 시스템의 다른 부분들과 많은 의존 관계가있다. 리포지토리는 컨트롤러에서 실제로 사용되지 않고 단지 모델이 인스턴스화 될 수 있으며 모델이 다른 인스턴스로 인스턴스화 될 수 있도록 컨트롤러에 실제로 사용됩니다. 가능한 한 분리 된 상태로 유지하려고 노력했지만 시스템의 특성상 이러한 작업이 어려워졌습니다. 만약 내가 처음부터 이것을 시작했다면, 어떻게 다른지 잘 모르겠지만, 아마 다르게 할 것입니다 ... – Ben
또한 Google이 말 그대로 아무것도 공개하지 않는 응용 서비스 패턴에 대한 리소스가 있습니까? (http://www.google .co.uk/search? q = % 22 응용 프로그램 + 서비스 + 패턴 % 22 + s % 23arp + 아키텍처) – Ben