Programování

Jak používat ukládání do mezipaměti v paměti ASP.NET Core

ASP.NET Core je štíhlý a modulární rámec, který lze použít k vytváření vysoce výkonných moderních webových aplikací v systémech Windows, Linux nebo MacOS. Na rozdíl od starší technologie ASP.NET nemá technologie ASP.NET Core a Mezipaměti objekt. ASP.NET Core však poskytuje podporu pro několik různých typů ukládání do mezipaměti, včetně ukládání do mezipaměti v paměti, distribuovaného ukládání do mezipaměti a ukládání do mezipaměti odpovědí.

V tomto článku se podíváme na to, jak můžete zvýšit výkon a škálovatelnost své aplikace ASP.NET Core uložením občasných změn dat v mezipaměti v paměti. Jako vždy uvedu příklady kódu, které ilustrují diskutované koncepty.

Jak povolit ukládání do mezipaměti v paměti v ASP.NET Core

Mezipaměť v paměti v ASP.NET Core je služba, kterou můžete začlenit do své aplikace pomocí vkládání závislostí. Jakmile vytvoříte projekt ASP.NET Core v sadě Visual Studio, můžete povolit mezipaměť v paměti v Konfigurovat služby metoda v Spuštění třída, jak je uvedeno v úryvku kódu níže.

public void ConfigureServices (služby IServiceCollection)

{

services.AddMvc ();

services.AddMemoryCache ();

}

Chcete-li pracovat s mezipamětí v paměti v ASP.NET Core, musíte použít IMemoryCache rozhraní. Vypadá to takto:

veřejné rozhraní IMemoryCache: IDisposable

{

bool TryGetValue (klíč objektu, hodnota out objektu);

ICacheEntry CreateEntry (klíč objektu);

void Remove (klíč objektu);

}

Můžete zaregistrovat IMemoryCache vConfigServices metoda pomocí AddMemoryCache metoda, kterou jsme zkoumali výše. Pak byste měli vložit objekt mezipaměti do konstruktoru vaší třídy řadiče, jak je znázorněno v úryvku kódu níže.

  soukromá mezipaměť IMemoryCache;

veřejná CacheController (mezipaměť IMemoryCache)

        {

this.cache = cache;

        }

A to je vše, co musíte udělat, abyste ve své aplikaci ASP.NET Core nastavili podporu pro ukládání do mezipaměti v paměti. V části, která následuje, se podíváme na to, jak můžeme pracovat s API mezipaměti v ASP.NET Core k ukládání a načítání objektů.

Jak ukládat a načítat objekty pomocí technologie ASP.NET Core IMemoryCache

Chcete-li uložit objekt pomocí IMemoryCache rozhraní, které potřebujete použít Soubor() metoda, jak je uvedeno v úryvku kódu níže. Všimněte si, že verze Soubor() metoda, kterou jsme použili v tomto příkladu, přijímá dva parametry. Prvním parametrem je název klíče a druhým parametrem je hodnota, tj. Objekt, který má být uložen v mezipaměti a který lze identifikovat pomocí klíče.

[HttpGet]

veřejný řetězec Get ()

        {

cache.Set („Klíč“, DateTime.Now.ToString ());

návrat „Toto je testovací metoda ...“;

        }

Chcete-li načíst položku z mezipaměti, můžete využít Dostat() metoda, jak je uvedeno níže.

  [HttpGet („{key}“)]

public string Get (řetězec klíč)

        {

návrat cache.Get (klíč);

        }

Můžete použít TryGet () metoda na objektu mezipaměti ke kontrole, zda zadaný klíč existuje v mezipaměti. Zde je upravená verze našeho Dostat metoda, která ilustruje, jak toho lze dosáhnout.

 [HttpGet]

veřejný řetězec Get ()

        {

řetězec klíč;

řetězec obj;

if (! cache.TryGetValue (key, out obj))

            {

obj = DateTime.Now.ToString ();

cache.Set (key, obj);

            }

návrat obj;

        }

Existuje další metoda zvaná GetOrCreate, které lze použít k načtení dat uložených v mezipaměti na základě poskytnutého klíče. Pokud klíč neexistuje, metoda ho vytvoří.

[HttpGet]

veřejný řetězec Get ()

        {

vrátit cache.GetOrCreate („klíč“,

cacheEntry => {

vrátit DateTime.Now.ToString ();

                         });

        }

Všimněte si, že je k dispozici asynchronní verze této metody s názvem GetOrCreateAsync. Zde je kompletní seznam našich kódů CacheController třída pro vaši referenci.

pomocí systému;

pomocí Microsoft.AspNetCore.Mvc;

pomocí Microsoft.Extensions.Caching.Memory;

jmenný prostor InMemoryCaching.Controllers

{

[Route (“api / [controller]”)]]

veřejná třída CacheController: Controller

    {

soukromá mezipaměť IMemoryCache;

veřejná CacheController (mezipaměť IMemoryCache)

        {

this.cache = cache;

        }

[HttpGet]

veřejný řetězec Get ()

        {

vrátit cache.GetOrCreate („klíč“,

cacheEntry => {

vrátit DateTime.Now.ToString ();

                         });

        }

    }

}

Jak nastavit zásady vypršení platnosti u dat uložených v mezipaměti v ASP.NET Core

U dat uložených v mezipaměti můžete nastavit zásady absolutního a posuvného vypršení platnosti. Zatímco první se používá k určení doby, po kterou by se měl objekt nacházet v mezipaměti, druhý se používá k určení doby, po kterou se bude objekt nacházet v mezipaměti, když není žádná aktivita - tj. Položka bude odstraněna z mezipaměť, když uplyne zadaná doba nečinnosti.

Chcete-li nastavit zásady vypršení platnosti, použijte MemoryCacheEntryOptions třída, jak je uvedeno v úryvku kódu níže.

MemoryCacheEntryOptions cacheExpirationOptions = nový MemoryCacheEntryOptions ();

cacheExpirationOptions.AbsoluteExpiration = DateTime.Now.AddMinutes (30);

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

cache.Set („Klíč“, DateTime.Now.ToString (), cacheExpirationOptions);

Všimněte si použití Přednost majetek na MemoryCacheEntryOptions instance ve fragmentu kódu výše. The Přednost Vlastnost určuje, které objekty (na základě již nastavené priority) by měly být odstraněny z mezipaměti jako součást strategie modulu runtime k získání paměti, kdykoli dojde webovému serveru místo v paměti.

K nastavení priority jsme použili CacheItemPriority výčet Může mít jednu z těchto možných hodnot: Nízká, Normální, Vysoká a NeverRemove. Poskytovatel mezipaměti v paměti v ASP.NET Core odstraní položky mezipaměti, pokud je pod tlakem paměti, pokud jste nenastavili prioritu mezipaměti CacheItemPriority.NeverRemove.

Můžete také chtít zaregistrovat zpětné volání, které se provede, kdykoli je položka odstraněna z mezipaměti. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

cacheExpirationOptions.RegisterPostEvictionCallback

(CacheItemChangedHandler, toto);

Můžete dokonce nastavit závislosti mezi objekty v mezipaměti. Jako příklad můžete chtít odebrat určité položky z mezipaměti, pokud byla odstraněna nějaká související položka. Prozkoumáme to dále a mnoho dalších funkcí ukládání do mezipaměti v ASP.NET Core v mých budoucích příspěvcích zde. Do té doby se možná budete chtít podívat na příslušné stránky v dokumentaci Microsoft ASP.NET Core.

Jak udělat více v ASP.NET a ASP.NET Core:

  • Jak používat ukládání do mezipaměti v paměti ASP.NET Core
  • Jak zpracovat chyby v ASP.NET Web API
  • Jak předat více parametrů metodám webového kontroleru API
  • Jak protokolovat metadata požadavků a odpovědí ve webovém rozhraní API ASP.NET
  • Jak pracovat s HttpModules v ASP.NET
  • Pokročilé správy verzí v ASP.NET Core Web API
  • Jak používat vkládání závislostí v ASP.NET Core
  • Jak pracovat s relacemi v ASP.NET
  • Jak pracovat s HTTPHandlers v ASP.NET
  • Jak používat IHostedService v ASP.NET Core
  • Jak využívat službu WCF SOAP v ASP.NET Core
  • Jak zlepšit výkon aplikací ASP.NET Core
  • Jak konzumovat webové rozhraní API ASP.NET Core pomocí RestSharp
  • Jak pracovat s protokolováním v ASP.NET Core
  • Jak používat MediatR v ASP.NET Core
  • Jak pracovat se stavem relace v ASP.NET Core
  • Jak používat Nancy v ASP.NET Core
  • Vysvětlení vazby parametrů v ASP.NET Web API
  • Jak nahrávat soubory v ASP.NET Core MVC
  • Jak implementovat globální zpracování výjimek ve webovém rozhraní API ASP.NET Core
  • Jak implementovat kontroly stavu v ASP.NET Core
  • Osvědčené postupy při ukládání do mezipaměti v ASP.NET
  • Jak používat zasílání zpráv Apache Kafka v .NET
  • Jak povolit CORS ve vašem webovém rozhraní API
  • Kdy použít WebClient vs. HttpClient vs. HttpWebRequest
  • Jak pracovat s Redis Cache v .NET
  • Kdy použít Task.WaitAll vs. Task.WhenAll v .NET