ExpertiDict

C# · Intermediário · Inglês · Técnico

service lifetime

/ˈsɝvɪs ˈlaɪfˌtaɪm/substantivo

Define quanto tempo o container de DI mantém um serviço: Transient cria uma instância por pedido, Scoped uma por escopo (requisição) e Singleton uma para o app todo.

Onde usar

Aparece ao registrar serviços com AddTransient, AddScoped e AddSingleton. Um Singleton que depende de um Scoped (captive dependency) mantém o scoped vivo para sempre; o ASP.NET Core acusa isso em Development.

Em código

var s = builder.Services;
s.AddSingleton<IRelogio, Real>();
s.AddScoped<AppDb>();
s.AddTransient<IEmail, Smtp>();

Exemplos

The DbContext should be scoped, not singleton.

O DbContext deve ser scoped, não singleton.

A singleton can't depend on a scoped service.

Um singleton não pode depender de um serviço scoped.

Cuidado

Não registre como Singleton algo que guarda estado por usuário ou usa DbContext, que não é thread-safe e deve ser Scoped.

Sinônimos

tempo de vida do serviço

Veja também

Todos os termos de C#