AYUDA .NET

LazyCache C# (Cómo funciona para desarrolladores)

Actualizado agosto 13, 2024
Compartir:

El almacenamiento en caché es una técnica fundamental en el desarrollo de software para mejorar el rendimiento almacenando los datos a los que se accede con más frecuencia en la memoria o en un medio de almacenamiento más rápido. En C#, LazyCache es una popular biblioteca que simplifica la implementación de cachés seguras para subprocesos, facilitando a los desarrolladores el aprovechamiento eficaz de la caché en sus aplicaciones para escenarios de carga pesada.

**¿Qué es LazyCache?

LazyCache es una biblioteca de proveedores de caché subyacente para aplicaciones .NET/ ASP.NET Core que proporciona una API sencilla e intuitiva para almacenar datos en caché. Está disponible como paquete NuGet y puede integrarse fácilmente en proyectos de C#. El objetivo principal de LazyCache es simplificar la implementación de la caché y reducir el código repetitivo necesario para gestionar la información almacenada en caché utilizando el patrón de caché de doble bloqueo.

Características principales de LazyCache:

  1. API sencilla: LazyCache proporciona una API sencilla para añadir, recuperar y eliminar elementos de la caché. Los desarrolladores pueden integrar rápidamente el almacenamiento en caché en sus aplicaciones o llamadas a servicios web sin tener que lidiar con complejos mecanismos de almacenamiento en caché.

  2. Expiración automática: LazyCache admite la expiración automática de los elementos almacenados en caché basándose en políticas de expiración configurables. Los desarrolladores pueden especificar la duración de la caducidad de los elementos almacenados en caché, y LazyCache elimina los elementos caducados de los datos de la caché.

  3. Almacenamiento en memoria: LazyCache almacena por defecto los elementos almacenados en memoria, lo que lo hace adecuado para situaciones en las que se requiere un acceso rápido a los datos almacenados. La caché en memoria garantiza una baja latencia y un alto rendimiento en el acceso a los datos almacenados.

  4. Operaciones seguras: LazyCache proporciona operaciones seguras para añadir, recuperar y eliminar elementos de la caché. Esto garantiza que varios subprocesos puedan acceder simultáneamente a la caché sin riesgo de corrupción o incoherencia de los datos.

  5. Extensibilidad: LazyCache está diseñado para ser extensible, permitiendo a los desarrolladores personalizar el comportamiento de la caché de acuerdo a sus necesidades específicas. Proporciona ganchos para implementar estrategias de almacenamiento en caché personalizadas, como el almacenamiento en caché distribuido o el almacenamiento en caché con persistencia.

    Cómo usar LazyCache en C#:

    Utilizar LazyCache en C# es muy sencillo gracias a su intuitiva API. A continuación se muestra un ejemplo básico que demuestra cómo utilizar LazyCache para almacenar en caché el resultado de una llamada a un método:

using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

En este ejemplo, la clase DataService utiliza LazyCache para almacenar en caché el resultado de la operación GetData() método. La función GetOrAdd() recupera los datos en caché asociados a la clave especificada ("dataKey") si existe. Si los datos no se almacenan en caché, el delegado proporcionado (FetchDataFromDatabase()) se ejecuta para obtener los datos, que luego se almacenan en caché para su uso futuro.

Introducción a IronPDF

LazyCache C# (Cómo funciona para desarrolladores): Figura 1 - IronPDF

IronPDF es una potente biblioteca PDF en C# que permite generar, editar y extraer contenido de documentos PDF en proyectos .NET. Estas son algunas de sus principales características:

  1. Conversión de HTML a PDF:

    • Convierte contenidos HTML, CSS y JavaScript a formato PDF.

    • Utiliza el motor de renderizado de Chrome para obtener PDF perfectos.
    • Genere PDF a partir de URL, archivos HTML o cadenas HTML.
  2. Conversión de imágenes y contenidos:

    • Convierte imágenes a y desde PDF.

    • Extraiga texto e imágenes de PDF existentes.
    • Compatible con varios formatos de imagen.
  3. Edición y manipulación:

    • Establezca las propiedades, la seguridad y los permisos de los archivos PDF.

    • Añade firmas digitales.
    • Editar metadatos e historial de revisiones.
  4. Soporte multiplataforma:

    • Funciona con .NET Core (8, 7, 6, 5 y 3.1+.).NET Standard (2.0+)y .NET Framework (4.6.2+).

    • Compatible con Windows, Linux y macOS.
    • Disponible en NuGet para facilitar la instalación.

