Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida utilização do AddSingleton no processo do (.NET 6 e Identity: implementando controle de usuário)

Boa noite tudo bom?

Sei que é uma dúvida aparentemente tola, mas acabei ficando com ela

Sei que o Scoped se refere ao processo de uma requireção e o mesmo termina todos os processo dentro dela, mas fiquei na dúvido do porque o professor utilizou o AddSingleton para poder realizar a injeção do IdadeAuthorization, e porque ele utilizou dessa forma, no vídeo ele somente usa mas explica o porque utilizou dessa forma

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Oii Erick, tudo bem?

No ASP.NET Core, os serviços podem ser registrados com diferentes tempos de vida: Transient, Scoped e Singleton. Cada um desses tempos de vida serve para diferentes propósitos e escolher o correto é crucial para o desempenho e comportamento correto da aplicação.

  • Transient: Uma nova instância é criada cada vez que um serviço é solicitado.
  • Scoped: Uma instância é criada por requisição no escopo do HTTP.
  • Singleton: Uma única instância é criada e compartilhada em toda a aplicação.

No caso do AddSingleton, como você mencionou, ele é usado quando queremos que uma instância de um serviço seja criada uma única vez e reutilizada durante toda a vida útil da aplicação. Isso é útil para serviços que mantêm um estado que deve ser consistente ou para operações que são pesadas e não precisam ser refeitas a cada requisição.

Agora, especificamente sobre o uso de AddSingleton para IdadeAuthorization, isso geralmente é feito porque o handler de autorização (neste caso, IdadeAuthorization) não mantém estado que dependa de uma requisição específica e não precisa ser criado repetidamente. Handlers de autorização são bons candidatos para serem Singletons porque eles apenas recebem informações e decidem se a autorização é concedida ou não, sem guardar informações entre chamadas.

Então, o uso de AddSingleton neste contexto ajuda a otimizar a aplicação, evitando a criação desnecessária de instâncias desse handler a cada requisição, o que seria um desperdício de recursos.

Um abraço e bons estudos.