MVC 많은 서비스로 컨트롤러 생성자를 매우 크게 만듭니다.

StackOverflow https://stackoverflow.com/questions/333188

  •  22-07-2019
  •  | 
  •  

문제

모델 클래스의 생성자에 각 서비스마다 약 20 개의 다른 매개 변수가 있습니다. 이것은 정상적인 것이거나 무언가가 꺼져 있다는 신호입니다.

도움이 되었습니까?

해결책

컨트롤러가 너무 많은 서비스와 상호 작용하고 있다고 생각합니다. 나는 당신의 코드를 보지 못했습니다 - 그래서 나는 가정을 꺼내고 있습니다. 그러나 당신의 컨트롤러는 비즈니스 로직을 구성하는 "더 큰"서비스를 그려지지 않고 수많은 "작은"서비스를 호출하여 비즈니스 로직을 작성하는 것 같습니다. 소규모 서비스에서.

"오케스트레이션 서비스"vs "엔티티"또는 "기능"서비스에 대한 정보를 둘러 보면 내가 의미하는 바를 볼 수 있습니다. 컨트롤러에 필요한 논리를 제공하는 오케스트레이션 서비스를 작성하는 경우 컨트롤러가 실제로 비즈니스 로직을 포함하지 않아야하기 때문에 아키텍처가 향상됩니다.

나는 당신이 소비하는 서비스의 수가 여기서 문제라고 생각합니다. IOC 컨테이너는 유형을 주입 매개 변수 등에 바인딩하는 방법을 해결하기 위해 어떤 방법으로 진행될 수 있지만,이 시점에서 문제가 아키텍처라고 생각합니다.

다른 팁

일부 서비스를 통합하거나 컨트롤러 뷰 부품을 소형 스코프 구성 요소로 리팩토링하는 것에 대해 생각할 수 있습니다. 또한 Spring과 같은 종속성 주입 스타일 프레임 워크는 이와 같은 것들에 도움이 될 수 있습니다.

당신의 설정을 모르겠지만, 나는 당신의 설정을 모른다. 20은 당신이 SRP (단일 책임 Priniciple)에 반대한다고 생각합니다. 그러나 코드를 볼 수 없으므로 말할 수 없습니다. 해당 한 모델 클래스에서 이러한 모든 서비스가 필요한 경우 공장 클래스에 넣고 매개 변수로 사용해야 할 것입니다.

우리가 당신의 도메인을 모르기 때문에 이것에 대한 좋은 대답을하기는 어렵습니다.

@Matt가 말했듯이 의존성 주입은 여기에서 당신을 도울 수 있으며 Sprint.net은 좋은 것이며 다른 사람들이 있습니다.

특히 MVP를 언급하면서 적어도 Ent Lib 4.1 지금 가지고 있습니다 단일성, Microsoft의 Di. 그들의 코드 플렉스 이것이 새로운 경우 사이트는 아마도 시작하기에 좋은 장소 일 것입니다.

또한 있습니다 소프트웨어 공장 저것 Visual Studio와 통합하십시오 링크 된 웹 사이트 또는 웹 서비스로 웹 사이트를위한 MVP를 만들기위한 도구를 제공합니다. 이것들은 패턴과 관행에서도 나옵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top