.Net – Scoped, transient e singleton

Vejo bastante gente com dificuldade em entender a diferença entre os principais tipos de lifecycle quando falamos sobre injeção de dependência em .net. Criei um exemplo no GitHub e vou falar sobre ele.

Basicamente criei 3 serviços bastante simples e p…


This content originally appeared on DEV Community and was authored by 👨‍💻 Lucas Silva

Vejo bastante gente com dificuldade em entender a diferença entre os principais tipos de lifecycle quando falamos sobre injeção de dependência em .net. Criei um exemplo no GitHub e vou falar sobre ele.

Basicamente criei 3 serviços bastante simples e parecidos (apenas para fins didáticos) e os injetei utilizando AddSingleton, AddScoped e AddTransient.
Injeção dos serviços no arquivo Program.cs

Esses serviços só possuem uma propriedade, o Id, que é criada no momento da instanciação.
Criei um controller e injetei os serviços por construtor.Injeção dos serviços no construtor

Também injetei uma instância do serviço em cada método.
Injeção dos serviços em cada método

Singleton

O serviço é criado uma única vez e a mesma instância é passada para todas as chamadas dele. Veja que o id, criado no momento da instanciação, foi o mesmo (e continua sendo o mesmo independente da requisição):
Imagem mostra que uma única instância foi criada

Scoped

Uma única instância é criada por requisição. Então se o serviço for chamado em vários lugares em uma única requisição, a mesma instância será passada. Outras instâncias serão criadas para as próximas requisições.

Mesma requisição:
Imagem mostra que uma única instância foi criada

Requisição diferente:
Imagem mostra que uma nova instância foi criada para uma segunda requisição

Transient

Ele é o mais custoso, pois se o serviço for chamado em diversas classes, cada uma delas terá uma instância diferente:
Imagem mostra que uma instância foi criada para cada chamada do serviço


This content originally appeared on DEV Community and was authored by 👨‍💻 Lucas Silva


Print Share Comment Cite Upload Translate Updates
APA

👨‍💻 Lucas Silva | Sciencx (2022-04-19T11:39:02+00:00) .Net – Scoped, transient e singleton. Retrieved from https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/

MLA
" » .Net – Scoped, transient e singleton." 👨‍💻 Lucas Silva | Sciencx - Tuesday April 19, 2022, https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/
HARVARD
👨‍💻 Lucas Silva | Sciencx Tuesday April 19, 2022 » .Net – Scoped, transient e singleton., viewed ,<https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/>
VANCOUVER
👨‍💻 Lucas Silva | Sciencx - » .Net – Scoped, transient e singleton. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/
CHICAGO
" » .Net – Scoped, transient e singleton." 👨‍💻 Lucas Silva | Sciencx - Accessed . https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/
IEEE
" » .Net – Scoped, transient e singleton." 👨‍💻 Lucas Silva | Sciencx [Online]. Available: https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/. [Accessed: ]
rf:citation
» .Net – Scoped, transient e singleton | 👨‍💻 Lucas Silva | Sciencx | https://www.scien.cx/2022/04/19/net-scoped-transient-e-singleton/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.