Middle
C# да кызматтарды конфигурациялоо ыкмалары эмне үчүн колдонулат?
sobes.tech AI
AIден жооп
Тәуелсіздік контейнеринде тәуелділіктерді тіркеу. Бұл қосымшаның инфрақұрылымына қызметтердің мысалдарын құруды басқаруға және оларды қажетті жерлерге енгізуге мүмкіндік береді.
Негізгі мақсаттар:
- Өмірлік циклді басқару: Қызмет мысалының өмір сүру уақытын анықтау (Singleton, Scoped, Transient).
- Ажыратылған архитектура: Абстракциялар (интерфейстер) арқылы компоненттер арасындағы байланысты азайту.
- Тестілеу мүмкіндігі: Модульдік тестілеу үшін қызметтердің жүзеге асырылуын оңай ауыстыру.
- Конфигурациялау: Бір жүзеге асыруды басқаға ауыстыру мүмкіндігі, клиенттік кодты өзгеріссіз.
ASP.NET Core-да қызметтерді тіркеу мысалы:
// Startup.cs немесе Program.cs - Minimal API-ларда
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 | Сұрау уақытында бір мысал | Бір |
| Transient | Әр сұрауда жаңа мысал құрылады | Көп (әр енгізу кезінде) |