Zum Fußzeileninhalt springen
.NET HILFE

Microsoft.Extensions.Caching.Memory Beispiel (Mit PDF) in C#

Um Anwendungen reaktionsschnell und effektiv zu konstruieren, sind für .NET-Anwendungen häufig Optimierungsmethoden erforderlich. Caching ist ein leistungsstarker Ansatz, bei dem häufig angeforderte Inhalte vorübergehend in einem verteilten Cache gespeichert werden, um eine schnellere Abrufung zu erleichtern. Die Reduzierung der Verarbeitungszeit und Serverlast mit dieser Strategie kann zu einer erheblichen Steigerung der Anwendungsleistung führen. Zusätzlich können Leistungsindikatoren implementiert werden, um das Caching-System zu überwachen und zu verbessern.

Caching ist eine leistungsstarke Optimierungsstrategie in diesem Kontext. Microsoft.Extensions.Caching.Memory bietet eine effiziente In-Memory-Objekt-Caching-Lösung für .NET-Anwendungen. Ihre PDF-zentrischen Apps werden viel schneller arbeiten und reagieren, wenn Sie den MemoryCache Cache zusammen mit IronPDF strategisch einsetzen.

Wir untersuchen, wie man effizient Microsoft.Extensions.Caching.Memory C#-Beispiele mit IronPDF integriert. In diesem Artikel werden wir die Vorteile von Caching im Hinblick auf den IronPDF HTML zu PDF Konvertierungsprozess besprechen, einige nützliche Implementierungstipps durchgehen und eine detaillierte Anleitung zur Konfiguration des Cachings in Ihrem IronPDF-Programm anbieten. Abschließend werden Sie die Fähigkeiten und Ressourcen haben, um effektive und intuitive PDF-Anwendungen zu entwickeln.

Microsoft.Extensions.Caching.Memory: Die Grundlage des Caching in .NET

Caching ist eine Methode, die in vielen leistungsstarken .NET-Anwendungen verwendet wird, um häufig aufgerufene Daten im Speicher zu speichern und schnell abrufen zu können. Microsoft.Extensions ist eine der vielen Caching-Optionen, die verfügbar sind. Caching.Memory ist eine besonders starke und anpassbare Option. Diese Bibliothek ist ein Bestandteil des größeren Microsoft.Extensions.Caching-Namespaces und bietet einen einfachen, aber effektiven Speichercache-Ansatz.

Schlüsseltypen in "Microsoft.Extensions.Caching.Memory"

IMemoryCache

  • Diese Schnittstelle stellt die grundlegende Fähigkeit zur Nutzung des In-Memory-Caches dar. Sie bietet Möglichkeiten zum Verwalten von Cache-Einträgen sowie zum Hinzufügen, Abrufen und Entfernen dieser.
  • Betrachten Sie es als Ihren primären Einstiegspunkt für Ihre Caching-Prozesse.

MemoryCache

  • Die tatsächliche Implementierung von IMemoryCache erfolgt in dieser Klasse. Sie bietet Verwaltung und tatsächlichen Speichercache-Speicher für zwischengespeicherte Elemente.
  • In ASP.NET Core-Anwendungen wird zur Abrufung einer Instanz von MemoryCache typischerweise Abhängigkeitsinjektion verwendet.

MemoryCacheEntryOptions

Mit dieser Klasse können Sie Konfigurationseinstellungen für spezifische Cache-Elemente festlegen. Diese Einstellungen regulieren Dinge wie:

  • Ablauf: Sie können gleitende Ablaufzeiten (bei denen der Eintrag abläuft, wenn er innerhalb eines bestimmten Intervalls nicht aufgerufen wird) oder absolute Ablaufzeiten (bei denen der Eintrag automatisch abläuft) konfigurieren.
  • Priorität: Diese beeinflusst, ob Elemente entfernt werden sollen, wenn der Cache voll ist. Höher priorisierte Einträge haben eine geringere Chance, entfernt zu werden.
  • Callback nach dem Entfernen: Dadurch können Sie die Logik für die Handhabung von Daten feinabstimmen, wenn diese abgelaufen sind. Es ist besonders nützlich, wenn kritische Daten aktualisiert, Ressourcen verwaltet und Protokolle geführt werden müssen.

CacheEntry

  • Innerhalb des Caches bezeichnet dieser Typ einen einzelnen Eintrag. Es bietet Methoden und Attribute zum Abrufen der Größenangaben, Ablaufeinstellungen und zwischengespeicherte Werte.
  • Im Wesentlichen enthält es alle Informationen zu einem bestimmten Datenstück, das im Cache gespeichert ist.

ICacheEntry

  • Dieses Interface beschreibt die grundlegenden Aktivitäten, die an einem Cache-Element durchgeführt werden können, ist jedoch nicht erforderlich für grundlegende Caching-Vorgänge. Es enthält Anweisungen zum Abrufen des Wertes und der Ablaufdetails. Dies ist häufiger in Szenarien, wo Sie den Zeichenfolgen-Schlüssel abrufen müssen.
  • Dieses Interface wird von der CacheEntry-Klasse implementiert, die eine praktische Implementierung dieser Funktionen bietet.

Installieren und Konfigurieren von Microsoft.Extensions.Caching.Memory

Während des Anwendungsstarts wird der Cache-Service innerhalb der Dienstesammlung der ASP.NET Core-Anwendung konfiguriert. Unten ist eine ASP.NET Core-Anwendung mit konfiguriertem Microsoft.Extensions.Caching.Memory:

Installieren Sie das erforderliche NuGet-Paket

Stellen Sie zuerst sicher, dass Microsoft.Extensions.Caching.Memory für Ihr Projekt installiert ist. Sie können es mit dem Befehl über die NuGet-Paket-Manager-Konsole installieren:

Install-Package Microsoft.Extensions.Caching.Memory

Oder wir können den NuGet-Paket-Manager verwenden, um das Paket zu installieren:

Microsoft.Extensions.Caching.Memory Beispiel (Mit PDF) in C#: Abbildung 1 - Suchen Sie Microsoft.Extensions.Caching.Memory im NuGet-Paket-Manager und installieren Sie es

Konfigurieren Sie Dienste in Startup.cs

Navigieren Sie zur ConfigureServices-Methode in Ihrer ASP.NET Core-App, indem Sie die Datei Startup.cs öffnen. Um den Speicher-Cache-Dienst einzurichten, fügen Sie den folgenden Code hinzu:

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

Das Speicher-Cache-Dienstobjekt wird zur Dienstesammlung der Anwendung hinzugefügt und mit diesem Code konfiguriert. Das Speicher-Cache-System wird mit seinen Standardeinstellungen durch die Funktion AddMemoryCache registriert.

IMemoryCache injizieren

Sobald der Cache-Speicher eingerichtet ist, kann jede Klasse oder Komponente, die Caching benötigt, das Interface IMemoryCache injizieren. In einer Controller- oder Serviceklasse, zum Beispiel:

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

Methoden zum Caching und Abrufen von Daten aus dem Speicher werden durch das IMemoryCache-Interface bereitgestellt.

Konfigurieren der Cache-Optionen

Durch das Festlegen von Cache-Parametern können Sie das Verhalten des Speichercaches ändern, einschließlich Größenbeschränkungen, Taktiken zur Cache-Eintragsentfernung und Regeln zum Ablauf von Cache-Werten. Hier ist ein Beispiel, wie Cache-Optionen gesetzt werden:

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

Passen Sie die Einstellungen entsprechend den Anforderungen Ihrer Anwendung an.

Diese Anweisungen helfen Ihnen, Microsoft.Extensions.Caching.Memory in Ihrer ASP.NET Core-Anwendung zu konfigurieren, sodass sie schneller und effizienter arbeitet, indem häufig aufgerufene Daten gespeichert und abgerufen werden.

Einstieg

Was ist IronPDF?

Mit der bekannten .NET-Bibliothek IronPDF können Programmierer PDF-Dokumente innerhalb von .NET-Anwendungen erstellen, bearbeiten und anzeigen. PDFs aus HTML-Inhalten, Bildern oder Rohdaten zu erstellen, ist nur eine der vielen Funktionen, die es für die Arbeit mit PDFs bietet. Weitere Funktionen umfassen das Hinzufügen von Text, Bildern und Formen zu bereits vorhandenen PDF-Dokumenten, das Konvertieren von HTML-Seiten zu PDFs sowie das Extrahieren von Text und Bildern aus PDFs.

Nachfolgend einige Funktionen von IronPDF:

  • Erstellung von PDFs aus HTML, PNGs und unrohen Daten.
  • Extraktion von Bildern und Text aus PDFs.
  • Hinzufügen von PDF-Kopf- und Fußzeilen sowie Wasserzeichen.
  • Passwortgeschützter und verschlüsselter PDF-Dokumente.
  • Ausfüllen von Formularen und digitale Signaturfunktionen.

Installieren Sie das NuGet-Paket

Stellen Sie sicher, dass das IronPDF-Paket in Ihrem Projekt installiert ist. Die NuGet-Paket-Manager-Konsole kann zur Installation verwendet werden:

Install-Package IronPdf

Um auf die ConfigureServices-Funktion zuzugreifen, öffnen Sie die Datei Startup.cs in Ihrer ASP.NET Core-Anwendung. Um IronPDF zu konfigurieren, fügen Sie den folgenden Code hinzu.

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

Durch die Konfiguration des HtmlToPdf-Dienstes von IronPDF als Singleton stellt dieser Code sicher, dass die Anwendung nur eine Instanz von HtmlToPdf erstellt und verwendet.

Verwendung von Microsoft.Extensions.Caching.Memory mit IronPDF

In .NET-Anwendungen bietet Microsoft.Extensions.Caching.Memory eine praktische Möglichkeit, häufig angeforderte Daten für einen schnelleren Zugriff zu speichern.

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

Wir importieren die für die Arbeit mit Microsoft und ASP.NET erforderlichen Namespaces Microsoft.Extensions.Caching.Memory. Wir erstellen den Controller DemoController, der sich von ControllerBase ableitet. Dieser Controller wird auf über HTTP gesendete Abfragen antworten. Eine Instanz von IMemoryCache wird in den Konstruktor des Controllers injiziert.

Um die Lebensdauer von Diensten zu steuern, einschließlich des Speichercaches, bietet ASP.NET Core Abhängigkeitsinjektion. Mit dem angewandten Attribut [HttpGet] wird die Generate-Methode markiert, um HTTP GET-Anfragen an den Speicher von der angegebenen Route (/Demo) zu bearbeiten. Wir versuchen, die PDF-Daten aus dem Cache mit dem angegebenen Cache-Schlüssel abzurufen. Wenn die Daten nicht im Cache gefunden werden, verwenden wir die Funktion GeneratePdf, um ein neues PDF zu erstellen.

In einem Szenario mit mehreren App-Servern stellen Sie sicher, dass Sie ein verteiltes Caching für eine konsistente Cache-Verwaltung über alle Server hinweg konfigurieren.

Um Microsoft.Extensions.Caching.Memory zu nutzen, konsultieren Sie die bereitgestellte Dokumentation und Beispielcode, um Daten zwischenzuspeichern und die Leistung in ASP.NET Core-Anwendungen zu verbessern. In der Praxis können Sie die Ablaufrichtlinien, Cache-Schlüssel und das Caching-Verhalten an die Bedürfnisse Ihrer Anwendung anpassen. Das Zwischenspeichern von Daten, die teuer zu generieren sind oder häufig von mehreren Threads aufgerufen werden, kann die gesamte Benutzererfahrung verbessern und Reaktionszeiten dramatisch verkürzen.

Microsoft.Extensions.Caching.Memory Beispiel (Mit PDF) in C#: Abbildung 2 - Beispielausgabe des obigen Codes

Abschluss

Alles in allem kann Microsoft.Extensions.Caching.Memory verwendet werden, um die Skalierbarkeit und Leistung von .NET-Anwendungen zu steigern, insbesondere solchen, die auf dem ASP.NET Core-Framework basieren. Entwickler können die Benutzererfahrung verbessern, die Latenzzeit minimieren und den Datenzugriff optimieren, indem sie Speichervorgänge im Speicher nutzen. Die Bibliothek bietet eine flexible und benutzerfreundliche API zur Entwicklung von Caching-Strategien, die gezielt auf spezielle Anwendungsanforderungen ausgerichtet sind, sei es für das Caching von Referenzdaten, Abfrageergebnissen oder berechneten Werten. Sie können spürbare Geschwindigkeitserhöhungen und eine verbesserte Anwendungsreaktionsfähigkeit erzielen, indem Sie bewährte Caching-Praktiken umsetzen und Microsoft.Extensions.Caching.Memory in Ihre .NET-Apps einbinden.

