Programiranje

Kako uporabljati predpomnjenje v pomnilniku v ASP.NET Core

ASP.NET Core je vitko in modularno ogrodje, ki se lahko uporablja za izdelavo visoko zmogljivih, sodobnih spletnih aplikacij v sistemih Windows, Linux ali MacOS. Za razliko od starejše ASP.NET, ASP.NET Core nima predpomnilnik predmet. Vendar ASP.NET Core ponuja podporo za več različnih vrst predpomnjenja, vključno s predpomnjenjem v pomnilniku, porazdeljenim predpomnjenjem in predpomnjenjem odzivov.

V tem članku bomo preučili, kako lahko izboljšate zmogljivost in razširljivost svoje aplikacije ASP.NET Core tako, da redko spreminjate podatke v predpomnilniku pomnilnika. Kot ponazoritev konceptov bom vključil primere kode.

Kako omogočiti predpomnjenje v pomnilniku v ASP.NET Core

Predpomnilnik v pomnilniku v ASP.NET Core je storitev, ki jo lahko v aplikacijo vključite z vbrizganjem odvisnosti. Ko v Visual Studio ustvarite projekt ASP.NET Core, lahko omogočite predpomnilnik v pomnilniku ConfigureServices metoda v Začeti razred, kot je prikazano v spodnjem delčku kode.

public void ConfigureServices (storitve IServiceCollection)

{

services.AddMvc ();

services.AddMemoryCache ();

}

Za delo s predpomnilnikom v pomnilniku v ASP.NET Core morate uporabiti IMemoryCache vmesnik. Evo, kako izgleda:

javni vmesnik IMemoryCache: IDisposable

{

bool TryGetValue (predmetni ključ, zunanja vrednost predmeta);

ICacheEntry CreateEntry (predmetni ključ);

void Odstrani (predmetni ključ);

}

Lahko registrirate IMemoryCache vConfigServices metoda z uporabo AddMemoryCache metoda, ki smo jo preučili zgoraj. Nato vbrizgajte objekt predpomnilnika v konstruktor razreda vašega krmilnika, kot je prikazano v spodnjem delčku kode.

  zasebni predpomnilnik IMemoryCache;

javni CacheController (predpomnilnik IMemoryCache)

        {

this.cache = predpomnilnik;

        }

In to je vse, kar morate storiti, da v aplikaciji ASP.NET Core nastavite podporo za predpomnjenje v pomnilniku. V naslednjem razdelku bomo preučili, kako lahko z API-jem predpomnilnika v ASP.NET Core delamo za shranjevanje in pridobivanje predmetov.

Kako shraniti in pridobiti predmete z uporabo ASP.NET Core IMemoryCache

Za shranjevanje predmeta s pomočjo IMemoryCache vmesnik, ki ga potrebujete za uporabo Nastavi () metoda, kot je prikazano v spodnjem delčku kode. Upoštevajte, da je različica Nastavi () metoda, ki smo jo uporabili v tem primeru, sprejema dva parametra. Prvi parameter je ime ključa, drugi pa vrednost, tj. Objekt, ki ga je treba shraniti v predpomnilnik in ga je mogoče identificirati s ključem.

[HttpGet]

javni niz Get ()

        {

cache.Set (“Ključ”, DateTime.Now.ToString ());

return "To je testna metoda ...";

        }

Če želite predmet pridobiti iz predpomnilnika, lahko izkoristite Pridobite () metoda, kot je prikazano spodaj.

  [HttpGet (“{key}”)]

javni niz Get (ključ niza)

        {

return cache.Get (ključ);

        }

Lahko uporabite TryGet () na predpomnilniku, da preveri, ali določen ključ obstaja v predpomnilniku. Tukaj je spremenjena različica našega Pojdi metoda, ki ponazarja, kako je to mogoče doseči.

 [HttpGet]

javni niz Get ()

        {

niz ključ;

niz obj;

if (! cache.TryGetValue (ključ, ven obj))

            {

obj = DateTime.Now.ToString ();

cache.Set (key, obj);

            }

vrni obj;

        }

Obstaja še ena metoda, imenovana GetOrCreate, ki se lahko uporablja za pridobivanje predpomnjenih podatkov na podlagi vnesenega ključa. Če ključ ne obstaja, ga metoda ustvari.

[HttpGet]

javni niz Get ()

        {

return cache.GetOrCreate (“Ključ”,

cacheEntry => {

vrni DateTime.Now.ToString ();

                         });

        }

Upoštevajte, da je na voljo asinhrona različica te metode, imenovana GetOrCreateAsync. Tukaj je celoten seznam naših kod CacheController za vašo referenco.

z uporabo sistema;

z uporabo Microsoft.AspNetCore.Mvc;

z uporabo Microsoft.Extensions.Caching.Memory;

imenski prostor InMemoryCaching.Controllers

