none
Sobre injeção de dependências em serviços do domínio RRS feed

  • 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
    quarta-feira, 23 de setembro de 2009 00:04

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
    quinta-feira, 24 de setembro de 2009 05:11
    Moderador

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
    quinta-feira, 24 de setembro de 2009 05:11
    Moderador
  • Sabe me dizer se o Unity resolve altomaticamente esta cadeia de dependências?

    Att,

    Alessandro
    sexta-feira, 25 de setembro de 2009 20:32
  • Alessandro,

    Resolve sim.

    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    sexta-feira, 25 de setembro de 2009 23:44
    Moderador