Passer au contenu du pied de page
.NET AIDE

LazyCache C# (Comment ça fonctionne pour les développeurs)

La mise en cache est une technique fondamentale dans le développement de logiciels pour améliorer les performances en stockant des données fréquemment consultées en mémoire ou sur un support de stockage plus rapide. En C#, LazyCache est une bibliothèque populaire qui simplifie la mise en œuvre de la mise en cache sécurisée par les threads, facilitant ainsi pour les développeurs l'exploitation efficace de la mise en cache dans leurs applications pour des scénarios de forte charge.

Qu'est-ce que LazyCache ?

LazyCache est une bibliothèque de fournisseurs de cache sous-jacente pour les applications .NET / ASP.NET Core, qui offre une API simple et intuitive pour la mise en cache des données. Il est disponible sous forme de package NuGet et peut être facilement intégré dans des projets C#. L'objectif principal de LazyCache est de simplifier la mise en œuvre de la mise en cache et de réduire le code boilerplate nécessaire pour gérer les informations mises en cache en utilisant un modèle de cache à double verrouillage.

Principales caractéristiques de LazyCache :

  1. API simple : LazyCache offre une API simple pour ajouter, récupérer et supprimer des éléments mis en cache. Les développeurs peuvent intégrer rapidement la mise en cache dans leurs applications ou appels de services web sans avoir à gérer des mécanismes de mise en cache complexes.

  2. Expiration automatique : LazyCache prend en charge l'expiration automatique des éléments mis en cache en fonction de politiques d'expiration configurables. Les développeurs peuvent spécifier la durée d'expiration des éléments mis en cache, et LazyCache supprime les éléments expirés des données en cache.

  3. Mise en cache en mémoire : Par défaut, LazyCache stocke les éléments mis en cache en mémoire, ce qui le rend adapté pour les scénarios nécessitant un accès rapide aux données mises en cache. La mise en cache en mémoire garantit une faible latence et un débit élevé pour l'accès aux données mises en cache.

  4. Opérations sécurisées par les threads : LazyCache fournit des opérations sécurisées par les threads pour ajouter, récupérer et supprimer des éléments mis en cache. Cela garantit que plusieurs threads peuvent accéder simultanément au cache sans risque de corruption ou d'incohérence des données.

  5. Extensibilité : LazyCache est conçu pour être extensible, permettant aux développeurs de personnaliser le comportement de la mise en cache en fonction de leurs besoins spécifiques. Il offre des crochets pour implémenter des stratégies de mise en cache personnalisées, telles que la mise en cache distribuée ou la mise en cache avec persistance.

Comment utiliser LazyCache en C# :

Utiliser LazyCache en C# est simple, grâce à son API intuitive. Voici un exemple de base démontrant comment utiliser LazyCache pour mettre en cache le résultat d’un appel de méthode :

using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
Imports LazyCache

Public Class DataService
	' Define a private readonly field for the cache
	Private ReadOnly _cache As IAppCache

	' Constructor to initialize the cache
	Public Sub New(ByVal cache As IAppCache)
		_cache = cache
	End Sub

	' Method to retrieve data (cached or fetched)
	Public Function GetData() As String
		Return _cache.GetOrAdd("dataKey", Function()
			' Simulate expensive operation such as database calls
			Return FetchDataFromDatabase()
		End Function)
	End Function

	' Simulate fetching data from a database
	Private Function FetchDataFromDatabase() As String
		Return "Cached Data"
	End Function
End Class
$vbLabelText   $csharpLabel

Dans cet exemple, la classe DataService utilise LazyCache pour mettre en cache le résultat de la méthode GetData(). La méthode GetOrAdd() récupère les données en cache associées à la clé spécifiée (« dataKey ») si elles existent. Si les données ne sont pas mises en cache, le délégué fourni FetchDataFromDatabase() est exécuté pour récupérer les données qui sont ensuite mises en cache pour une utilisation future.

Introduction à IronPDF

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 1 - IronPDF

