Przejdź do treści stopki
POMOC .NET

Przykład Microsoft.Extensions.Caching.Memory (z plikiem PDF) w języku C#

Aby tworzyć aplikacje responsywne i wydajne, często potrzebne są metody optymalizacji aplikacji .NET. Buforowanie to skuteczne podejście polegające na tymczasowym przechowywaniu często wyszukiwanych materiałów w rozproszonej pamięci podręcznej w celu przyspieszenia ich pobierania. Skrócenie czasu przetwarzania i zmniejszenie obciążenia serwera dzięki tej strategii może prowadzić do znacznego wzrostu wydajności aplikacji. Dodatkowo można wdrożyć liczniki wydajności w celu monitorowania i ulepszania systemu buforowania.

[Caching](https://en.wikipedia.org/wiki/Cache_(computing) jest potężną strategią optymalizacyjną w tym kontekście. Microsoft.Extensions.Caching.Memory zapewnia wydajne rozwiazanie do keszowania obiektow w pamieci dla aplikacji .NET. Twoje aplikacje zorientowane na PDF beda dzialac i odpowiadac znacznie szybciej, jesli strategicznie wykorzystasz kesz MemoryCache wraz z IronPDF.

Przedstawiamy, jak efektywnie zintegrowac przyklady Microsoft.Extensions.Caching.Memory w C# z IronPDF. W tym artykułe omówimy zalety buforowania w procesie konwersji HTML do PDF w IronPDF, przedstawimy kilka przydatnych wskazówek dotyczących wdrażania oraz szczegółowy przewodnik po konfiguracji buforowania w programie IronPDF. Kiedy wszystko będzie już gotowe, będziesz dysponować umiejętnościami i zasobami niezbędnymi do tworzenia skutecznych i intuicyjnych aplikacji do obsługi plików PDF.

Microsoft.Extensions.Caching.Memory: Podstawa keszowania w .NET

Buforowanie to metoda stosowana w wielu wysokowydajnych aplikacjach .NET, która polega na przechowywaniu często używanych danych w pamięci w celu ich szybkiego odzyskania. Microsoft.Extensions jest jedna z wielu dostepnych opcji keszowania. Caching.Memory to szczegolnie silna i elastyczna opcja. Ta biblioteka jest czescia wiekszego przestrzeni nazw Microsoft.Extensions.Caching, oferujacego proste, ale skuteczne podejscie do keszowania w pamieci.

Kluczowe typy w "Microsoft.Extensions.Caching.Memory"

IMemoryCache

  • Ten interfejs reprezentuje podstawową funkcję wykorzystania pamięci podręcznej w pamięci. Oferuje sposoby zarządzania wpisami w pamięci podręcznej oraz ich dodawania, pobierania i usuwania.
  • Potraktuj to jako główny punkt wejścia dla swoich procesów buforowania.

MemoryCache

  • Wlasciwa implementacja IMemoryCache znajduje sie w tej klasie. Oferuje funkcje administracyjne oraz rzeczywistą pamięć w pamięci operacyjnej dla elementów buforowanych.
  • Iniekcja zaleznosci jest zazwyczaj uzywana w aplikacjach ASP.NET Core, aby pobrac instancje MemoryCache.

MemoryCacheEntryOptions

Za pomocą tej klasy można określić ustawienia konfiguracyjne dla konkretnych elementów pamięci podręcznej. Te ustawienia regulują takie kwestie jak:

  • Wygasanie: Można skonfigurować ruchome okna wygaśnięcia (gdzie wpis wygasa, jeśli nie zostanie wywołany w określonym przedziale czasu) lub absolutne czasy wygaśnięcia (gdzie wpis wygasa automatycznie).
  • Priorytet: Wpływa na to, czy elementy zostaną usunięte, gdy pamięć podręczna się zapełni. Wpisy o wyższym priorytecie mają mniejsze szanse na usunięcie.
  • Wywołanie zwrotne po wygaśnięciu: Pozwala to na precyzyjne dostosowanie logiki obsługi danych po ich wygaśnięciu. Jest to szczególnie przydatne w sytuacjach, gdy krytyczne dane wymagają odświeżania, zarządzania zasobami i rejestrowania.

CacheEntry

  • W pamięci podręcznej ten typ oznacza pojedynczy wpis. Oferuje metody i atrybuty do pobierania szczegółów dotyczących rozmiaru, ustawień wygaśnięcia oraz wartości z pamięci podręcznej.
  • Zasadniczo zawiera wszystkie informacje dotyczące konkretnego fragmentu danych przechowywanego w pamięci podręcznej.

ICacheEntry

  • Interfejs ten opisuje podstawowe czynności, które można wykonać na elemencie pamięci podręcznej, choć nie jest to konieczne do podstawowych operacji buforowania. Zawiera instrukcje dotyczące pobierania wartości i szczegółów dotyczących wygaśnięcia. Jest to częściej spotykane w sytuacjach, w których trzeba pobrać klucz ciągu znaków.
  • Ten interfejs jest zaimplementowany przez klase CacheEntry, ktora oferuje praktyczna implementacje tych funkcji.

Zainstaluj i skonfiguruj Microsoft.Extensions.Caching.Memory

Podczas uruchamiania aplikacji pamięć jest wykorzystywana do konfiguracji usługi pamięci podręcznej w ramach kolekcji usług aplikacji .NET Core. Poniżej znajduje się aplikacja ASP.NET Core z skonfigurowanym Microsoft.Extensions.Caching.Memory:

Zainstaluj wymagany pakiet NuGet

Najpierw upewnij się, że Microsoft.Extensions.Caching.Memory jest zainstalowany dla Twojego projektu. Można go zainstalować za pomocą konsoli NuGet Package Manager Console, używając polecenia:

Install-Package Microsoft.Extensions.Caching.Memory

Możemy też użyć menedżera pakietów NuGet, żeby zainstalować pakiet:

Microsoft.Extensions.Caching.Memory Przyklad (z PDF) w C#: Rysunek 1 - Wyszukaj Microsoft.Extensions.Caching.Memory w Menedzerze Pakietow NuGet i zainstaluj go

Konfiguracja usług w pliku Startup.cs

Przejdz do metody ConfigureServices w swojej aplikacji ASP.NET Core, otwierajac plik Startup.cs. Aby skonfigurowac usluge keszowania w pamieci, dodaj nastepujacy kod:

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...
}
Imports Microsoft.Extensions.Caching.Memory
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Add memory cache service
	services.AddMemoryCache()
	' Other service configurations...
