INJEçãO DE DEPENDENCIA

 Tópico anterior Próximo tópico Novo tópico

INJEçãO DE DEPENDENCIA

C#

 Compartilhe  Compartilhe  Compartilhe
#496852 - 28/04/2021 18:04:22

MARCELOKROL
REBOUCAS
Cadast. em:Julho/2004


Pessoal, estou engatinhando ainda no mundo de APIs em net core. Já fiz algumas e todas estão funcionando perfeitamente, só que me surgiu uma dúvida, na verdade ela sempre existiu desde que comecei a estudar o net core.
Por exemplo:
  public static IServiceCollection ResolverDependencias(this IServiceCollection services)
{
   services.AddScoped<SistemaContext>();
   services.AddScoped<IEmpresaRepositorio, EmpresaRepositorio>();
   services.AddScoped<IFinanceiroRepositorio, FinanceiroRepositorio>();
   services.AddScoped<IUsuarioRepositorio, UsuarioRepositorio>();

   return services;
}

É um pequeno sistema que vai ter umas 10 tabelas no máximo. Mas em um sistema grande com várias tabelas, como por exemplo um ERP, que tem fácil umas 100 tabelas, a injeção de dependência de todas as 100 tabelas não deixa a API lenta? Existe alguma outra forma sem ter que injetar todas as 100 tabelas? Se não tiver uma outra forma, a saída seria criar vários micro-serviços?



#496867 - 30/04/2021 15:39:49

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Olá Marcelo!

Existem algumas tabelas de benchmark comparando várias tecnologias de container. Como esta abaixo:

https://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison


A verdade é que é algo muito rápido. Não precisa se preocupar, a maioria dos containeres estão preparados para isso. Claro que varia de implementação para implementação, mas pense numa busca hash usando um Dictionary... você já consegue identificar rapidamente qual a implementação para que foi mapeada. Coisa extremamente rápida, já que tudo é feito em memória. E sobre o processo de resolução da injeção em si na hora da requisição, também é algo bem rápido (como pode ver no link acima)


Sobre alguma outra maneira de não injetar, não é possível. Se você quer usar um container de injeção de dependência, fatalmente você precisará fazer essa configuração.

Claro, as vezes dividir o serviço pode ser uma boa. Não por conta das injeções de dependência - até porque, imagino que você configurou corretamente o escopo de cada dependência - então você não teria tantos problemas. Mas seria interessante para você não ficar com um DbContext muito inchado, por exemplo.



Não nasci pra programar, mas preciso me alimentar...


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário