Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.

  3. 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.