Milyen típusú életciklusok léteznek az IoC konténerben, és hogyan alkalmazzák őket?
sobes.tech MI
Válasz az MI-től
Az IoC (Inversion of Control) konténerekben általában a következő objektum életciklus típusokat használják:
-
Átmeneti (Transient) — minden kérésnél a konténer új példányt hoz létre az objektumból. Akkor használjuk, amikor minden művelethez szükség van egy új objektumra.
-
Singleton (Egységes) — a konténer az első kérésnél létrehoz egy példányt az objektumból, és azt adja vissza minden további kérésnél. Akkor ideális, ha az objektumnak állapota van, vagy erőforrásokat kell megosztani.
-
Scoped (Hatókör szerinti) — az objektum egyszer jön létre egy meghatározott scope-hoz (pl. egy webkéréshez), és ezen belül újra felhasználható. A scope végén az objektum megsemmisül.
Példa C#-ban a Microsoft.Extensions.DependencyInjection használatával:
services.AddTransient<IService, Service>(); // minden kérésnél új objektum
services.AddSingleton<IService, Service>(); // az alkalmazás teljes életciklusa alatt egy példány
services.AddScoped<IService, Service>(); // minden HTTP kéréshez egy példány
A választott életciklus az objektum állapotának és az alkalmazás teljesítményének követelményeitől függ.