End Sub
$vbLabelText   $csharpLabel

Obiekt usługi pamięci podręcznej jest dodawany do kolekcji usług aplikacji i konfigurowany przez ten kod. Usługa systemu keszowania w pamięci jest rejestrowana, używając domyślnych konfiguracji za pomocą funkcji AddMemoryCache.

Iniektuj IMemoryCache

Po skonfigurowaniu magazynu keszu, kazda klasa lub komponent, ktore potrzebuja keszowania, moga miec wstrzykiwany do nich interfejs IMemoryCache. Na przykład w klasie kontrolera lub usługi:

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...
}
Public Class MyService
	Private ReadOnly _cache As IMemoryCache
	Public Sub New(ByVal cache As IMemoryCache)
		_cache = cache
	End Sub
	' Use _cache to perform caching operations...
End Class
$vbLabelText   $csharpLabel

Metody do keszowania i pobierania danych z pamięci są dostarczane przez interfejs IMemoryCache.

Konfiguracja opcji pamięci podręcznej

Ustawiając parametry pamięci podręcznej, można zmienić sposób jej działania, w tym ograniczenia rozmiaru, taktyki usuwania wpisów z pamięci podręcznej oraz zasady wygasania wartości w pamięci podręcznej. Oto przykład ustawiania opcji pamięci podręcznej:

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...
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Configure cache options
	services.AddMemoryCache(Sub(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
	End Sub)
	' Other service configurations...
End Sub
$vbLabelText   $csharpLabel

Zmodyfikuj ustawienia zgodnie ze specyfikacją swojej aplikacji.

Te instrukcje pomoga Ci skonfigurowac Microsoft.Extensions.Caching.Memory w aplikacji ASP.NET Core, co pozwoli jej dzialac szybciej i sprawniej przez przechowywanie i pobieranie czesto uzywanych danych.

Pierwsze kroki

Czym jest IronPDF?

Dzięki znanej bibliotece .NET IronPDF programiści mogą generować, edytować i wyświetlać dokumenty PDF w aplikacjach .NET. Tworzenie plików PDF z treści HTML, obrazów lub surowych danych to tylko jedna z wielu funkcji, które oferuje do pracy z plikami PDF. Inne funkcje obejmują dodawanie tekstu, obrazów i kształtów do istniejących dokumentów PDF, konwersję stron HTML do formatu PDF oraz wyodrębnianie tekstu i obrazów z plików PDF.

Poniżej przedstawiono niektóre funkcje IronPDF:

  • Tworzenie plików PDF z HTML, PNG i nieprzetworzonych danych.
  • Pobieranie obrazów i tekstu z plików PDF.
  • Dodawanie nagłówków, stopek i znaków wodnych do plików PDF.
  • Dokumenty PDF z ochroną hasłem i szyfrowaniem.
  • Wypełnianie formularzy i funkcje podpisu cyfrowego.

Zainstaluj pakiet NuGet

W ramach projektu upewnij się, że pakiet IronPDF jest zainstalowany. Do instalacji można użyć konsoli menedżera pakietów NuGet:

Install-Package IronPdf

Aby uzyskac dostep do funkcji ConfigureServices, otworz plik Startup.cs w swojej aplikacji ASP.NET Core. Aby skonfigurować IronPDF, dodaj następujący kod.

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...
}
Imports IronPdf
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Configure IronPDF
	services.AddSingleton(Of HtmlToPdf)()
	' Other service configurations...
