Кадом намудҳои давраи ҳаёти объектҳо дар контейнери IoC вуҷуд доранд ва онҳо чӣ гуна истифода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар IoC (Inversion of Control) контейнерҳо одатан дар истифодаи намудҳои зерин дар бораи ҳаёти объектҳо истифода мешаванд:
-
Transient (Мавсими кӯтоҳ) — ҳар вақте ки дархост карда мешавад, контейнер як нусхаи навро месозад. Вай барои ҳар амалиёт, ки ба он ниёз дорад, истифода мешавад.
-
Singleton (Ягона) — контейнер дархости аввалро дар бораи сохтани як нусхаи объект мекунад ва онро дар ҳама дархостҳои оянда бармегардонад. Барои хизматрасониҳо бо ҳолат ё захираҳое, ки бояд ягона бошанд, мувофиқ аст.
-
Scoped (Ҳудудӣ) — объект як бор барои ҳудуди муайян (масалан, барои ҳар дархости веб) сохта мешавад ва дар дохили он ҳудуд такрор истифода мешавад. Пас аз анҷоми ҳудуд, объект нобуд мешавад.
Масалан дар C# бо истифодаи Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // объект нав ҳар вақт
services.AddSingleton<IService, Service>(); // як объект дар тамоми давраи ҳаёти барнома
services.AddScoped<IService, Service>(); // як объект барои ҳар дархости HTTP
Интихоби ҳаёти объект вобаста ба талаботҳои ҳолати объект ва самаранокии барнома мебошад.