IronPDF est une puissante bibliothèque PDF pour C# qui permet de générer, éditer et extraire du contenu de documents PDF dans des projets .NET. Voici quelques caractéristiques clés :

  1. Conversion HTML en PDF :

    • Convertir le contenu HTML, CSS et JavaScript au format PDF.
    • Utilisez le moteur de rendu Chrome pour des PDF pixel-parfaits.
    • Générez des PDFs à partir d'URL, de fichiers HTML ou de chaînes HTML.
  2. Conversion d'Images et de Contenu :

    • Convertir des images vers et depuis le PDF.
    • Extraire du texte et des images à partir de PDF existants.
    • Supporte divers formats d'image.
  3. Édition et Manipulation :

    • Définir les propriétés, la sécurité et les permissions pour les PDF.
    • Ajouter des signatures numériques.
    • Éditez les métadonnées et l'historique des révisions.
  4. Support Multiplateforme :

    • Fonctionne avec .NET Core (8, 7, 6, 5, et 3.1+), .NET Standard (2.0+), et .NET Framework (4.6.2+).
    • Compatible avec Windows, Linux, et macOS.
    • Disponible sur NuGet pour une installation facile.

Générer un document PDF en utilisant IronPDF et LazyCache

Pour commencer, créez une application Console en utilisant Visual Studio comme ci-dessous.

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 2 - Application console

Fournir le nom du projet.

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 3 - Configuration du projet

Fournissez la version .NET.

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 4 - Framework cible

Installer le package IronPDF.

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 5 - IronPDF

Installez le package LazyCache pour ajouter des appels de méthode mis en cache.

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 6 - LazyCache

using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
Imports LazyCache
Imports IronPdf ' Add the IronPdf namespace
Imports System

