Programavimas

Kaip naudoti atminties talpyklą ASP.NET Core

ASP.NET Core yra plonas ir modulinis karkasas, kuris gali būti naudojamas kurti efektyvias, modernias žiniatinklio programas „Windows“, „Linux“ ar „MacOS“. Skirtingai nuo seno ASP.NET, ASP.NET Core neturi Talpykla objektas. Tačiau „ASP.NET Core“ teikia kelių skirtingų tipų talpyklų palaikymą, įskaitant atminties talpyklą, paskirstytą talpyklą ir atsakymo talpyklą.

Šiame straipsnyje mes apžvelgsime, kaip galite padidinti savo ASP.NET Core programos našumą ir mastelį, saugodami retai besikeičiančius duomenis atminties talpykloje. Kaip visada, pateiksiu kodų pavyzdžių, kad iliustruočiau aptartas sąvokas.

Kaip įgalinti atminties talpyklą „ASP.NET Core“

ASP.NET Core atmintyje esanti talpykla yra paslauga, kurią galite įtraukti į savo programą naudodami priklausomybės injekciją. Sukūrę ASP.NET Core projektą „Visual Studio“, galite įgalinti atminties talpyklą „ConfigureServices“ metodas Pradėti klasė, kaip parodyta žemiau esančiame kodo fragmente.

public void „ConfigureServices“ („IServiceCollection“ paslaugos)

{

paslaugos.AddMvc ();

paslaugos.AddMemoryCache ();

}

Norėdami dirbti su atminties talpykla ASP.NET Core, turite naudoti „IMemoryCache“ sąsaja. Štai kaip tai atrodo:

viešoji sąsaja IMemoryCache: IDisposable

{

„Bool TryGetValue“ (objekto raktas, iš objekto vertės);

ICacheEntry CreateEntry (objekto raktas);

void Pašalinti (objekto raktas);

}

Galite užregistruoti „IMemoryCache“ viduje konors„ConfigServices“ metodas naudojant „AddMemoryCache“ metodas, kurį nagrinėjome aukščiau. Tada turėtumėte suleisti talpyklos objektą į savo valdiklio klasės konstruktorių, kaip parodyta žemiau esančiame kodo fragmente.

  asmeninė „IMemoryCache“ talpykla;

viešoji „CacheController“ („IMemoryCache“ talpykla)

        {

this.cache = talpykla;

        }

Ir tai viskas, ką jums reikia padaryti, kad nustatytumėte atminties talpyklos palaikymą savo ASP.NET Core programoje. Tolesniame skyriuje apžvelgsime, kaip mes galime dirbti su ASP.NET Core talpyklos API, kad galėtume saugoti ir gauti objektus.

Kaip saugoti ir gauti objektus naudojant ASP.NET Core IMemoryCache

Norėdami išsaugoti objektą naudodami „IMemoryCache“ sąsaja, kurią reikia naudoti Rinkinys () metodas, kaip parodyta toliau pateiktame kodo fragmente. Atkreipkite dėmesį, kad Rinkinys () Šiame pavyzdyje naudotas metodas priima du parametrus. Pirmasis parametras yra rakto pavadinimas, o antrasis parametras yra reikšmė, t. Y. Objektas, kuris turi būti saugomas talpykloje, kurį galima identifikuoti naudojant raktą.

[HttpGet]

viešoji eilutė Gauti ()

        {

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

grąžinti „Tai yra bandymo metodas ...“;

        }

Norėdami gauti elementą iš talpyklos, galite pasinaudoti Gauti () metodas, kaip parodyta žemiau.

  [HttpGet („{key}“)]

viešoji eilutė Gauti (eilutės raktas)

        {

grąžinti talpyklą. Gauti (raktas);

        }

Galite naudoti „TryGet“ () talpyklos objekto metodas patikrinti, ar talpykloje yra nurodytas raktas. Čia yra modifikuota mūsų versija Gaukite metodas, parodantis, kaip to galima pasiekti.

 [HttpGet]

viešoji eilutė Gauti ()

        {

eilutės raktas;

stygos obj;

if (! cache.TryGetValue (raktas, obj))

            {

obj = DateTime.Now.ToString ();

talpykla. Nustatyti (raktas, obj);

            }

grąžinimo obj;

        }

Yra dar vienas metodas, vadinamas „GetOrCreate“, kurį galima naudoti talpykloje saugomiems duomenims nuskaityti pagal pateiktą raktą. Jei rakto nėra, metodas jį sukuria.

[HttpGet]

viešoji eilutė Gauti ()

        {

grąžinti talpyklą. GetOrCreate („Key“,

cacheEntry => {

grąžinti DateTime.Now.ToString ();

                         });

        }

Atkreipkite dėmesį, kad galima gauti asinchroninę šio metodo versiją „GetOrCreateAsync“. Čia yra visas mūsų kodų sąrašas „CacheController“ klasė jūsų nuoroda.

naudojant sistemą;

naudojant „Microsoft.AspNetCore.Mvc“;

naudojant „Microsoft.Extensions.Caching.Memory“;

vardų sritis „InMemoryCaching“. Valdikliai

