0

저는 IoC를 처음 접했고 앞으로 나아갈 모범 사례에 조금 머물러 있습니다. 내가 일하고있는 프로젝트는 샤프 아키텍처 (Sharp Architecture)가 적용된 MVC에 내장되어있다. 현재 IoC를 사용하는 방법은 각 컨트롤러의 생성자에서 저장소 인터페이스를 지정하고 Castle Windsor가 나머지 작업을 수행하고 이러한 인스턴스를 각 모델에 전달하는 것입니다. 그러나 컨트롤러가 많은 모델을 인스턴스화 할 수 있으므로 다른 모델을 호출하는 등 쉽게 손에서 벗어날 수 있으며 일부 컨트롤러는 이제 생성자 매개 변수에 20 개 이상의 저장소 인터페이스를 갖습니다.Castle Windsor/Sharp Architecture에서 많은 저장소 처리하기

각 컨트롤러가 BaseController를 상속 할 때, 저장소 리포지토리를 만들려고했습니다.이 저장소는 형식 T의 리포지토리를 반환하는 Get() 메서드가있는 리포지토리의 목록이었습니다.이 인스턴스는 기본 컨트롤러에서 인스턴스화되거나 채워질 수 있습니다. 각 모델에 전달되면 모든 리포지토리가 전달되는 것에 대해 걱정할 필요가 없습니다.

그러나 이것은 어떤 느낌이 들지만 Castle Windsor가 이미 이와 같이해야한다고 느끼지만 도움이되지 않을 수 있습니다.

의견을 듣고 싶습니다.

감사합니다.

+0

컨트롤러에 20 개 이상의 리포지토리를 주입해야한다면 컨트롤러가 많은 책임을 져야한다고 생각합니까? Sharp Architecture는 또한 애플리케이션 서비스 패턴을 도입하여 일부 논리를 더 작은 부분으로 그룹화 할 수 있습니다. –

+0

나는 그것이 그렇게 느껴진다는 것에 동의하지만, 시스템의 다른 부분들과 많은 의존 관계가있다. 리포지토리는 컨트롤러에서 실제로 사용되지 않고 단지 모델이 인스턴스화 될 수 있으며 모델이 다른 인스턴스로 인스턴스화 될 수 있도록 컨트롤러에 실제로 사용됩니다. 가능한 한 분리 된 상태로 유지하려고 노력했지만 시스템의 특성상 이러한 작업이 어려워졌습니다. 만약 내가 처음부터 이것을 시작했다면, 어떻게 다른지 잘 모르겠지만, 아마 다르게 할 것입니다 ... – Ben

+0

또한 Google이 말 그대로 아무것도 공개하지 않는 응용 서비스 패턴에 대한 리소스가 있습니까? (http://www.google .co.uk/search? q = % 22 응용 프로그램 + 서비스 + 패턴 % 22 + s % 23arp + 아키텍처) – Ben

답변

1

작업 단위 패턴처럼 들리는 리파지토리의 저장소. 새로운 IUnitOfWork 인스턴스를 만들 수있는 IUnitOfWorkFactory을 삽입하면됩니다. 작업 단위 인스턴스는 모든 저장소를 보유합니다.

이러한 구현의 예를 찾으십시오. here.

개인적으로 저는 저장소에 작업 단위 인스턴스를 삽입하거나 컨트롤러에 서비스를 삽입하지 않을 것입니다. 이 서비스는 작업 단위 또는 리포지토리를 종속성으로 보유합니다.

+0

나는 질문 주석에 명시된 바와 같이 "저장소보다는 서비스 주입"에 동의합니다. –

+0

현재 우리는 꽤 큰 시스템과 기본적으로 서비스 레이어가 없습니다. 나는 도울 수 없지만 최소한 우리에게는별로 이득이되지 않는 또 다른 복잡성 계층을 추가 할 것입니다. 이것은 제가 실제로 혜택이나 패턴을 이해하지 못하기 때문일 수 있습니다. 이 패턴의 좋은 예를 알고 있습니까? 컨트롤러, 모델 및 저장소가 상호 작용하는 방식을 보여주는 것이 바람직합니다. 감사합니다. – Ben

+0

@Ben : 컨트롤러는 뷰를 '제어'하기위한 것이지 비즈니스 지향적 인 것들을위한 것이 아닙니다. 컨트롤러가 너무 많이 작동하고 있으며 SRP (Single Responsibility Principle)를 따르지 않습니다. "꽤 큰 시스템"을 가지고 있다면 SRP를 따르는 것이 도움이 될 것입니다. 복잡성을 제어하기 위해 추상 레이어를 추가합니다. 응용 프로그램 서비스를 추가하는 것은 추상적이지 않습니다. 이미 실제로 @MikeEast가 주석에 링크되어 있기 때문에 다소 직설적입니다. 그러나 링크 된'IUnitOfWorkFactory' 예제는 사실 훨씬 추상적입니다. – Steven

관련 문제