Sobes.tech
Junior — Middle

Quali tipi di cicli di vita degli oggetti esistono nel contenitore IoC e come vengono applicati?

sobes.tech AI

Risposta dell'AI

Nei contenitori IoC (Inversion of Control), vengono generalmente utilizzati i seguenti tipi di cicli di vita degli oggetti:

  1. Transiente — ogni volta che viene richiesta, il contenitore crea una nuova istanza dell'oggetto. Viene usato quando è necessario un nuovo oggetto per ogni operazione.

  2. Singleton — il contenitore crea un'istanza dell'oggetto alla prima richiesta e la restituisce per tutte le richieste successive. Adatto per servizi con stato o risorse che devono essere unici.

  3. Scoped — l'oggetto viene creato una volta per uno scope definito (ad esempio, per richiesta in un'applicazione web) e riutilizzato all'interno di questo scope. Dopo la fine dello scope, l'oggetto viene distrutto.

Esempio in C# usando Microsoft.Extensions.DependencyInjection:

services.AddTransient<IService, Service>(); // nuovo oggetto ogni volta
services.AddSingleton<IService, Service>(); // un oggetto per tutta la durata dell'applicazione
services.AddScoped<IService, Service>(); // un oggetto per ogni richiesta HTTP

La scelta del ciclo di vita dipende dai requisiti di stato dell'oggetto e dalle prestazioni dell'applicazione.