Sobes.tech
Middle

За какво се използват методите за конфигуриране на услуги в C#?

sobes.tech AI

Отговор от AI

За да регистрирате зависимости в контейнера за внедряване на зависимости (Dependency Injection container). Това позволява на инфраструктурата на приложението да управлява създаването на екземпляри на услуги и да ги инжектира там, където са необходими.

Основни цели:

  • Управление на жизнения цикъл: Определяне на времето на съществуване на екземпляра на услугата (Singleton, Scoped, Transient).
  • Декуплирана архитектура: Намаляване на зависимостта между компонентите чрез използване на абстракции (интерфейси).
  • Тестване: Лесна замяна на реализации на услуги за модулно тестване.
  • Конфигурируемост: Възможност за замяна на една реализация с друга без промяна на клиентския код.

Пример за регистрация на услуги в ASP.NET Core:

// Startup.cs или Program.cs в Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Регистрация на услуга с жизнен цикъл Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Регистрация на услуга с жизнен цикъл Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Регистрация на услуга с жизнен цикъл Transient
    services.AddTransient<ITransientService, TransientService>();

    // Регистрация на MVC и други стандартни услуги
    services.AddControllersWithViews();
}

Жизнени цикли на услугите:

Животен цикъл Описание Примери в рамките на един HTTP заявка
Singleton Един екземпляр за цялото време на работа на приложението. Един
Scoped Един екземпляр за времето на заявката (в HTTP контекста). Един
Transient Нов екземпляр се създава при всяка заявка. Множество (при всяко инжектиране)