Jakie typy cykli życia obiektów istnieją w kontenerze IoC i jak są one stosowane?
sobes.tech AI
Odpowiedź od AI
W kontenerach IoC (Inversion of Control) zwykle używa się następujących typów cykli życia obiektów:
-
Transient (Przejściowy) — za każdym razem, gdy jest żądanie, kontener tworzy nową instancję obiektu. Używany, gdy potrzebny jest nowy obiekt dla każdej operacji.
-
Singleton (Pojedynczy) — kontener tworzy instancję obiektu przy pierwszym żądaniu i zwraca ją we wszystkich kolejnych. Odpowiedni dla usług ze stanem lub zasobów, które muszą być unikalne.
-
Scoped (Zakresowy) — obiekt jest tworzony raz dla określonego zakresu (np. dla żądania w aplikacji webowej) i jest ponownie używany w tym zakresie. Po zakończeniu zakresu obiekt jest niszczony.
Przykład w C# z użyciem Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // nowy obiekt za każdym razem
services.AddSingleton<IService, Service>(); // jeden obiekt na cały cykl życia aplikacji
services.AddScoped<IService, Service>(); // jeden obiekt na każde żądanie HTTP
Wybór cyklu życia zależy od wymagań dotyczących stanu obiektu i wydajności aplikacji.