Junior — Middle
Qual é a diferença entre o escopo de objetos Scoped e Transient no contexto da Injeção de Dependências?
sobes.tech IA
Resposta da IA
No contexto da Injeção de Dependências em C#, o escopo Scoped e Transient determinam o tempo de vida dos objetos criados:
-
Transient: o objeto é criado toda vez que é solicitado. Isso significa que, a cada chamada de serviço ou injeção, uma nova instância será criada.
-
Scoped: o objeto é criado uma única vez durante o tempo de uma solicitação (scope). Em aplicações web, isso geralmente significa que durante uma mesma solicitação HTTP, será usada a mesma instância, mas para outra solicitação, uma nova será criada.
Exemplo:
services.AddTransient<IMyService, MyService>(); // novo objeto a cada solicitação
services.AddScoped<IMyService, MyService>(); // um objeto por requisição HTTP
Assim, Scoped é útil para manter estado durante uma única requisição, enquanto Transient é adequado para serviços stateless, onde uma nova instância é necessária a cada vez.