Sobes.tech
Junior — Middle
93

Dependency Injection-те объектілердің өмірлік циклдері транзиентті, Scoped және синглтон режимдерінде қалай ерекшеленеді?

AI-дан жауап

sobes.tech AI

C# тілінде Dependency Injection (DI) кезінде объектінің өмірлік циклі оның тіркелу режимімен анықталады:

  • Transient (уақытша): әр сұрау кезінде жаңа экземпляр құрылады. Бұл жеңіл, күй сақтамайтын қызметтер үшін қолайлы.

  • Scoped (ауқымда): объект бір ауқымға, әдетте веб-қосымшаларда бір HTTP-сұрауға, тіркеледі. Барлық тәуелділіктер осы сұрауда бірдей экземплярды алады.

  • Singleton (бірегей): объект бірінші сұрауда құрылады және қосымшаның жұмыс уақыты бойы өмір сүреді. Барлық сұраулар бірдей экземплярды алады.

ASP.NET Core-да тіркеу мысалы:

services.AddTransient<IService, Service>(); // әр сұрауда жаңа объект
services.AddScoped<IService, Service>();   // сұрау бойынша бір объект
services.AddSingleton<IService, Service>(); // барлық уақыт бойы бір объект

Демек, режим таңдау объектінің қанша уақыт өмір сүруі керек және ол қалай қолданылатынына байланысты.