Namespace CodeSample
	Friend Class LazyCacheDemo
		Public Shared Sub Execute()
			' Instantiate the Chrome PDF Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo LazyCache and IronPDF</h1>"
			content &= "<h2>Create CachingService</h2>"

			' Create the cache service using LazyCache
			Dim cache As IAppCache = New CachingService()

			Dim cacheKey = "uniqueKey" ' Unique key for caching the content

			' Define a factory method to generate the cacheable data
			Dim expensiveLongRunMethod As Func(Of String) = Function()
				' Render the HTML content to a PDF
				Dim pdf = renderer.RenderHtmlAsPdf(content)

				' Export the rendered PDF to a file
				pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf")

				' Return the content as a string
				Return content
			End Function

			' Get the cached value or execute expensiveLongRunMethod to cache it
			Dim cachedValue As String = cache.GetOrAdd(cacheKey, expensiveLongRunMethod)

			' Output the cached value to the console
			Console.WriteLine(cachedValue)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Explication du code

  • Instancier le renderer : Une instance de ChromePdfRenderer est créée pour gérer la conversion du contenu HTML en format PDF.

  • Define Content: HTML content ("

    Demo LazyCache and IronPDF

    ", "

    Create CachingService

    ", etc.) is prepared. Ce contenu sera rendu en un PDF et mis en cache pour réutilisation.

  • Créer un service de cache : Un service de mise en cache (IAppCache) est instancié en utilisant le CachingService de LazyCache. Ce service de cache paresseux gère le stockage et la récupération des données mises en cache.

  • Clé de cache : Un identifiant unique (« uniqueKey ») est attribué pour représenter le contenu PDF mis en cache.

  • Définir une méthode coûteuse : Une méthode de fabrique (expensiveLongRunMethod) est définie pour générer les données mises en cache. Cette méthode invoque le ChromePdfRenderer pour rendre le contenu HTML en tant que PDF. Le PDF résultant est ensuite enregistré et retourné sous forme de chaîne.

  • Récupérer ou ajouter au cache : La méthode GetOrAdd du service est appelée pour récupérer la valeur en cache associée à cacheKey. Si la valeur n'existe pas dans le cache, expensiveLongRunMethod est invoquée pour la calculer, la stocker dans le cache et la retourner. Si la valeur est déjà mise en cache, elle est directement retournée.

  • Sortie : Le contenu PDF mis en cache (sous forme de chaîne) est imprimé sur la console (Console.WriteLine(cachedValue)), démontrant la récupération des données en cache.

Sortie

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 7 - Sortie console

PDF

LazyCache C# (Comment ça fonctionne pour les développeurs): Figure 8 - Sortie PDF

Licences IronPDF (essai disponible)

Le package IronPDF nécessite une licence pour fonctionner et générer le PDF. Ajoutez le code suivant au début de l'application avant que le package ne soit accessible.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Une licence d'essai est disponible sur la page de la licence d'essai de IronPDF.

Conclusion

LazyCache simplifie la mise en œuvre de la mise en cache dans les applications C# en fournissant une API simple et l'expiration automatique des éléments mis en cache. En intégrant LazyCache dans vos projets, vous pouvez améliorer les performances en mettant efficacement en cache les données fréquemment consultées, réduire la latence et optimiser l'utilisation des ressources de manière atomique et ordonnée. Que vous développiez des applications web, des API ou des services, LazyCache peut être un outil précieux pour améliorer la performance et la scalabilité de vos applications C#.

D'autre part, IronPDF se distingue comme une bibliothèque C# puissante et polyvalente pour gérer les documents PDF dans les applications .NET. Ses capacités robustes englobent la création, l'édition, le rendu de HTML en PDF, et la manipulation de PDFs de manière programmatique. Avec des fonctionnalités pour la gestion sécurisée des documents via le chiffrement et les signatures numériques, IronPDF permet aux développeurs de gérer et de personnaliser efficacement les flux de travail PDF, en faisant un outil précieux pour une large gamme de tâches de gestion et de génération de documents dans le développement C#.

Questions Fréquemment Posées

Qu'est-ce que LazyCache et comment cela bénéficie aux applications .NET ?

LazyCache est une bibliothèque de fournisseur de mise en cache conçue pour les applications .NET/ASP.NET Core. Elle bénéficie à ces applications en simplifiant l'implémentation de la mise en cache, réduisant le code passe-partout et améliorant la performance grâce au stockage des données en mémoire, ce qui minimise les opérations de récupération de données inutiles.

Comment pouvez-vous implémenter la mise en cache en C# en utilisant LazyCache ?

Pour implémenter la mise en cache en C# en utilisant LazyCache, vous devez installer la bibliothèque via NuGet et configurer un service de mise en cache en utilisant le CachingService de LazyCache. Vous pouvez mettre en cache des données en utilisant la méthode GetOrAdd, qui stocke le résultat des appels de méthode et fournit une clé unique et un délégué pour récupérer des données si elles ne sont pas déjà mises en cache.

Comment LazyCache s'assure-t-il que les données restent à jour dans le cache ?

LazyCache s'assure que les données restent à jour en soutenant l'expiration automatique des éléments mis en cache basée sur des politiques configurables. Cette fonctionnalité permet aux développeurs de définir des temps d'expiration, garantissant que les données obsolètes ne sont pas servies aux utilisateurs.

Qu'est-ce qui rend LazyCache thread-safe ?

LazyCache est thread-safe en raison de sa conception, qui permet à plusieurs fils d'interagir avec le cache sans risquer la corruption des données. Il utilise un mécanisme de double verrouillage pour s'assurer que les opérations de cache sont effectuées en toute sécurité dans les applications multithread.

Comment pouvez-vous optimiser la gestion des documents PDF dans les projets C# ?

Vous pouvez optimiser la gestion des documents PDF dans les projets C# en utilisant IronPDF, qui offre des capacités robustes telles que la conversion HTML en PDF, l'extraction de contenu et l'édition de PDF. Il prend en charge la compatibilité multiplateforme et peut être intégré avec LazyCache pour mettre en cache les PDF générés pour améliorer la performance.

Est-il possible d'utiliser LazyCache pour la mise en cache distribuée ?

Oui, LazyCache offre une extensibilité qui permet aux développeurs d'implémenter des stratégies de mise en cache personnalisées, y compris la mise en cache distribuée. Cette flexibilité permet l'intégration avec d'autres systèmes de cache pour prendre en charge des environnements distribués.

Quels sont les avantages d'utiliser une bibliothèque PDF C# aux côtés de LazyCache ?

Utiliser une bibliothèque PDF C# comme IronPDF aux côtés de LazyCache vous permet de générer et mettre en cache des documents PDF efficacement. Cette combinaison améliore les performances de l'application en évitant la génération redondante de PDF et en fournissant un accès rapide aux documents fréquemment demandés.

Quelles sont les exigences de licence pour utiliser une bibliothèque PDF C# comme IronPDF ?

IronPDF nécessite une licence pour utiliser pleinement ses fonctionnalités. Les développeurs peuvent commencer avec une licence d'essai disponible sur le site web d'IronPDF et doivent inclure la clé de licence dans leur code d'application pour activer la bibliothèque pour générer des PDFs.

Comment LazyCache améliore-t-il la performance des applications ?

LazyCache améliore la performance des applications en stockant les données fréquemment consultées en mémoire, réduisant le besoin d'opérations répétées de récupération de données. Cela se traduit par des temps de réponse plus rapides et une charge réduite sur les bases de données ou les sources de données externes.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite