Saltar al pie de página
.NET AYUDA

Microsoft.Extensions.Caching.Memory Ejemplo (Con PDF) en C#

Para construir aplicaciones de manera receptiva y efectiva, a menudo se necesitan métodos de optimización para aplicaciones .NET. El almacenamiento en caché es un enfoque potente que implica guardar temporalmente material solicitado con frecuencia en una caché distribuida para facilitar una recuperación más rápida. La reducción en el tiempo de procesamiento y la carga del servidor con esta estrategia puede llevar a un aumento significativo en el rendimiento de la aplicación. Además, se pueden implementar contadores de rendimiento para monitorear y mejorar el sistema de almacenamiento en caché.

Almacenamiento en caché es una estrategia de optimización potente en este contexto. Microsoft.Extensions.Caching.Memory proporciona una solución eficiente de almacenamiento en caché de objetos en memoria para aplicaciones .NET. Las aplicaciones centradas en PDF operarán y responderán mucho más rápido si utiliza estratégicamente la caché MemoryCache junto con IronPDF.

Exploramos cómo integrar ejemplos en C# de Microsoft.Extensions.Caching.Memory con IronPDF de manera eficiente. En este artículo, discutiremos las ventajas del almacenamiento en caché con respecto al proceso de Conversión de HTML a PDF de IronPDF, revisaremos algunos consejos útiles de implementación y ofreceremos una guía detallada para configurar el almacenamiento en caché en su programa IronPDF. Cuando todo esté dicho y hecho, tendrás las habilidades y recursos necesarios para desarrollar aplicaciones PDF efectivas e intuitivas.

Microsoft.Extensions.Caching.Memory: La base del almacenamiento en caché en .NET

El almacenamiento en caché es un método utilizado en muchas aplicaciones .NET de alto rendimiento que almacena datos accedidos con frecuencia en memoria para una recuperación rápida. Microsoft.Extensions es una de las muchas opciones de almacenamiento en caché que están accesibles. Caching.Memory es una opción particularmente fuerte y adaptable. Esta biblioteca es un componente del espacio de nombres más grande Microsoft.Extensions.Caching que ofrece un enfoque de almacenamiento en caché en memoria sencillo pero efectivo.

Tipos clave dentro de "Microsoft.Extensions.Caching.Memory"

IMemoryCache

  • La capacidad fundamental para utilizar la caché en memoria está representada por esta interfaz. Ofrece maneras de gestionar entradas en caché y añadir, recuperar y eliminarlas.
  • Considérelo como su punto de entrada principal para sus procesos de almacenamiento en caché.

MemoryCache

  • La implementación real de IMemoryCache está en esta clase. Ofrece administración y almacenamiento real en memoria para elementos en caché.
  • La inyección de dependencias suele utilizarse en aplicaciones ASP.NET Core para obtener una instancia de MemoryCache.

MemoryCacheEntryOptions

Puede especificar configuraciones para elementos de caché específicos con esta clase. Estas configuraciones regulan cosas como:

  • Expiración: puede configurar ventanas de expiración deslizante (donde la entrada expira si no se accede dentro de un cierto intervalo) o tiempos de expiración absoluta (donde la entrada expira automáticamente).
  • Prioridad: esto influye en si eliminar elementos cuando la caché se llena. Las entradas de mayor prioridad tienen una menor posibilidad de ser eliminadas.
  • Callback posterior a la eliminación: esto le permite ajustar la lógica para manejar datos cuando han expirado. Es especialmente útil donde datos críticos necesitan ser actualizados, gestión de recursos y registro.

CacheEntry

  • Dentro de la caché, este tipo denota una sola entrada. Ofrece métodos y atributos para recuperar los detalles de tamaño, configuraciones de expiración y valores en caché.
  • En esencia, contiene toda la información sobre un fragmento particular de datos que se guarda en la caché.

ICacheEntry

  • Esta interfaz describe las actividades básicas que se pueden realizar sobre un elemento de caché, aunque no es necesaria para las operaciones básicas de almacenamiento en caché. Contiene instrucciones sobre cómo recuperar el valor y los detalles de expiración. Esto es más común en situaciones donde tiene que recuperar la clave en formato de cadena.
  • Esta interfaz es implementada por la clase CacheEntry, la cual ofrece una implementación práctica de estas características.

Instalar y configurar Microsoft.Extensions.Caching.Memory

Durante el inicio de la aplicación, se utiliza memoria para configurar el servicio de caché dentro de la colección de servicios de la aplicación ASP.NET Core. A continuación, se muestra una aplicación ASP.NET Core con Microsoft.Extensions.Caching.Memory configurado:

Instalar el paquete NuGet necesario

Primero, asegúrese de que Microsoft.Extensions.Caching.Memory esté instalado para su proyecto. Puede instalarlo utilizando la Consola del Administrador de Paquetes de NuGet con el comando:

Install-Package Microsoft.Extensions.Caching.Memory

O podemos usar el Administrador de Paquetes de NuGet para instalar el paquete:

Ejemplo de Microsoft.Extensions.Caching.Memory (Con PDF) en C#: Figura 1 - Busque Microsoft.Extensions.Caching.Memory en el Administrador de Paquetes de NuGet e instálelo

Configurar servicios en Startup.cs

Navegue hasta el método ConfigureServices en su aplicación ASP.NET Core abriendo el archivo Startup.cs. Para configurar el servicio de caché en memoria, agregue el siguiente código:

using Microsoft.Extensions.Caching.Memory;
public void ConfigureServices(IServiceCollection services)
{
    // Add memory cache service
    services.AddMemoryCache();
    // Other service configurations...
}
using Microsoft.Extensions.Caching.Memory;
public void ConfigureServices(IServiceCollection services)
{
    // Add memory cache service
    services.AddMemoryCache();
    // Other service configurations...
}
$vbLabelText   $csharpLabel

El objeto de servicio de caché en memoria se agrega a la colección de servicios de la aplicación y se configura con este código. El sistema de servicio de caché en memoria se registra utilizando sus configuraciones predeterminadas a través de la función AddMemoryCache.

Inyectar IMemoryCache

Una vez que el almacén de caché esté configurado, cualquier clase o componente que necesite almacenamiento en caché puede tener la interfaz IMemoryCache inyectada en ella. En un controlador o clase de servicio, por ejemplo:

public class MyService
{
    private readonly IMemoryCache _cache;
    public MyService(IMemoryCache cache)
    {
        _cache = cache;
    }
    // Use _cache to perform caching operations...
}
public class MyService
{
    private readonly IMemoryCache _cache;
    public MyService(IMemoryCache cache)
    {
        _cache = cache;
    }
    // Use _cache to perform caching operations...
}
$vbLabelText   $csharpLabel

La interfaz IMemoryCache proporciona métodos para almacenar en caché y recuperar datos de la memoria.

Configurar opciones de caché

Al configurar parámetros de caché, puede alterar cómo se comporta la memoria caché, incluyendo restricciones de tamaño, tácticas de eliminación de entradas de caché y regulaciones de expiración de valores de caché. Aquí hay un ejemplo de cómo configurar opciones de caché:

public void ConfigureServices(IServiceCollection services)
{
    // Configure cache options
    services.AddMemoryCache(options =>
    {
        options.SizeLimit = 1024; // Set the maximum size limit for the cache
        options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit
        options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items
    });
    // Other service configurations...
}
public void ConfigureServices(IServiceCollection services)
{
    // Configure cache options
    services.AddMemoryCache(options =>
    {
        options.SizeLimit = 1024; // Set the maximum size limit for the cache
        options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit
        options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items
    });
    // Other service configurations...
}
$vbLabelText   $csharpLabel

Modifique las configuraciones de acuerdo con las especificaciones de su aplicación.

Estas instrucciones le ayudarán a configurar Microsoft.Extensions.Caching.Memory en su aplicación ASP.NET Core, permitiéndole operar de manera más rápida y eficiente al almacenar y recuperar datos accedidos con frecuencia.

Empezando

¿Qué es IronPDF?

Con la ayuda de la conocida biblioteca .NET IronPDF, los programadores pueden generar, editar y mostrar documentos PDF dentro de aplicaciones .NET. Crear PDFs a partir de contenido HTML, imágenes o datos sin procesar es solo una de las muchas funciones que ofrece para trabajar con PDFs. Otras características incluyen añadir texto, imágenes y formas a documentos PDF preexistentes, convertir páginas HTML a PDFs y extraer texto e imágenes de PDFs.

Algunas características de IronPDF son:

  • Crear PDFs a partir de HTML, PNG y datos sin procesar.
  • Extraer imágenes y texto de PDFs.
  • Añadir cabeceras, pies de página y marcas de agua a PDFs.
  • Documentos PDF con protección por contraseña y cifrado.
  • Rellenar formularios y capacidades de firma digital.

Instalar el paquete NuGet

En su proyecto, asegúrese de que el paquete de IronPDF esté instalado. El Administrador de Paquetes de NuGet puede ser utilizado para instalarlo:

Install-Package IronPdf

Para acceder a la función ConfigureServices, abra el archivo Startup.cs en su aplicación ASP.NET Core. Para configurar IronPDF, agregue el siguiente código.

