Προγραμματισμός

Τρόπος χρήσης της προσωρινής αποθήκευσης στη μνήμη στο ASP.NET Core

Το ASP.NET Core είναι ένα λιτό και αρθρωτό πλαίσιο που μπορεί να χρησιμοποιηθεί για τη δημιουργία σύγχρονων εφαρμογών ιστού υψηλής απόδοσης σε Windows, Linux ή MacOS. Σε αντίθεση με το παλαιό ASP.NET, το ASP.NET Core δεν διαθέτει Κρύπτη αντικείμενο. Ωστόσο, το ASP.NET Core παρέχει υποστήριξη για διάφορους τύπους προσωρινής αποθήκευσης, συμπεριλαμβανομένης της προσωρινής αποθήκευσης στη μνήμη, της κατανεμημένης προσωρινής μνήμης και της απόκρισης προσωρινής αποθήκευσης.

Σε αυτό το άρθρο, θα δούμε πώς μπορείτε να ενισχύσετε την απόδοση και την επεκτασιμότητα της εφαρμογής ASP.NET Core αποθηκεύοντας σπάνια δεδομένα στην προσωρινή μνήμη. Όπως πάντα, θα συμπεριλάβω παραδείγματα κώδικα για να δείξω τις έννοιες που συζητήθηκαν.

Πώς να ενεργοποιήσετε την προσωρινή αποθήκευση στη μνήμη στο ASP.NET Core

Η μνήμη cache στο ASP.NET Core είναι μια υπηρεσία που μπορείτε να ενσωματώσετε στην εφαρμογή σας χρησιμοποιώντας εξάρτηση εξάρτησης. Μόλις δημιουργήσετε ένα έργο ASP.NET Core στο Visual Studio, μπορείτε να ενεργοποιήσετε την προσωρινή μνήμη στη μνήμη στο ConfigureServices μέθοδος στο Ξεκίνα τάξη όπως φαίνεται στο απόσπασμα κώδικα παρακάτω.

public void ConfigureServices (υπηρεσίες IServiceCollection)

{

υπηρεσίες.AddMvc ();

υπηρεσίες.AddMemoryCache ();

}

Για να εργαστείτε με την προσωρινή μνήμη της μνήμης στο ASP.NET Core, πρέπει να χρησιμοποιήσετε το Κρυφή μνήμη διεπαφή. Δείτε πώς φαίνεται:

δημόσια διεπαφή IMemoryCache: Διαθέσιμο

{

bool TryGetValue (κλειδί αντικειμένου, τιμή εκτός αντικειμένου);

ICacheEntry CreateEntry (κλειδί αντικειμένου);

void Remove (κλειδί αντικειμένου).

}

Μπορείτε να καταχωρήσετε το Κρυφή μνήμη στοConfigServices μέθοδος χρησιμοποιώντας το Προσθήκη μνήμης μέθοδος που εξετάσαμε παραπάνω. Στη συνέχεια, πρέπει να εισαγάγετε το αντικείμενο προσωρινής μνήμης στον κατασκευαστή της κλάσης ελεγκτή σας, όπως φαίνεται στο παρακάτω απόσπασμα κώδικα.

  ιδιωτική προσωρινή μνήμη IMemoryCache;

δημόσιο CacheController (IMemoryCache cache)

        {

this.cache = προσωρινή μνήμη;

        }

Και αυτό πρέπει να κάνετε για να ρυθμίσετε την υποστήριξη για προσωρινή αποθήκευση στη μνήμη στην εφαρμογή ASP.NET Core. Στην ενότητα που ακολουθεί, θα δούμε πώς μπορούμε να εργαστούμε με το cache API στο ASP.NET Core για την αποθήκευση και ανάκτηση αντικειμένων.

Πώς να αποθηκεύσετε και να ανακτήσετε αντικείμενα χρησιμοποιώντας το ASP.NET Core IMemoryCache

Για να αποθηκεύσετε ένα αντικείμενο χρησιμοποιώντας το Κρυφή μνήμη διεπαφή που πρέπει να χρησιμοποιήσετε το Σειρά() μέθοδο όπως φαίνεται στο απόσπασμα κώδικα παρακάτω. Σημειώστε ότι η έκδοση του Σειρά() μέθοδος που χρησιμοποιήσαμε σε αυτό το παράδειγμα δέχεται δύο παραμέτρους. Η πρώτη παράμετρος είναι το όνομα του κλειδιού και η δεύτερη παράμετρος είναι η τιμή, δηλαδή το αντικείμενο που πρόκειται να αποθηκευτεί στην προσωρινή μνήμη που μπορεί να αναγνωριστεί χρησιμοποιώντας το κλειδί.

