DEV Community

Javohir Aliyev
Javohir Aliyev

Posted on

Dependency Container va Service Lifetimes

Ingliz tilini bimaydigan o’quvchilar uchun tarjimadan boshlasak, “dependency” so’zi aslida “qaramlik” degan ma’noni bildiradi, va dasturlash konteksida bu bir biriga qaram ya’ni bir birisiz faoliyat olib borolmaydigan kod blokini anglatadi. Dependency Container esa “qaramlik”ni tashib yuruvchi konteyner - ya’ni bir marta yaratib olingan qarammlikdan qayta-qayta foydalana olish imkonini beruvchi xususiyat.

Xo’p, unda Service Lifetimes nima? Tarjimasi til bilmaydiganlar uchun ham sezilarli baryer tug’dirmaydi: “xizmat yashash davomiyligi” ya’nii bir marta ishga tushurilgan xizmat qancha vaqt bizga xizmat qiladi.

Service Lifetime’lar 3 turga bo’linadi:

  1. Transient
  2. Scoped
  3. Singleton

Transient.

Transient xizmatlar har safar chaqirilganda yangi instance ochiladi. Bu xotiraga ko’proq “nagruzka” tushurgani bilan, thread-safe va isolated holatda ishlaydi. Transient servis lifetime’ni xuddi taksi chaqirishga o’xshatsa bo’ladi - har safar taksi chaqirganingizda har safar boshqa taksi keladi. Keyingi misollarni o’qiganingizda bunisini ham yaxshiroq tushunib olasiz, quyida esa Transient servislar qanday registratsiya qilinishini ko’rishingiz mumkin:

C# dasturlash tilida transient servis qo'shish

Scoped.

Scoped servislar, nomidan taxmin qilish mumkin bo’lganidek, ma’lum qamrovdagina ishlab, keyin tugatiladigan servis instance’laridir. Buni xuddi restoranda sizga xizmat ko’rsatadigan ofitsiantga o’xshatish mumkin, borganingizda sizga biriktirilgan ofitsiant restorandan ketguningizga qadar xizmat ko’rsatadi. Scoped servislar quyidagicha registratsiya qilinadi:

C# dasturlash tilida scoped servis qo'shish

Singleton.

Singleton xizmatlar bu eng uzor “umr” kechiradigan xizmat - bir marta instance yaratiladi va shu dastur uchun ma’lum xizmatni faqat shu instance ta’minlab beradi. Buni xuddi oilaviy shifokorga o’xshatish mumkin - shifokor xizmati kerak bo’lganda faqat bir kishi bizga xizmat ko’rsatadi. Va har safar shu narsa davom etadi - boshqa Service Lifetime’larga o’xshab bir marta yoki cheklangan ma’lum muddat uchun emas, balki doimiy bitta bo’ladi bizga xizmat ko’rsatuvchi instance. Quyida esa singleton servisni registratsiya qilish uchun kod:

C# dasturlash tilida singleton servis qo'shish

Top comments (0)