Usuário com melhor resposta
Sobre injeção de dependências em serviços do domínio

Pergunta
-
Amigos,
a Injeção de Dependências via constructor é algo muito bom em termos de padrão especialmente se usarmos um container de DI como UNITY.
Minha dúvida é:
se um serviço do domínio que será injetado em outras classes também precisar usar outros serviços ou repositórios, neste caso eu também devo injetá-los via constructor do serviço ou seria melhor eu localizá-los via SERVICE LOCATOR (registry ou ou algo assim) ?
Minha preocupação é ter uma cadeia muito grande de injeções via constructor....especialmente se o serviço que este serviço usará também dependa de outro.. e por ai vai.....
Aproveitando o ensejo, os serviços e repositórios (como não guardam estado do domínio), podem ser todos singletons ?
Att,
Alessandro
Respostas
-
Alessandro,
Prefiro DI à SL:
http://unplugged.giggio.net/post/Injecao-de-dependencia-ou-Service-Locator.aspx
Sim, vai causar uma cadeia grande de dependência, mas elas teriam que ser resolvidas de qualquer forma não é?
Sim, os serviços e os repositórios podem ser singletons. Mas há alguns problemas: é mais difícil testar, singletons podem levar a código procedural sem querer, você pode misturar informações de contexto, etc... Você também pode ter problemas com multi-thread.
Lembrando que serviços não possuem estado de domínio, mas possuem estado de infra-estrutura com frequência.
Eu evito singletons.
Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com- Marcado como Resposta Giovanni Bassi - MVPMVP, Moderator sexta-feira, 25 de setembro de 2009 15:55
Todas as Respostas
-
Alessandro,
Prefiro DI à SL:
http://unplugged.giggio.net/post/Injecao-de-dependencia-ou-Service-Locator.aspx
Sim, vai causar uma cadeia grande de dependência, mas elas teriam que ser resolvidas de qualquer forma não é?
Sim, os serviços e os repositórios podem ser singletons. Mas há alguns problemas: é mais difícil testar, singletons podem levar a código procedural sem querer, você pode misturar informações de contexto, etc... Você também pode ter problemas com multi-thread.
Lembrando que serviços não possuem estado de domínio, mas possuem estado de infra-estrutura com frequência.
Eu evito singletons.
Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com- Marcado como Resposta Giovanni Bassi - MVPMVP, Moderator sexta-feira, 25 de setembro de 2009 15:55
-
-