Durch die Nutzung der Microsoft.Extensions Funktionen, mit Hilfe von IronPDF zur dynamischen PDF-Erstellung und Caching.Memory zur effektiven Datenspeicherung, können .NET-Entwickler die Geschwindigkeit ihrer Apps erheblich verbessern. Diese potente Kombination ermöglicht es Entwicklern, mit Leichtigkeit leistungsstarke, skalierbare und reaktionsschnelle Anwendungen zu entwerfen, indem sie die Serverlast senken, das Benutzererlebnis verbessern und Verarbeitungsoverhead vermeiden.

IronPDF kann zu einem angemessenen Preis erworben werden, und der Erwerb des Pakets beinhaltet eine lebenslange Lizenz. Das Paket bietet einen hervorragenden Wert, da es bei $799 beginnt, eine einmalige Gebühr für mehrere Systeme. Für Benutzer mit Lizenzen bietet es rund um die Uhr Online-Ingenieurshilfe. Für weitere Details über die Kosten besuchen Sie bitte die IronPDF Licensing Page. Besuchen Sie diese Seite über Iron Software, um mehr über Produkte von Iron Software zu erfahren.

Häufig gestellte Fragen

Was ist der Zweck von Microsoft.Extensions.Caching.Memory in .NET-Anwendungen?

Microsoft.Extensions.Caching.Memory wird verwendet, um die Leistung in .NET-Anwendungen zu verbessern, indem es ein In-Memory-Objekt-Caching bereitstellt. Es speichert häufig abgerufene Daten im Speicher für einen schnellen Zugriff, was besonders vorteilhaft sein kann, wenn es zusammen mit IronPDF für PDF-Operationen verwendet wird.

Wie kann Caching die Leistung der PDF-Verarbeitung in .NET verbessern?

Caching kann die Verarbeitungszeit und Serverlast reduzieren, indem häufig angeforderte PDF-Daten im Speicher gespeichert werden. In Kombination mit einer Bibliothek wie IronPDF ermöglicht es eine schnellere Erstellung und Bearbeitung von PDFs, was die Geschwindigkeit und Reaktionsfähigkeit der Anwendung insgesamt verbessert.

Wie implementiert man In-Memory-Caching in einer ASP.NET Core-Anwendung?

In ASP.NET Core können Sie In-Memory-Caching implementieren, indem Sie services.AddMemoryCache() in der ConfigureServices-Methode von Startup.cs hinzufügen. Dies lässt sich nahtlos mit IronPDF integrieren, um eine effiziente PDF-Verarbeitung und Datenabrufe zu gewährleisten.

Was ist die Rolle von IMemoryCache beim Caching?

IMemoryCache ist eine Schnittstelle, die in .NET-Anwendungen verwendet wird, um Cache-Einträge effektiv zu verwalten. In Kombination mit IronPDF ermöglicht es Entwicklern, PDF-Daten schnell zu speichern und abzurufen, was die Anwendungsleistung verbessert.

Welche häufigen Konfigurationsoptionen gibt es für das Caching in .NET?

Häufige Konfigurationsoptionen umfassen das Festlegen von Ablaufstrategien, Größenbeschränkungen und Ausmarktungsstrategien mit MemoryCacheEntryOptions. Diese Konfigurationen optimieren den Caching-Prozess, insbesondere bei der Verwendung von IronPDF zur Handhabung von PDFs.

Wie können Entwickler dynamische PDFs in einer .NET-Anwendung erstellen?

Entwickler können IronPDF verwenden, um dynamische PDFs in .NET-Anwendungen zu erstellen. Es unterstützt die Konvertierung von HTML zu PDF, das Hinzufügen von Kopf- und Fußzeilen und mehr, was es zu einem vielseitigen Werkzeug für die PDF-Erstellung und -Bearbeitung macht.

Welche Vorteile bietet die Integration von Caching mit der PDF-Erstellung in .NET?

Die Integration von Caching mit der PDF-Erstellung unter Verwendung von IronPDF in .NET-Anwendungen kann die Geschwindigkeit erheblich erhöhen und die Latenz verringern. Dies führt zu einer besseren Benutzererfahrung und skalierbareren Anwendungen dank des schnelleren Zugriffs auf häufig verwendete Daten.

Wie können Sie das Caching-System in .NET-Anwendungen überwachen und verbessern?

Leistungszähler können implementiert werden, um die Effizienz des Caching-Systems in .NET-Anwendungen zu überwachen. Dieses Monitoring ermöglicht Anpassungen und Verbesserungen, um eine optimale Leistung sicherzustellen, insbesondere bei der Arbeit mit IronPDF für PDF-Aufgaben.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen