Sobes.tech
Back to questions
Junior — Middle
72

Какие типы жизненных циклов объектов существуют в IoC контейнере, и как они применяются?

Companies where asked
Банк ПСБ

Answer from AI

sobes.tech AI

В IoC (Inversion of Control) контейнерах обычно используются следующие типы жизненных циклов объектов:

  1. Transient (Временный) — каждый раз при запросе контейнер создает новый экземпляр объекта. Используется, когда нужен новый объект для каждой операции.

  2. Singleton (Одиночка) — контейнер создает один экземпляр объекта при первом запросе и возвращает его при всех последующих. Подходит для сервисов с состоянием или ресурсов, которые должны быть уникальными.

  3. Scoped (Область видимости) — объект создается один раз на определенный scope (например, на запрос в веб-приложении) и переиспользуется в рамках этого scope. После завершения scope объект уничтожается.

Пример в C# с использованием Microsoft.Extensions.DependencyInjection:

services.AddTransient<IService, Service>(); // новый объект каждый раз
services.AddSingleton<IService, Service>(); // один объект на весь жизненный цикл приложения
services.AddScoped<IService, Service>(); // один объект на каждый HTTP-запрос

Выбор жизненного цикла зависит от требований к состоянию объекта и производительности приложения.