Por que utilizamos o builder.Services.AddSingleton nesse caso de autorização? não poderiamos utilizar o AddScoped?
Por que utilizamos o builder.Services.AddSingleton nesse caso de autorização? não poderiamos utilizar o AddScoped?
Oi Nicolas, tudo bem?
Então, a escolha entre AddSingleton
, AddScoped
e AddTransient
depende muito do ciclo de vida que você deseja para o serviço que está sendo injetado.
Sobre o AddSingleton
, ele cria uma instância única para toda a aplicação e a reutiliza. Isso significa que, uma vez que o serviço é criado, ele é compartilhado e reutilizado entre todas as solicitações e usuários da aplicação.
Já o AddScoped
cria uma instância única para cada solicitação individual. Ou seja, a cada nova solicitação é criado um novo serviço.
No caso específico da classe IdadeAuthorization
, ela foi registrada como AddSingleton
provavelmente porque não há necessidade de criar uma nova instância a cada solicitação. A classe IdadeAuthorization
não mantém estado entre as solicitações, ela apenas verifica a idade do usuário e retorna um resultado. Portanto, é seguro e mais eficiente reutilizar a mesma instância em todas as solicitações.
Se você usasse AddScoped
para IdadeAuthorization
, uma nova instância seria criada a cada solicitação, o que seria um desperdício de recursos, dado que a classe não mantém nenhum estado entre as solicitações.
Um abraço e bons estudos.