[HttpGet]

δημόσια συμβολοσειρά Λήψη ()

        {

cache.Set ("Κλειδί", DateTime.Now.ToString ());

επιστροφή "Αυτή είναι μια μέθοδος δοκιμής ...";

        }

Για να ανακτήσετε ένα στοιχείο από την προσωρινή μνήμη, μπορείτε να επωφεληθείτε από το Παίρνω() μέθοδο όπως φαίνεται παρακάτω.

  [HttpGet ("{key}")]

δημόσια συμβολοσειρά Get (πλήκτρο συμβολοσειράς)

        {

επιστροφή cache. Λήψη (κλειδί);

        }

Μπορείτε να χρησιμοποιήσετε το TryGet () μέθοδος στο αντικείμενο προσωρινής αποθήκευσης για να ελέγξετε εάν το καθορισμένο κλειδί υπάρχει στην προσωρινή μνήμη. Εδώ είναι η τροποποιημένη έκδοση του Παίρνω μέθοδος που δείχνει πώς μπορεί να επιτευχθεί αυτό.

 [HttpGet]

δημόσια συμβολοσειρά Λήψη ()

        {

κλειδί συμβολοσειράς;

συμβολοσειρά obj;

εάν (! cache.TryGetValue (κλειδί, έξω obj))

            {

obj = DateTime.Now.ToString ();

cache.Set (κλειδί, obj);

            }

επιστροφή obj;

        }

Υπάρχει μια άλλη μέθοδος, που ονομάζεται GetOrCreate, που μπορεί να χρησιμοποιηθεί για την ανάκτηση προσωρινά αποθηκευμένων δεδομένων με βάση το παρεχόμενο κλειδί. Εάν το κλειδί δεν υπάρχει, η μέθοδος το δημιουργεί.

[HttpGet]

δημόσια συμβολοσειρά Λήψη ()

        {

επιστροφή cache.GetOrCreate ("Key",

cacheEntry => {

επιστροφή DateTime.Now.ToString ();

                         });

        }

Σημειώστε ότι είναι διαθέσιμη μια ασύγχρονη έκδοση αυτής της μεθόδου GetOrCreateAsync. Εδώ είναι η πλήρης λίστα κωδικών του CacheController τάξη για την αναφορά σας.

χρησιμοποιώντας το Σύστημα;

χρησιμοποιώντας Microsoft.AspNetCore.Mvc;

χρησιμοποιώντας το Microsoft.Extensions.Caching.Memory;

namespace InMemoryCaching.Controllers

{

[Διαδρομή ("api / [ελεγκτής]")]

δημόσια τάξη CacheController: Controller

    {

ιδιωτική προσωρινή μνήμη IMemoryCache;

δημόσιο CacheController (IMemoryCache cache)

        {

this.cache = προσωρινή μνήμη;

        }

[HttpGet]

δημόσια συμβολοσειρά Λήψη ()

        {

επιστροφή cache.GetOrCreate ("Key",

cacheEntry => {

επιστροφή DateTime.Now.ToString ();

                         });

        }

    }

}

Πώς να ορίσετε πολιτικές λήξης σε προσωρινά αποθηκευμένα δεδομένα στο ASP.NET Core

Λάβετε υπόψη ότι μπορείτε να ορίσετε απόλυτες και κυλιόμενες πολιτικές λήξης στα προσωρινά αποθηκευμένα δεδομένα σας. Ενώ το πρώτο χρησιμοποιείται για να καθορίσει τη διάρκεια για την οποία ένα αντικείμενο πρέπει να βρίσκεται στην προσωρινή μνήμη, το δεύτερο χρησιμοποιείται για να καθορίσει τη διάρκεια για την οποία ένα αντικείμενο θα βρίσκεται στην προσωρινή μνήμη όταν δεν υπάρχει δραστηριότητα - δηλαδή, το στοιχείο θα αφαιρεθεί από η προσωρινή μνήμη όταν παρέλθει η καθορισμένη διάρκεια αδράνειας.

Για να ορίσετε πολιτικές λήξης, χρησιμοποιείτε το MemoryCacheEntryOptions τάξη όπως φαίνεται στο απόσπασμα κώδικα παρακάτω.

MemoryCacheEntryOptions cacheExpirationOptions = νέο MemoryCacheEntryOptions ();

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

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

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

Σημειώστε τη χρήση του Προτεραιότητα ιδιοκτησία στο MemoryCacheEntryOptions παρουσία στο απόσπασμα κώδικα παραπάνω. ο Προτεραιότητα Η ιδιότητα καθορίζει ποια αντικείμενα (με βάση την προτεραιότητα που έχει ήδη οριστεί) θα πρέπει να αφαιρεθούν από την προσωρινή μνήμη ως μέρος μιας στρατηγικής του χρόνου εκτέλεσης για την ανάκτηση μνήμης όποτε ο διακομιστής ιστού εξαντλείται.

