Sobes.tech
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)