Zum Fußzeileninhalt springen
.NET HILFE

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

Um Anwendungen reaktionsschnell und effektiv zu konstruieren, sind for .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 for .NET-Anwendungen. Ihre PDF-zentrierten Apps funktionieren und reagieren viel schneller, wenn Sie den MemoryCache Cache strategisch zusammen mit IronPDF verwenden.

Wir untersuchen, wie Microsoft.Extensions.Caching.Memory C#-Beispiele effizient mit IronPDF integriert werden können. 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 Cachings 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 verfügbaren Caching-Optionen. Caching.Memory ist eine besonders starke und anpassungsfähige Option. Diese Bibliothek ist ein Bestandteil des größeren Microsoft.Extensions.Caching Namespace und bietet einen einfachen, aber effektiven Ansatz für In-Memory-Caching.

Schlüsseltypen innerhalb von "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 befindet sich in dieser Klasse. Sie bietet Verwaltung und tatsächlichen Speichercache-Speicher für zwischengespeicherte Elemente.
  • Abhängigkeitsinjektion wird in der Regel in ASP.NET Core-Anwendungen verwendet, um eine Instanz von MemoryCache abzurufen.

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 Umsetzung dieser Funktionen bietet.

Installation und Konfiguration von Microsoft.Extensions.Caching.Memory

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

Installieren Sie das erforderliche NuGet-Paket

Stellen Sie zunächst 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 in NuGet Package Manager nach Microsoft.Extensions.Caching.Memory und installieren Sie es

Konfigurieren Sie Dienste in Startup.cs

Navigieren Sie zur ConfigureServices Methode in Ihrer ASP.NET Core-App, indem Sie die Startup.cs Datei öffnen. Um den Memory 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. Der Memory Cache-Systemdienst wird über die AddMemoryCache Funktion mit seinen Standardkonfigurationen registriert.

Injizieren IMemoryCache

Sobald der Cache-Speicher eingerichtet ist, kann jede Klasse oder Komponente, die Caching benötigt, das IMemoryCache Interface injiziert bekommen. 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 Cachen und Abrufen von Daten aus dem Speicher werden vom 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 dabei, Microsoft.Extensions.Caching.Memory in Ihrer ASP.NET Core-Anwendung zu konfigurieren und es schneller und effizienter arbeiten zu lassen, 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 Startup.cs Datei 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

Indem der HtmlToPdf Dienst von IronPDF als Singleton konfiguriert wird, 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 zum Speichern häufig angeforderter Daten für schnellere Abrufe.

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 erforderlichen Namespaces, um mit Microsoft und ASP.NET Microsoft.Extensions.Caching.Memory zu arbeiten. Wir erstellen den DemoController Controller, der von ControllerBase abgeleitet ist. Dieser Controller wird auf über HTTP gesendete Anfragen 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 [HttpGet] Attribut versehen, wird die Generate Methode markiert, um HTTP GET-Anfragen vom festgelegten Pfad (/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 GeneratePdf Funktion, 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, ziehen Sie die Dokumentation und die bereitgestellten Beispielcodes zu Rate, um Daten zu cachen 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 aus dem obigen Code

Abschluss

Alles in allem kann Microsoft.Extensions.Caching.Memory verwendet werden, um die Skalierbarkeit und Leistung von .NET-Anwendungen zu erhöhen, insbesondere von 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. Durch die Übernahme von Caching-Best Practices und das Hinzufügen von Microsoft.Extensions.Caching.Memory in Ihre .NET-Apps können Sie deutliche Geschwindigkeitssteigerungen und eine verbesserte Reaktionsfähigkeit der Anwendung erzielen.

Durch die Nutzung der Microsoft.Extensions Funktionen, mit Hilfe von IronPDF zur dynamischen PDF-Erstellung und Caching.Memory für effektives Daten-Caching, können .NET-Entwickler die Geschwindigkeit ihrer Apps erheblich steigern. Diese leistungsstarke Kombination ermöglicht es Entwicklern, leistungsstarke, skalierbare und reaktionsschnelle Anwendungen einfach zu gestalten, indem sie die Serverbelastung verringern, die Benutzererfahrung verbessern und die Verarbeitungskosten beseitigen.

IronPDF kann zu einem angemessenen Preis erworben werden, und der Erwerb des Pakets beinhaltet eine lebenslange Lizenz. Das Paket bietet ein hervorragendes Preis-Leistungs-Verhältnis, da es bei einem einzigen Gebühr von $799 für mehrere Systeme beginnt. 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 Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO ...

Weiterlesen

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me