¿En qué se diferencia el ámbito de los objetos Scoped de Transient en el contexto de la inyección de dependencias?
sobes.tech AI
Respuesta de la IA
En el contexto de la inyección de dependencias en C#, el ámbito de alcance Scoped y Transient determina el tiempo de vida de los objetos creados:
-
Transient: el objeto se crea cada vez que se solicita. Esto significa que en cada llamada al servicio o inyección se creará una nueva instancia.
-
Scoped: el objeto se crea una sola vez durante el tiempo de una solicitud (scope). En aplicaciones web, esto generalmente significa que durante una misma solicitud HTTP se usará la misma instancia, pero para otra solicitud se creará una nueva.
Ejemplo:
services.AddTransient<IMyService, MyService>(); // nuevo objeto en cada solicitud
services.AddScoped<IMyService, MyService>(); // un objeto por solicitud HTTP
Por lo tanto, Scoped es conveniente para mantener estado durante una sola solicitud, y Transient para servicios sin estado (stateless), donde se necesita una nueva instancia cada vez.