Junior — Middle
Дар бораи фарқияти байни соҳаи намоёнӣ ё Scoped ва Transient дар контексти Dependency Injection чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
Дар контексти на Dependency Injection в C#, соҳаву Scoped ва Transient муайян мекунанд вақти зиндагии объектҳои сохташуда:
-
Transient: объект ҳар дафъа нав сохта мешавад, вақте ки талаб карда мешавад. Ин маъно дорад, ки дар ҳар даъвати хизмат ё дар зерикунии он, намунаи нав эҷод мешавад.
-
Scoped: объект як бор дар давоми вақти як дархост (scope) сохта мешавад. Дар барномаҳои веб, ин одатан маънои онро дорад, ки дар дохили як дархости HTTP, ҳамон намуна истифода мешавад, аммо барои дархости дигар, намунаи нав эҷод мешавад.
Масалан:
services.AddTransient<IMyService, MyService>(); // объект нав дар ҳар дархост
services.AddScoped<IMyService, MyService>(); // як объект барои ҳар дархости HTTP
Бинобар ин, Scoped барои нигоҳ доштани ҳолат дар дохили як дархост қулай аст, ва Transient барои хизматрасониҳои беҳолат (stateless), ки ҳар дафъа намунаи нав лозим аст, мувофиқ аст.