End Sub
$vbLabelText   $csharpLabel

Konfigurujac usluge HtmlToPdf IronPDF jako singleton, kod ten zapewnia, ze aplikacja tworzy i uzywa tylko jednej instancji HtmlToPdf.

Uzywanie Microsoft.Extensions.Caching.Memory z IronPDF

W aplikacjach .NET, Microsoft.Extensions.Caching.Memory oferuje praktyczny środek przechowywania często wymaganych danych w celu szybszego ich pobierania.

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;
        }
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Extensions.Caching.Memory
Imports System.Net
Imports System.Net.Http.Headers
Imports IronPdf

Namespace DemoWebApplication.Controllers
	<ApiController>
	<Route("[controller]")>
	Public Class DemoController
		Inherits ControllerBase

		Private ReadOnly _cache As IMemoryCache
		Private ReadOnly _htmlToPdf As HtmlToPdf
		Private ReadOnly _logger As ILogger(Of DemoController)

		Public Sub New(ByVal logger As ILogger(Of DemoController), ByVal cache As IMemoryCache, ByVal htmlToPdf As HtmlToPdf)
			_logger = logger
			_cache = cache
			_htmlToPdf = htmlToPdf
		End Sub

		<HttpGet>
		Public Function Generate() As FileContentResult
			Dim fileName As String = "Sample.pdf"
			Dim stream = GeneratePdf("Hello IronPDF")
			Return New FileContentResult(stream, "application/octet-stream") With {.FileDownloadName = fileName}
		End Function

		Private Function GeneratePdf(ByVal htmlContent As String) As Byte()
			' Object key
			Dim cacheKey As String = "GeneratedPdf"
			Dim pdfBytes() As Byte
			If Not _cache.TryGetValue(cacheKey, pdfBytes) Then
				' PDF not found in cache, generate it
				Dim 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))
			End If
			Return pdfBytes
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Importujemy przestrzenie nazw wymagane do pracy z Microsoft.Extensions.Caching.Memory Microsoft i ASP.NET. Tworzymy kontroler DemoController, ktory pochodzi od ControllerBase. Ten kontroler odpowiedzie na zapytania przeslane przez HTTP. Instancja IMemoryCache jest wstrzykiwana do konstruktora kontrolera.

Aby kontrolować czas działania usług, w tym pamięci podręcznej, .NET Core oferuje wstrzykiwanie zależności. Z atrybutem [HttpGet] zastosowanym, metoda Generate jest oznaczona do obslugi zadania HTTP GET do sklepu z wyznaczonej trasy (/Demo). Próbujemy pobrać dane PDF z pamięci podręcznej przy użyciu podanego klucza pamięci podręcznej. Jesli dane nie zostana znalezione w keszu, uzywamy funkcji GeneratePdf do utworzenia nowego PDF.

W przypadku wielu serwerów aplikacji należy skonfigurować buforowanie rozproszone, aby zapewnić spójną obsługę pamięci podręcznej na wszystkich serwerach.

Aby skorzystać z Microsoft.Extensions.Caching.Memory, odwiedź dokumentację i przykładowy kod dostarczony do keszowania danych i zwiększenia wydajności w aplikacjach ASP.NET Core. W praktyce można dostosować zasady wygasania, klucze pamięci podręcznej i zachowanie pamięci podręcznej do potrzeb aplikacji. Buforowanie danych, których generowanie jest kosztowne lub do których często dostęp ma wiele wątków, może poprawić ogólne wrażenia użytkownika i znacznie skrócić czas odpowiedzi.

Microsoft.Extensions.Caching.Memory Przyklad (z PDF) w C#: Rysunek 2 - Przykład wyjścia z powyższego kodu

Wnioski

Reasumujac, Microsoft.Extensions.Caching.Memory moze byc uzywane do zwiekszenia skalowalnosci i wydajnosci aplikacji .NET, szczegolnie tych opartych na frameworku ASP.NET Core. Programiści mogą poprawić komfort użytkowania, zminimalizować opóźnienia i zoptymalizować dostęp do danych, wykorzystując buforowanie w pamięci. Biblioteka zapewnia elastyczny i przyjazny dla użytkownika interfejs API do opracowywania strategii buforowania dostosowanych do konkretnych wymagań aplikacji, niezależnie od tego, czy chodzi o buforowanie danych referencyjnych, wyników zapytań czy obliczonych wartości. Mozesz osiagnac zauwazalne zwiekszenie szybkosci i lepsza responsywnosc aplikacji, przyjmujac najlepsze praktyki keszowania i dodajac Microsoft.Extensions.Caching.Memory do swoich aplikacji .NET.