using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
    // Configure IronPDF
    services.AddSingleton<HtmlToPdf>();
    // Other service configurations...
}
using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
    // Configure IronPDF
    services.AddSingleton<HtmlToPdf>();
    // Other service configurations...
}
$vbLabelText   $csharpLabel

Al configurar el servicio HtmlToPdf de IronPDF como un singleton, este código asegura que la aplicación cree y utilice solo una instancia de HtmlToPdf.

Uso de Microsoft.Extensions.Caching.Memory con IronPDF

En las aplicaciones .NET, Microsoft.Extensions.Caching.Memory ofrece un medio práctico de almacenar datos solicitados con frecuencia para una recuperación más rápida.

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using System.Net;
using System.Net.Http.Headers;
using IronPdf;

namespace DemoWebApplication.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class DemoController : ControllerBase
    {
        private readonly IMemoryCache _cache;
        private readonly HtmlToPdf _htmlToPdf;
        private readonly ILogger<DemoController> _logger;

        public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf)
        {
            _logger = logger;
            _cache = cache;
            _htmlToPdf = htmlToPdf;
        }

        [HttpGet]
        public FileContentResult Generate()
        {
            string fileName = "Sample.pdf";
            var stream = GeneratePdf("Hello IronPDF");
            return new FileContentResult(stream, "application/octet-stream")
            {
                FileDownloadName = fileName
            };
        }

        private byte[] GeneratePdf(string htmlContent)
        {
            // Object key
            string cacheKey = "GeneratedPdf";
            if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes))
            {
                // PDF not found in cache, generate it
                var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
                pdfBytes = pdfDocument.BinaryData;
                // Cache the generated PDF with a sliding expiration of 1 hour
                _cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1));
            }
            return pdfBytes;
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using System.Net;
using System.Net.Http.Headers;
using IronPdf;

namespace DemoWebApplication.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class DemoController : ControllerBase
    {
        private readonly IMemoryCache _cache;
        private readonly HtmlToPdf _htmlToPdf;
        private readonly ILogger<DemoController> _logger;

        public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf)
        {
            _logger = logger;
            _cache = cache;
            _htmlToPdf = htmlToPdf;
        }

        [HttpGet]
        public FileContentResult Generate()
        {
            string fileName = "Sample.pdf";
            var stream = GeneratePdf("Hello IronPDF");
            return new FileContentResult(stream, "application/octet-stream")
            {
                FileDownloadName = fileName
            };
        }

        private byte[] GeneratePdf(string htmlContent)
        {
            // Object key
            string cacheKey = "GeneratedPdf";
            if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes))
            {
                // PDF not found in cache, generate it
                var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
                pdfBytes = pdfDocument.BinaryData;
                // Cache the generated PDF with a sliding expiration of 1 hour
                _cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1));
            }
            return pdfBytes;
        }
    }
}
$vbLabelText   $csharpLabel

Importamos los espacios de nombres necesarios para trabajar con Microsoft y ASP.NET Microsoft.Extensions.Caching.Memory. Creamos el controlador DemoController, que se deriva de ControllerBase. Este controlador responderá a consultas enviadas por HTTP. Se inyecta una instancia de IMemoryCache en el constructor del controlador.

Para controlar el ciclo de vida de los servicios, incluida la caché en memoria, ASP.NET Core ofrece inyección de dependencias. Con el atributo [HttpGet] aplicado, el método Generate está marcado para manejar solicitudes HTTP GET a la tienda desde la ruta designada (/Demo). Intentamos obtener los datos del PDF de la caché utilizando la clave de caché dada. Si no se encuentran los datos en la caché, usamos la función GeneratePdf para crear un nuevo PDF.

En un escenario con múltiples servidores de aplicaciones, asegúrese de configurar almacenamiento en caché distribuido para una gestión coherente de la caché en todos los servidores.

Para utilizar Microsoft.Extensions.Caching.Memory, consulte la documentación y el código de muestra proporcionado para almacenar datos en caché y mejorar el rendimiento en aplicaciones ASP.NET Core. En la práctica, puede ajustar las políticas de expiración, las claves de caché y el comportamiento de almacenamiento en caché para adaptarse a las necesidades de su aplicación. El almacenamiento en caché de datos que es costoso de generar o al que acceden con frecuencia varios hilos puede mejorar la experiencia general del usuario y reducir drásticamente los tiempos de respuesta.

Ejemplo de Microsoft.Extensions.Caching.Memory (Con PDF) en C#: Figura 2 - Ejemplo de salida del código anterior

Conclusión

