Middle
C# da xizmatlarni sozlash usullari nima uchun ishlatiladi?
sobes.tech AI
AIdan javob
Ba'zi bog'lanishlarni Dependency Injection konteyneriga ro'yxatdan o'tkazish uchun. Bu, ilova infratuzilmasiga xizmatlar nusxalarini yaratishni boshqarish va ularni kerakli joylarga in'ektsiya qilish imkonini beradi.
Asosiy maqsadlar:
- Hayot aylanishini boshqarish: Xizmat nusxasining mavjud bo'lish vaqtini belgilash (Singleton, Scoped, Transient).
- Ajralgan arxitektura: Komponentlar o'rtasidagi bog'liqlikni kamaytirish uchun abstraktsiyalar (interfeyslar) dan foydalanish.
- Test qilish imkoniyati: Birlik testlari uchun xizmatlar implementatsiyalarini oson almashtirish.
- Konfiguratsiya qilish: Mijoz kodini o'zgartirmasdan bir implementatsiyani boshqasiga almashtirish imkoniyati.
ASP.NET Core'da xizmatlarni ro'yxatdan o'tkazish misoli:
// Startup.cs yoki Minimal API'lar uchun Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Singleton hayot aylanishi bilan xizmatni ro'yxatdan o'tkazish
services.AddSingleton<ISingletonService, SingletonService>();
// Scoped hayot aylanishi bilan xizmatni ro'yxatdan o'tkazish
services.AddScoped<IScopedService, ScopedService>();
// Transient hayot aylanishi bilan xizmatni ro'yxatdan o'tkazish
services.AddTransient<ITransientService, TransientService>();
// MVC va boshqa standart xizmatlarni ro'yxatdan o'tkazish
services.AddControllersWithViews();
}
Xizmatlarning hayot aylanishi:
| Hayot aylanishi | Tavsifi | Bir so'rov (HTTP) doirasidagi nusxalar |
|---|---|---|
| Singleton | Dastur davomida bitta nusxa. | Bitta |
| Scoped | So'rov davomida (HTTP kontekstida) bitta nusxa. | Bitta |
| Transient | Har so'rovda yangi nusxa yaratiladi. | Bir nechta (har in'ektsiyada) |