Slovenská verzeSlovensky

wiki Scoped Lifestyle

Miroslav Holec

18. února. 2020

Služba registrovaná do výchozího .NET Core kontejneru (MSDI) může být registrována s lifestyle Scoped. V takovém případě DI kontejner vytvoří instanci dané služby v rámci aktuálního scope a následně tuto instanci znovupoužívá po celou dobu daného scope. Při odbavování požadavku v ASP.NET Core aplikaci je automaticky jako implicitní scope považován Request scope. Další vnořené scopes je možné vytvářet explicitně v rámci odbavení HTTP requestu. Jako Scoped se obvykle registrují služby spojené s Entity Framework Core, díky čemuž je zajištěna konzistence DbContextu po celou dobu řešení HTTP requestu. V závislosti na architektuře aplikace však není (a nemusí) být Scoped vždy vhodnou volbou pro život DbContextu.

Běžné třídy se registrují jako Scoped v případě, kdy jsou v rámci daného scope znovupoužity a bylo by nevýhodné žádat o opakovanou konstrukci třídy. Dále je Scoped lifestyle vhodný pro vytváření instancí, které mají svůj vnitřní stav, který chceme mít dostupný po celou dobu aktuálního scope. V ostatních případech je vhodnější vytvářet instance s krátkou životností, tzv. Transient.


Loading
Otevřít chat