Pergunta

i acabam tendo cerca de 20 parâmetros diferentes no construtor da classe modelo, uma para cada serviço? Isso é normal ou um sinal de que algo está fora.

Foi útil?

Solução

Eu acho que, categoricamente, que o controlador está interagindo com muitos serviços. Eu não vi o seu código - por isso estou indo off suposições - mas parece-me que o controlador está compondo lógica de negócios chamando inúmeros serviços "pequenos", ao invés de desenho em menos, serviços de "maior" que a lógica de negócios compor dos serviços menores.

Tenha um olhar ao redor para obter informações sobre "serviços de orquestração" vs "entidade" ou serviços "capacidade" e você verá o que quero dizer. Se você criar serviços de orquestração que fornecem seus controladores com a lógica de que necessitam, sua arquitetura é melhorada porque os controladores realmente não deve conter qualquer lógica de negócio em tudo.

Eu realmente acho que o número de serviços que você consome é a questão aqui. recipientes do CIO pode ir alguma maneira de resolver como você vincular tipos de seus parâmetros de injeção etc., mas eu acho que o problema é a sua arquitetura, neste ponto.

Outras dicas

Você pode tentar consolidar alguns serviços ou pensar sobre refatoração as partes controlador de vista para componentes com escopo menores. Além disso, um quadro de dependência estilo de injeção como Spring pode ajudar com coisas como esta.

Allthough eu não sei a sua configuração. 20 parece um pouco demais Eu acho que você vai contra o SRP (responsabilidade priniciple Individual). Mas desde que eu não posso ver o seu código é impossível dizer. Se você realmente precisa de todos esses serviços em que classe de modelo um, então talvez você precisa colocá-los em um factoryclass e usar isso como um parâmetro.

É difícil dar qualquer boa resposta sobre isso, pois não sabemos o seu domínio.

Como @ Matt disse a injeção de dependência pode ajudá-lo aqui e sprint.NET é uma boa e há vários outros.

Já que você mencionou MVP em particular, você deve pelo menos olhar para Ent Lib 4,1 que agora tem , take Unidade / da Microsoft sobre os DI. Sua codeplex local é provavelmente um bom lugar para começar, se isso é novo.

Há também fábricas de software que integração com visual studio e dar -lhe ferramentas para a criação de MVP para sites da web como serviços ligados ou Web. Estes vêm de padrões e práticas também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top