Considerando todo, Microsoft.Extensions.Caching.Memory se puede utilizar para aumentar la escalabilidad y el rendimiento de las aplicaciones .NET, especialmente aquellas que se basan en el marco ASP.NET Core. Los desarrolladores pueden mejorar la experiencia del usuario, minimizar la latencia y optimizar el acceso a los datos al utilizar almacenamiento en caché en memoria. La biblioteca proporciona una API flexible y fácil de usar para desarrollar estrategias de almacenamiento en caché dirigidas a requisitos específicos de la aplicación, ya sea para almacenar en caché datos de referencia, resultados de consultas o valores calculados. Puede lograr aumentos de velocidad notables y una mayor capacidad de respuesta de la aplicación al adoptar las mejores prácticas de almacenamiento en caché y agregar Microsoft.Extensions.Caching.Memory en sus aplicaciones .NET.

Al aprovechar las características de Microsoft.Extensions, con la ayuda de IronPDF para la creación dinámica de PDF y Caching.Memory para el almacenamiento en caché de datos efectivo, los desarrolladores de .NET pueden mejorar enormemente la velocidad de sus aplicaciones. Esta potente combinación permite a los desarrolladores diseñar fácilmente aplicaciones de alto rendimiento, escalables y receptivas, reduciendo la carga del servidor, mejorando la experiencia del usuario y eliminando la sobrecarga de procesamiento.

IronPDF se puede comprar a un precio razonable, y adquirir el paquete incluye una licencia de por vida. El paquete ofrece un valor excelente, ya que comienza en $799, una tarifa única para múltiples sistemas. Para usuarios con licencias, ofrece ayuda de ingeniería en línea las 24 horas del día. Para obtener más detalles sobre el cargo, visite la Página de Licencias de IronPDF. Visite esta página sobre Iron Software para obtener más información sobre los productos elaborados por Iron Software.

Preguntas Frecuentes

¿Cuál es el propósito de Microsoft.Extensions.Caching.Memory en aplicaciones .NET?

Microsoft.Extensions.Caching.Memory se utiliza para mejorar el rendimiento en aplicaciones .NET proporcionando almacenamiento en caché de objetos en memoria. Almacena datos de acceso frecuente en memoria para una recuperación rápida, lo que puede ser particularmente beneficioso cuando se usa junto con IronPDF para operaciones de PDF.

¿Cómo puede el caché mejorar el rendimiento del procesamiento de PDF en .NET?

El caché puede reducir el tiempo de procesamiento y la carga del servidor al almacenar en memoria datos de PDF solicitados frecuentemente. Cuando se integra con una biblioteca como IronPDF, permite una creación y manipulación de PDF más rápida, mejorando la velocidad y capacidad de respuesta general de la aplicación.

¿Cómo se implementa el almacenamiento en caché en memoria en una aplicación ASP.NET Core?

En ASP.NET Core, puede implementar el almacenamiento en caché en memoria agregando services.AddMemoryCache() en el método ConfigureServices de Startup.cs. Esto se integra perfectamente con IronPDF para un procesamiento eficiente de PDF y recuperación de datos.

¿Cuál es el papel de IMemoryCache en el almacenamiento en caché?

IMemoryCache es una interfaz utilizada en aplicaciones .NET para gestionar eficazmente las entradas de caché. Cuando se combina con IronPDF, permite a los desarrolladores almacenar y recuperar datos PDF rápidamente, mejorando el rendimiento de la aplicación.

Opciones comunes de configuración para caché en .NET?

Las opciones de configuración comunes incluyen establecer políticas de expiración, límites de tamaño y estrategias de eliminación usando MemoryCacheEntryOptions. Estas configuraciones optimizan el proceso de almacenamiento en caché, especialmente cuando se utiliza IronPDF para manejar PDFs.

¿Cómo pueden los desarrolladores crear PDFs dinámicos en una aplicación .NET?

Los desarrolladores pueden usar IronPDF para crear PDFs dinámicos en aplicaciones .NET. Soporta la conversión de HTML a PDF, agregar encabezados y pies de página, y más, lo que lo convierte en una herramienta versátil para la generación y manipulación de PDFs.

¿Cuáles son los beneficios de integrar el almacenamiento en caché con la generación de PDFs en .NET?

Integrar el almacenamiento en caché con la generación de PDFs usando IronPDF en aplicaciones .NET puede mejorar significativamente la velocidad y reducir la latencia. Esto resulta en una mejor experiencia de usuario y aplicaciones más escalables debido al acceso más rápido a datos de uso frecuente.

¿Cómo puede monitorear y mejorar el sistema de almacenamiento en caché en aplicaciones .NET?

Se pueden implementar contadores de rendimiento para monitorear la eficiencia del sistema de almacenamiento en caché en aplicaciones .NET. Este monitoreo permite ajustes y mejoras para asegurar un rendimiento óptimo, especialmente cuando se trabaja con IronPDF para tareas de PDF.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más