Generar un documento PDF utilizando IronPDF y LazyCache

Para empezar, cree una aplicación de consola utilizando Visual Studio como se indica a continuación.

LazyCache C# (Cómo funciona para desarrolladores): Figura 2 - Aplicación de consola

Proporcione el nombre del proyecto.

LazyCache C# (Cómo funciona para desarrolladores): Figura 3 - Configuración del proyecto

Proporcione la versión .NET.

LazyCache C# (Cómo funciona para desarrolladores): Figura 4 - Marco de trabajo de destino

Instale el paquete IronPDF.

LazyCache C# (Cómo funciona para desarrolladores): Figura 5 - IronPDF

Instala el paquete LazyCache para añadir llamadas a métodos en caché.

LazyCache C# (Cómo funciona para desarrolladores): Figura 6 - LazyCache

using LazyCache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Código Explicación

  • Crear renderizador: Se crea una instancia de ChromePdfRenderer para gestionar la conversión de contenido HTML a formato PDF.
  • Definir contenido: Contenido HTML ("

    Demo LazyCache y IronPDF

    ", "

    Crear CachingService

    ", etc.) está preparado. Este contenido se convertirá en un PDF y se almacenará en caché para su reutilización.
  • Crear servicio de caché: Un servicio de caché (IAppCache) se instancia utilizando el CachingService de LazyCache. Este servicio de caché perezoso gestiona el almacenamiento y la recuperación de los datos almacenados en caché.
  • Clave de caché: Un identificador único ("uniqueKey") para representar el contenido PDF almacenado en caché.
  • Definir método caro: Un método de fábrica (expensiveLongRunMethod) se define para generar los datos almacenables en caché. Este método invoca el ChromePdfRenderer para renderizar contenido HTML como PDF. El PDF resultante se guarda y se devuelve como una cadena.
  • Obtener o añadir a la caché: Se llama al método GetOrAdd del servicio para recuperar el valor en caché asociado a la cacheKey. Si el valor no existe en la caché, se invoca expensiveLongRunMethod para calcularlo, almacenarlo en la caché y devolverlo. Si el valor ya está en caché, se devuelve directamente.

  • Salida: El contenido del PDF almacenado en caché (como cadena) se imprime en la consola (Consola.WriteLine(cachedValue))que demuestra la recuperación de datos almacenados en caché.

Salida

LazyCache C# (Cómo funciona para desarrolladores): Figura 7 - Salida de la consola

PDF

LazyCache C# (Cómo funciona para desarrolladores): Figura 8 - Salida PDF

Licencias de IronPDF (prueba disponible)

El paquete IronPDF requiere licencia para ejecutarse y generar el PDF. Añada el siguiente código al inicio de la aplicación antes de acceder al paquete.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Licencia de prueba disponible aquí.

Conclusión

LazyCache simplifica la implementación del almacenamiento en caché en aplicaciones C# al proporcionar una API sencilla y la caducidad automática de los elementos almacenados en caché. Al integrar LazyCache en sus proyectos, puede mejorar el rendimiento almacenando en caché de forma eficiente los datos a los que se accede con frecuencia, reduciendo la latencia y optimizando la utilización de recursos de forma atómica y ordenada. Tanto si está creando aplicaciones web, APIs o servicios, LazyCache puede ser una valiosa herramienta para mejorar el rendimiento y la escalabilidad de sus aplicaciones C#.

Por otro lado, IronPDF destaca como una biblioteca C# potente y versátil para manejar documentos PDF dentro de aplicaciones .NET. Sus potentes funciones abarcan la creación, edición, conversión de HTML a PDF y manipulación de PDF mediante programación. Con funciones para la gestión segura de documentos mediante cifrado y firmas digitales, IronPDF permite a los desarrolladores gestionar y personalizar eficazmente los flujos de trabajo de PDF, lo que lo convierte en una valiosa herramienta para una amplia gama de tareas de gestión y generación de documentos en el desarrollo en C#.

< ANTERIOR
FluentEmail C# (Cómo funciona para desarrolladores)
SIGUIENTE >
DuckDB C# (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,516,730 View Licenses >