Για να ορίσουμε την προτεραιότητα, χρησιμοποιήσαμε το Προτεραιότητα CacheItem απαρίθμηση. Αυτό μπορεί να έχει μία από αυτές τις πιθανές τιμές: Χαμηλή, Κανονική, Υψηλή και NeverRemove. Ο πάροχος προσωρινής μνήμης στη μνήμη στο ASP.NET Core θα καταργήσει τις καταχωρήσεις προσωρινής μνήμης όταν βρίσκεται υπό πίεση μνήμης, εκτός εάν έχετε ορίσει την προτεραιότητα CacheItemPriority.NeverRemove.

Μπορεί επίσης να θέλετε να καταχωρήσετε μια επιστροφή κλήσης που θα εκτελείται κάθε φορά που ένα στοιχείο αφαιρείται από την προσωρινή μνήμη. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να επιτευχθεί αυτό.

cacheExpirationOptions.RegisterPostEvictionCallback

(CacheItemChangedHandler, αυτό);

Μπορείτε ακόμη και να ορίσετε εξαρτήσεις μεταξύ των αποθηκευμένων αντικειμένων. Για παράδειγμα, μπορεί να θέλετε να καταργήσετε ορισμένα στοιχεία από την προσωρινή μνήμη εάν κάποιο σχετικό στοιχείο έχει αφαιρεθεί. Θα το διερευνήσουμε περαιτέρω και πολλά άλλα χαρακτηριστικά της προσωρινής αποθήκευσης στο ASP.NET Core στις μελλοντικές αναρτήσεις μου εδώ. Μέχρι τότε, ίσως θελήσετε να ρίξετε μια ματιά στις σχετικές σελίδες στην τεκμηρίωση ASP.NET Core της Microsoft.

Πώς να κάνετε περισσότερα στα ASP.NET και ASP.NET Core:

  • Τρόπος χρήσης της προσωρινής αποθήκευσης στη μνήμη στο ASP.NET Core
  • Πώς να χειριστείτε σφάλματα στο ASP.NET Web API
  • Τρόπος μετάδοσης πολλαπλών παραμέτρων σε μεθόδους ελεγκτή API Ιστού
  • Τρόπος καταγραφής των μεταδεδομένων αιτήματος και απόκρισης στο ASP.NET Web API
  • Πώς να εργαστείτε με HttpModules στο ASP.NET
  • Προηγμένη έκδοση στο ASP.NET Core Web API
  • Πώς να χρησιμοποιήσετε την ένεση εξάρτησης στο ASP.NET Core
  • Πώς να εργαστείτε με συνεδρίες στο ASP.NET
  • Πώς να εργαστείτε με HTTPHandlers στο ASP.NET
  • Πώς να χρησιμοποιήσετε το IHostedService στο ASP.NET Core
  • Πώς να καταναλώσετε μια υπηρεσία WCF SOAP στο ASP.NET Core
  • Πώς να βελτιώσετε την απόδοση των εφαρμογών ASP.NET Core
  • Πώς να καταναλώσετε ένα ASP.NET Core Web API χρησιμοποιώντας το RestSharp
  • Πώς να εργαστείτε με τη σύνδεση στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε το MediatR στο ASP.NET Core
  • Τρόπος εργασίας με την κατάσταση συνεδρίας στον ASP.NET Core
  • Πώς να χρησιμοποιήσετε το Nancy στο ASP.NET Core
  • Κατανοήστε τη δέσμευση παραμέτρων στο ASP.NET Web API
  • Πώς να ανεβάσετε αρχεία στο ASP.NET Core MVC
  • Τρόπος εφαρμογής του παγκόσμιου χειρισμού εξαιρέσεων στο ASP.NET Core Web API
  • Πώς να εφαρμόσετε ελέγχους υγείας στο ASP.NET Core
  • Βέλτιστες πρακτικές στην προσωρινή αποθήκευση στο ASP.NET
  • Πώς να χρησιμοποιήσετε τα μηνύματα Apache Kafka στο .NET
  • Πώς να ενεργοποιήσετε το CORS στο Web API σας
  • Πότε να χρησιμοποιήσετε το WebClient εναντίον HttpClient εναντίον HttpWebRequest
  • Πώς να εργαστείτε με το Redis Cache στο .NET
  • Πότε να χρησιμοποιήσετε το Task.WaitAll εναντίον Task.WhenAll στο .NET