Poprzez wykorzystanie funkcji Microsoft.Extensions, przy pomocy IronPDF do dynamicznego tworzenia PDF i Caching.Memory do skutecznego keszowania danych, programisci .NET moga znacznie zwiekszyc szybkosc swoich aplikacji. Ta potężna kombinacja umożliwia programistom łatwe projektowanie aplikacji o wysokiej wydajności, które są skalowalne i responsywne poprzez redukcję obciążenia serwera, usprawnienie doświadczeń użytkowników i eliminację nadmiaru przetwarzania.

IronPDF można nabyć w rozsądnej cenie, a zakup pakietu obejmuje dożywotnią licencję. Pakiet oferuje doskonałą wartość, ponieważ zaczyna się od $999, jednorazowej opłaty za wiele systemów. Użytkownikom posiadającym licencje oferuje całodobową pomoc techniczną online. Więcej informacji na temat opłat można znaleźć na stronie licencyjnej IronPDF. Odwiedź tę stronę poświęconą firmie Iron Software, aby dowiedzieć się więcej o produktach tej firmy.

Często Zadawane Pytania

Jaki jest cel biblioteki Microsoft.Extensions.Caching.Memory w aplikacjach .NET?

Microsoft.Extensions.Caching.Memory służy do zwiększania wydajności aplikacji .NET poprzez zapewnienie buforowania obiektów w pamięci. Przechowuje często używane dane w pamięci w celu szybkiego ich odzyskiwania, co może być szczególnie korzystne w połączeniu z IronPDF for .NET do operacji na plikach PDF.

W jaki sposób buforowanie może poprawić wydajność przetwarzania plików PDF w środowisku .NET?

Buforowanie może skrócić czas przetwarzania i zmniejszyć obciążenie serwera poprzez przechowywanie często żądanych danych PDF w pamięci. Po zintegrowaniu z biblioteką taką jak IronPDF pozwala to na szybsze tworzenie i edycję plików PDF, poprawiając ogólną szybkość działania aplikacji i jej responsywność.

Jak wdrożyć buforowanie w pamięci w aplikacji ASP.NET Core?

W ASP.NET Core można zaimplementować buforowanie w pamięci, dodając services.AddMemoryCache() w metodzie ConfigureServices w pliku Startup.cs. Integruje się to płynnie z IronPDF for .NET, zapewniając wydajne przetwarzanie plików PDF i pobieranie danych.

Jaka jest rola IMemoryCache w buforowaniu?

IMemoryCache to interfejs używany w aplikacjach .NET do efektywnego zarządzania wpisami w pamięci podręcznej. W połączeniu z IronPDF pozwala programistom na szybkie przechowywanie i pobieranie danych PDF, zwiększając wydajność aplikacji.

Jakie są typowe opcje konfiguracyjne buforowania w .NET?

Typowe opcje konfiguracyjne obejmują ustawianie zasad wygasania, limitów rozmiaru i strategii usuwania przy użyciu MemoryCacheEntryOptions. Konfiguracje te optymalizują proces buforowania, zwłaszcza podczas korzystania z IronPDF do obsługi plików PDF.

W jaki sposób programiści mogą tworzyć dynamiczne pliki PDF w aplikacji .NET?

Programiści mogą używać IronPDF do tworzenia dynamicznych plików PDF w aplikacjach .NET. Obsługuje on konwersję HTML do PDF, dodawanie nagłówków i stopek oraz wiele innych funkcji, co czyni go wszechstronnym narzędziem do generowania i edycji plików PDF.

Jakie są zalety integracji buforowania z generowaniem plików PDF w środowisku .NET?

Zintegrowanie buforowania z generowaniem plików PDF przy użyciu IronPDF w aplikacjach .NET może znacznie zwiększyć szybkość i zmniejszyć opóźnienia. Skutkuje to lepszym doświadczeniem użytkownika i bardziej skalowalnymi aplikacjami dzięki szybszemu dostępowi do często używanych danych.

Jak można monitorować i ulepszać system buforowania w aplikacjach .NET?

Liczniki wydajności można wdrożyć w celu monitorowania efektywności systemu buforowania w aplikacjach .NET. Takie monitorowanie pozwala na wprowadzanie zmian i ulepszeń w celu zapewnienia optymalnej wydajności, zwłaszcza podczas pracy z IronPDF for .NET przy zadaniach związanych z plikami PDF.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie