Comment utiliser NCache dans ASP.Net Core

Bien qu'ASP.Net Core ne dispose pas d'un objet de cache, il prend en charge plusieurs types de mise en cache, notamment la mise en cache en mémoire, la mise en cache distribuée et la mise en cache des réponses. Produit open source fourni par Alachisoft, NCache est un cadre de mise en cache extrêmement rapide, en mémoire, distribué et évolutif à utiliser dans les applications .Net.

NCache est un .Net 100% natif. Il est non seulement plus rapide que Redis, mais fournit également plusieurs fonctionnalités de mise en cache distribuée qui ne sont pas prises en charge par Redis. Vous pouvez en savoir plus sur les différences entre NCache et Redis ici. Cet article explique comment nous pouvons travailler avec NCache dans les applications ASP.Net Core.

Un cache distribué tel que NCache peut améliorer à la fois les performances et l'évolutivité des applications. Dans un cache distribué, les données mises en cache ne résident pas dans la mémoire d'un serveur Web individuel. Vous pouvez ajouter ou supprimer un serveur sans affecter le cache ou les données mises en cache. Et si l'un des serveurs tombe en panne ou cesse de répondre, les autres serveurs pourront toujours récupérer les données mises en cache. Cela explique pourquoi les données mises en cache dans un cache distribué peuvent survivre aux redémarrages du serveur.

Créer un projet ASP.Net Core dans Visual Studio

Tout d'abord, créons un projet ASP.Net Core. Si Visual Studio 2017 est opérationnel dans votre système, suivez les étapes ci-dessous pour créer un nouveau projet ASP.Net Core dans Visual Studio.

  1. Lancez l'IDE de Visual Studio 2017.
  2. Cliquez sur Fichier> Nouveau> Projet.
  3. Sélectionnez «Application Web ASP.Net Core (.Net Core)» dans la liste des modèles affichés.
  4. Spécifiez un nom pour le projet.
  5. Cliquez sur OK pour enregistrer le projet.
  6. Une nouvelle fenêtre «Nouvelle application Web .Net Core…» s'affiche ensuite.
  7. Sélectionnez .Net Core comme runtime et ASP.Net Core 2.2 (ou version ultérieure) dans la liste déroulante en haut.
  8. Sélectionnez l'API comme modèle de projet
  9. Assurez-vous que les cases à cocher «Activer le support Docker» et «Configurer pour HTTPS» ne sont pas cochées car nous n'utiliserons pas ces fonctionnalités ici.
  10. Assurez-vous que «Aucune authentification» est sélectionné car nous n'utiliserons pas non plus d'authentification.
  11. Cliquez sur OK.

Vous devriez maintenant avoir un nouveau projet ASP.Net Core prêt à aller dans Visual Studio. Ensuite, vous devrez installer le package NuGet nécessaire pour utiliser NCache. Installez le package NuGet suivant via la fenêtre NuGet Package Manager ou à partir de la console NuGet Package Manager:

Alachisoft.NCache.SessionServices

Une fois ce package NuGet installé dans votre projet, vous êtes tous prêts à utiliser NCache.

Utilisez l'interface IDistributedCache dans ASP.Net Core

Pour utiliser un cache distribué dans les applications ASP.Net Core, vous devez utiliser l'interface IDistributedCache. L'interface IDistributedCache a été introduite dans ASP.Net Core pour vous permettre de connecter facilement des infrastructures de mise en cache tierces. Voici à quoi ressemble l'IDistributedCache.

espace de noms Microsoft.Extensions.Caching.Distributed

{

    interface publique IDistributedCache

    {

        byte [] Get (clé de chaîne);

        void Refresh (clé de chaîne);

        void Remove (clé de chaîne);

        void Set (clé de chaîne, valeur d'octet [],

        Options DistributedCacheEntryOptions);

    }

}

Configurer NCache en tant que fournisseur IDistributedCache dans ASP.Net Core

Pour travailler avec la mise en cache distribuée à l'aide de NCache, vous devez appeler la méthode AddNCacheDistributedCache dans la méthode ConfigureServices du fichier Startup.cs comme indiqué dans l'extrait de code ci-dessous. Notez que la méthode AddNCacheDistributedCache () est une extension de la méthode AddNDistributedCache () d'ASP.Net Core.

public void ConfigureServices (services IServiceCollection)

        {

            services.AddNCacheDistributedCache (configuration =>

            {

                configuration.CacheName = "DistributedCache";

                configuration.EnableLogs = true;

                configuration.ExceptionsEnabled = true;

            });          

 services.AddMvc (). SetCompatibilityVersion

(CompatibilityVersion.Version_2_2);

        }

Et c'est tout ce que vous devez faire. Vous pouvez maintenant commencer à utiliser NCache dans votre projet.

Utilisez NCache pour stocker et récupérer des objets mis en cache dans ASP.Net Core

L'extrait de code suivant illustre comment vous pouvez utiliser NCache. La méthode GetAuthor illustrée ci-dessous récupère l'objet Author du cache s'il est disponible. Si l'objet Author n'est pas disponible dans le cache, la méthode GetAuthor le récupère dans la base de données, puis stocke l'objet dans le cache.

 Tâche publique async GetAuthor (int id)

        {

            _cache = NCache.InitializeCache ("CacheName");

            var cacheKey = "Clé";

            Auteur auteur = null;

            si (_cache! = null)

            {

                author = _cache.Get (cacheKey) en tant qu'auteur;

            }

           if (author == null) // Données non disponibles dans le cache

            {

                // Écrivez le code ici pour récupérer l'auteur

                // objet de la base de données

                if (auteur! = null)

                {

                    si (_cache! = null)

                    {

                        _cache.Insert (cacheKey, auteur, null,

                         Cache.NoAbsoluteExpiration,

                         TimeSpan.FromMinutes (10), 

                         Alachisoft.NCache.Runtime.

                         CacheItemPriority.Default);

                    }

                }

            }

            retour auteur;

        }

Et voici la classe Author.

 public class Auteur

    {

        public int AuthorId {get; ensemble; }

        chaîne publique FirstName {get; ensemble; }

        chaîne publique LastName {get; ensemble; }

    }

NCache d'Alachisoft est une solution de mise en cache distribuée pour .Net. L'interface IDistributedCache fournit une API standard pour travailler avec un cache distribué dans ASP.Net Core. Vous pouvez l'utiliser pour brancher rapidement et facilement des caches tiers tels que NCache.