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 | Нов екземпляр се създава при всяка заявка. | Множество (при всяко инжектиране) |