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