{

[Maršrutas („api / [valdiklis]“)]

viešosios klasės „CacheController“: valdiklis

    {

asmeninė „IMemoryCache“ talpykla;

viešoji „CacheController“ („IMemoryCache“ talpykla)

        {

this.cache = talpykla;

        }

[HttpGet]

viešoji eilutė Gauti ()

        {

grąžinti talpyklą. GetOrCreate („Key“,

cacheEntry => {

grąžinti DateTime.Now.ToString ();

                         });

        }

    }

}

Kaip nustatyti galiojimo laiko politiką talpykloje saugomiems duomenims ASP.NET Core

Atminkite, kad talpykloje saugomiems duomenims galite nustatyti absoliučią ir slenkančią galiojimo pabaigos politiką. Pirmasis naudojamas nurodant trukmę, kurią objektas turi būti laikinojoje talpykloje, o antrasis naudojamas nurodant trukmę, kurią objektas gyvens talpykloje, kai nebus jokios veiklos, ty elementas bus pašalintas iš talpykla, kai praeina nurodyta neveikimo trukmė.

Norėdami nustatyti galiojimo pabaigos politiką, naudokite „MemoryCacheEntryOptions“ klasė, kaip parodyta žemiau esančiame kodo fragmente.

MemoryCacheEntryOptions cacheExpirationOptions = new MemoryCacheEntryOptions ();

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

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

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

Atkreipkite dėmesį į Prioritetas nuosavybė „MemoryCacheEntryOptions“ egzempliorių aukščiau esančiame kodo fragmente. Prioritetas ypatybė nurodo, kurie objektai (atsižvelgiant į jau nustatytą prioritetą) turėtų būti pašalinti iš talpyklos kaip vykdymo laiko strategijos dalis siekiant atgauti atmintį, kai žiniatinklio serveryje trūksta vietos.

Norėdami nustatyti prioritetą, mes naudojome „CacheItemPriority“ enum. Tai gali turėti vieną iš šių galimų reikšmių: „Low“, „Normal“, „High“ ir „NeverRemove“. ASP.NET Core atmintyje esančios talpyklos teikėjas pašalins talpyklos įrašus, kai spaudžiamas atmintis, nebent talpyklos prioritetą nustatėte į „CacheItemPriority.NeverRemove“.

Taip pat galite užregistruoti atgalinį skambutį, kuris bus vykdomas, kai elementas pašalinamas iš talpyklos. Šis kodo fragmentas parodo, kaip tai galima pasiekti.

cacheExpirationOptions.RegisterPostEvictionCallback

(„CacheItemChangedHandler“, tai);

Jūs netgi galite nustatyti talpykloje esančių objektų priklausomybes. Pavyzdžiui, galbūt norėsite pašalinti tam tikrus elementus iš talpyklos, jei pašalintas kai kurie susiję elementai. Aptarsime tai toliau ir daugelį kitų ASP.NET Core talpyklos funkcijų mano būsimuose įrašuose čia. Iki to laiko galbūt norėsite pažvelgti į atitinkamus „Microsoft“ ASP.NET Core dokumentacijos puslapius.

Kaip padaryti daugiau naudojant ASP.NET ir ASP.NET Core:

  • Kaip naudoti atminties talpyklą ASP.NET Core
  • Kaip tvarkyti klaidas ASP.NET žiniatinklio API
  • Kaip perduoti kelis parametrus žiniatinklio API valdiklio metodams
  • Kaip registruoti užklausos ir atsakymo metaduomenis ASP.NET žiniatinklio API
  • Kaip dirbti su „HttpModules“ ASP.NET
  • Išplėstinė ASP.NET „Core Web API“ versijų versija
  • Kaip naudoti priklausomybės injekciją ASP.NET Core
  • Kaip dirbti su sesijomis ASP.NET
  • Kaip dirbti su HTTPHandleriais sistemoje ASP.NET
  • Kaip naudoti „IHostedService“ ASP.NET Core
  • Kaip vartoti WCF SOAP paslaugą ASP.NET Core
  • Kaip pagerinti ASP.NET Core programų veikimą
  • Kaip suvartoti ASP.NET Core Web API naudojant „RestSharp“
  • Kaip dirbti su registravimu ASP.NET Core
  • Kaip naudoti „MediatR“ ASP.NET Core
  • Kaip dirbti su seanso būsena ASP.NET Core
  • Kaip naudoti „Nancy“ ASP.NET Core
  • Supraskite parametrų susiejimą ASP.NET žiniatinklio API
  • Kaip įkelti failus į ASP.NET Core MVC
  • Kaip įdiegti visuotinį išimčių tvarkymą ASP.NET Core Web API
  • Kaip atlikti sveikatos patikrinimus ASP.NET Core
  • Geriausia ASP.NET talpyklos talpinimo praktika
  • Kaip naudoti „Apache Kafka“ pranešimus .NET
  • Kaip įgalinti CORS savo žiniatinklio API
  • Kada naudoti „WebClient“, palyginti su „HttpClient“ ir „HttpWebRequest“
  • Kaip dirbti su „Redis Cache“ .NET
  • Kada .NET naudoti „Task.WaitAll“ ir „Task.WhenAll“
$config[zx-auto] not found$config[zx-overlay] not found