Sobes.tech
Junior — Middle

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:

  1. Á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.

  2. 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.

  3. 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.