Quais são os ciclos de vida de uma aplicação .NET?

Publicado em:

Para trabalharmos com injeção de dependência, e manter o código mais flexível e testável com .NET é importantíssimo entender como os ciclos de vida da aplicação funcionam. O ciclo de vida é a definição de por quanto tempo e o como uma instância será compartilhada entre diferentes componentes e requests.

Existem três ciclos de vida:
1 – Transient: Uma nova instância será criada cada vez que um serviço for requisitado, isso significa que uma nova instância é criada cada vez que for injetado em um controller ou serviço. Esse tipo de ciclo é excelente em casos de uso stateless (quando a aplicação ou processo não retem informações). Quando o processo é finalizado, todos os dados utilizados são descartados.

2 – Scoped: Uma única instância é criada e compartilhada no mesmo request. Ideal quando precisamos manter alguma informação durante o mesmo request, por exemplo o contexto de comunicação com o banco de dados.

3 – Singleton: Uma única instância é criada e compartilhada por toda a aplicação. Ideal para serviços globais ou operações que não mudam com frequência, exemplo: log, cache ou configurações.

Entender e saber como escolher entre esses três ciclos, garante um melhor uso dos recursos e eficiência. Um erro na escolha pode gerar problemas como memory leak e comportamentos inesperados. É importante experimentar e praticar o uso e contexto em que cada um desses ciclos deve ser usado para saber como cada um afeta a aplicação.

Confira o código que fiz para exemplificar clicando aqui.