{

[Pot (“api / [krmilnik]”)]

javni razred CacheController: krmilnik

    {

zasebni predpomnilnik IMemoryCache;

javni CacheController (predpomnilnik IMemoryCache)

        {

this.cache = predpomnilnik;

        }

[HttpGet]

javni niz Get ()

        {

return cache.GetOrCreate (“Ključ”,

cacheEntry => {

vrni DateTime.Now.ToString ();

                         });

        }

    }

}

Kako nastaviti politike veljavnosti za predpomnjene podatke v ASP.NET Core

Upoštevajte, da lahko za predpomnjene podatke nastavite pravilnike o absolutnem in drsnem poteku veljavnosti. Medtem ko se prvi uporablja za določanje trajanja, v katerem naj bo predmet v predpomnilniku, se drugi uporablja za določanje trajanja, v katerem bo predmet v predpomnilniku, ko ni dejavnosti - tj. Element bo odstranjen iz predpomnilnik, ko poteče določeno trajanje neaktivnosti.

Če želite nastaviti politike veljavnosti, uporabite MemoryCacheEntryOptions razred, kot je prikazano v spodnjem delčku kode.

MemoryCacheEntryOptions cacheExpirationOptions = novo MemoryCacheEntryOptions ();

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

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

cache.Set (“Key”, DateTime.Now.ToString (), cacheExpirationOptions);

Upoštevajte uporabo Prednostna naloga nepremičnine na MemoryCacheEntryOptions primerek v zgornjem delčku kode. The Prednostna naloga lastnost določa, katere predmete (na podlagi že nastavljene prioritete) je treba odstraniti iz predpomnilnika kot del strategije izvajalnega časa za povrnitev pomnilnika, kadar spletnemu strežniku zmanjka prostora.

Za določitev prioritete smo uporabili CacheItemPriority enum. To ima lahko eno od teh možnih vrednosti: Low, Normal, High in NeverRemove. Ponudnik predpomnilnika v pomnilniku v ASP.NET Core bo odstranil vnose v predpomnilnik, če je pod pritiskom pomnilnika, razen če niste nastavili prednost predpomnilnika na CacheItemPriority.NeverRemove.

Morda boste želeli registrirati tudi povratni klic, ki se bo izvedel vsakič, ko bo element odstranjen iz predpomnilnika. Naslednji delček kode prikazuje, kako je to mogoče doseči.

cacheExpirationOptions.RegisterPostEvictionCallback

(CacheItemChangedHandler, to);

Med predpomnjenimi predmeti lahko celo nastavite odvisnosti. Kot primer boste morda želeli odstraniti nekatere predmete iz predpomnilnika, če je bil odstranjen kakšen povezan element. To in številne druge značilnosti predpomnjenja v ASP.NET Core bomo raziskali v naslednjih objavah tukaj. Do takrat boste morda želeli pogledati ustrezne strani v Microsoftovi dokumentaciji ASP.NET Core.

Kako narediti več v ASP.NET in ASP.NET Core:

  • Kako uporabljati predpomnjenje v pomnilniku v ASP.NET Core
  • Kako ravnati z napakami v spletnem API-ju ASP.NET
  • Kako prenesti več parametrov v metode krmilnika spletnega API-ja
  • Kako zapisati metapodatke zahtev in odzivov v spletni API ASP.NET
  • Kako delati s HttpModules v ASP.NET
  • Napredno spreminjanje različic v ASP.NET Core Web API
  • Kako uporabiti vbrizgavanje odvisnosti v ASP.NET Core
  • Kako delati s sejami v ASP.NET
  • Kako delati z HTTPHandlers v ASP.NET
  • Kako uporabljati IHostedService v ASP.NET Core
  • Kako porabiti storitev WCF SOAP v ASP.NET Core
  • Kako izboljšati delovanje aplikacij ASP.NET Core
  • Kako porabiti spletni API ASP.NET Core s pomočjo RestSharp
  • Kako delati s prijavo v ASP.NET Core
  • Kako uporabljati MediatR v ASP.NET Core
  • Kako delati s stanjem seje v ASP.NET Core
  • Kako uporabljati Nancy v ASP.NET Core
  • Razumevanje vezave parametrov v spletnem API-ju ASP.NET
  • Kako naložiti datoteke v ASP.NET Core MVC
  • Kako implementirati globalno obravnavo izjem v ASP.NET Core Web API
  • Kako izvajati zdravstvene preglede v ASP.NET Core
  • Najboljše prakse predpomnjenja v ASP.NET
  • Kako uporabljati sporočila Apache Kafka v .NET
  • Kako omogočiti CORS v spletnem API-ju
  • Kdaj uporabiti WebClient v primerjavi s HttpClient v primerjavi s HttpWebRequest
  • Kako delati s predpomnilnikom Redis v .NET
  • Kdaj uporabiti Task.WaitAll v primerjavi z Task.WhenAll v .NET