Altbilgi içeriğine atla
.NET YARDıM

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır)

Önbelleğe alma, sık erişilen verileri bellekte veya daha hızlı bir depolama ortamında depolayarak performansı artıran yazılım geliştirmede temel bir tekniktir. C# dilinde, LazyCache, iş parçacığı güvenli önbellek uygulamasını basitleştiren ve geliştiricilerin ağır yük senaryolarında uygulamalarında önbelleğe almayı etkili bir şekilde kullanmalarını kolaylaştıran popüler bir kütüphanedir.

LazyCache nedir?

LazyCache, .NET/ ASP.NET Core uygulamaları için basit ve sezgisel bir API sunan temel bir önbellek sağlayıcı kütüphanesidir. NuGet paketi olarak mevcuttur ve C# projelerine kolayca entegre edilebilir. LazyCache'in birincil amacı, önbellek uygulamasını basitleştirmek ve çifte kilit önbellek deseni kullanarak önbelleğe alınan bilgiyi yönetmek için gereken gereksiz kodu azaltmaktır.

LazyCache'in Temel Özellikleri:

  1. Basit API: LazyCache, önbelleğe alınmış öğeleri eklemek, almak ve kaldırmak için basit bir API sağlar. Geliştiriciler, karmaşık önbellek mekanizmalarıyla uğraşmadan uygulamalarına veya ağ hizmeti çağrılarına hızlıca önbelleğe alma ekleyebilirler.

  2. Otomatik Süre Aşımı: LazyCache, yapılandırılabilir süre aşımı politikalarına dayalı olarak önbelleğe alınmış öğelerin otomatik süre aşımını destekler. Geliştiriciler, önbelleğe alınmış öğeler için süre aşım süresini belirleyebilir ve LazyCache, süre aşımına uğrayan öğeleri önbellek verilerinden kaldırır.

  3. Bellek İçi Önbellek: LazyCache, varsayılan olarak önbelleğe alınmış öğeleri bellekte depolar, bu da önbelleğe alınmış verilere hızlı erişimin gerekli olduğu senaryolar için uygundur. Bellek içi önbellek, önbelleğe alınmış verilere düşük gecikme ve yüksek çıktı sağlar.

  4. İş Parçacığı Güvenli İşlemler: LazyCache, önbelleğe alınmış öğeleri eklemek, almak ve kaldırmak için iş parçacığı güvenli operasyonlar sağlar. Bu, birden fazla iş parçacığının önbelleğe eşzamanlı olarak erişebilmesini sağlar ve verilerin bozulması veya tutarsızlığı tehlikesini ortadan kaldırır.

  5. Genişletilebilirlik: LazyCache, geliştiricilere özel gereksinimlerine göre önbellek davranışını özelleştirme imkanı tanıyan genişletilebilir bir şekilde tasarlanmıştır. Dağıtılmış önbelleğe alma veya kalıcılık ile önbelleğe alma gibi özel önbellek stratejilerini uygulamak için kancalar sağlar.

LazyCache'i C#'ta Nasıl Kullanılır:

LazyCache'i C#'ta kullanmak, sezgisel API'si sayesinde kolaydır. Aşağıda, LazyCache'i kullanarak bir yöntem çağrısının sonucunu önbelleğe nasıl alabileceğinizi gösteren temel bir örnek verilmiştir:

using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
using LazyCache;

public class DataService
{
    // Define a private readonly field for the cache
    private readonly IAppCache _cache;

    // Constructor to initialize the cache
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }

    // Method to retrieve data (cached or fetched)
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }

    // Simulate fetching data from a database
    private string FetchDataFromDatabase()
    {
        return "Cached Data";
    }
}
Imports LazyCache

Public Class DataService
	' Define a private readonly field for the cache
	Private ReadOnly _cache As IAppCache

	' Constructor to initialize the cache
	Public Sub New(ByVal cache As IAppCache)
		_cache = cache
	End Sub

	' Method to retrieve data (cached or fetched)
	Public Function GetData() As String
		Return _cache.GetOrAdd("dataKey", Function()
			' Simulate expensive operation such as database calls
			Return FetchDataFromDatabase()
		End Function)
	End Function

	' Simulate fetching data from a database
	Private Function FetchDataFromDatabase() As String
		Return "Cached Data"
	End Function
End Class
$vbLabelText   $csharpLabel

Bu örnekte, DataService sınıfı, GetData() metodunun sonucunu önbelleğe almak için LazyCache kullanır. GetOrAdd() metodu, belirtilen anahtar ('dataKey') ile ilişkili önbelleğe alınmış verileri varsa alır. Veri önbellekte değilse, sağlanan temsilci FetchDataFromDatabase() verileri almak için yürütülür ve bu da daha sonra gelecek kullanım için önbelleğe alınır.

IronPDF'ye Giriş

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - IronPDF

IronPDF, .NET projelerinde PDF belgeleri oluşturma, düzenleme ve içerik çıkarma imkanı veren güçlü bir C# PDF kütüphanesidir. İşte bazı temel özellikler:

  1. HTML'den PDF'ye Dönüşüm:

    • HTML, CSS ve JavaScript içeriğini PDF formatına dönüştürün.
    • Piksel mükemmel PDF'ler için Chrome İşleme Motorunu kullanın.
    • URL'lerden, HTML dosyalarından veya HTML dizgilerinden PDF'ler üretin.
  2. Görüntü ve İçerik Dönüşümü:

    • Resimleri PDF'ye ve PDF'den dönüştürün.
    • Mevcut PDF'lerden metin ve resimler çıkarın.
    • Çeşitli resim formatları için destek.
  3. Düzenleme ve Manipülasyon:

    • PDF'ler için özellikler, güvenlik ve izinler ayarlayın.
    • Dijital imzalar ekleyin.
    • Meta verileri ve revizyon geçmişini düzenleyin.
  4. Çapraz Platform Desteği:

    • .NET Core (8, 7, 6, 5 ve 3.1+), .NET Standard (2.0+) ve .NET Framework (4.6.2+) ile çalışır.
    • Windows, Linux ve macOS ile uyumludur.
    • Kolay kurulum için NuGet üzerinde mevcuttur.

IronPDF ve LazyCache Kullanarak PDF Belgesi Oluşturma

Başlangıçta, göründüğü gibi Visual Studio kullanarak bir Konsol uygulaması oluşturun.

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Konsol Uygulaması

Proje Adı sağlayın.

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Proje Yapılandırması

.NET versiyonunu sağlayın.

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Hedef Çerçeve

IronPDF paketini yükleyin.

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - IronPDF

Önbelleğe alınmış yöntem çağrıları eklemek için LazyCache paketi yükleyin.

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 6 - LazyCache

using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using IronPdf; // Add the IronPdf namespace
using System;

namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate the Chrome PDF Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";

            // Create the cache service using LazyCache
            IAppCache cache = new CachingService();

            var cacheKey = "uniqueKey"; // Unique key for caching the content

            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () =>
            {
                // Render the HTML content to a PDF
                var pdf = renderer.RenderHtmlAsPdf(content);

                // Export the rendered PDF to a file
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");

                // Return the content as a string
                return content;
            };

            // Get the cached value or execute expensiveLongRunMethod to cache it
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);

            // Output the cached value to the console
            Console.WriteLine(cachedValue);
        }
    }
}
Imports LazyCache
Imports IronPdf ' Add the IronPdf namespace
Imports System

Namespace CodeSample
	Friend Class LazyCacheDemo
		Public Shared Sub Execute()
			' Instantiate the Chrome PDF Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo LazyCache and IronPDF</h1>"
			content &= "<h2>Create CachingService</h2>"

			' Create the cache service using LazyCache
			Dim cache As IAppCache = New CachingService()

			Dim cacheKey = "uniqueKey" ' Unique key for caching the content

			' Define a factory method to generate the cacheable data
			Dim expensiveLongRunMethod As Func(Of String) = Function()
				' Render the HTML content to a PDF
				Dim pdf = renderer.RenderHtmlAsPdf(content)

				' Export the rendered PDF to a file
				pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf")

				' Return the content as a string
				Return content
			End Function

			' Get the cached value or execute expensiveLongRunMethod to cache it
			Dim cachedValue As String = cache.GetOrAdd(cacheKey, expensiveLongRunMethod)

			' Output the cached value to the console
			Console.WriteLine(cachedValue)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Kod Açıklaması

  • Renderer'ı Başlat: HTML içeriğini PDF formatına dönüştürmek için bir ChromePdfRenderer örneği oluşturulur.

  • Define Content: HTML content ("

    Demo LazyCache and IronPDF

    ", "

    Create CachingService

    ", etc.) is prepared. Bu içerik bir PDF olarak dönüştürülecek ve tekrar kullanıma uygun şekilde önbelleğe alınacaktır.

  • Önbellek Hizmeti Yarat: LazyCache'in CachingService kullanılarak bir önbellek hizmeti (IAppCache) oluşturulur. Bu tembel önbellek servisi, önbelleğe alınmış verilerin depolanması ve alınması yönetimini üstlenir.

  • Önbellek Anahtarı: Önbelleğe alınmış PDF içeriğini temsil etmek için benzersiz bir tanımlayıcı ("uniqueKey") atanır.

  • Pahalı Metodu Tanımla: Önbelleğe alınabilir verileri oluşturmak için bir fabrika metodu (expensiveLongRunMethod) tanımlanır. Bu metot, HTML içeriğini PDF olarak işlemek için ChromePdfRenderer çağırır. Oluşan PDF daha sonra kaydedilir ve bir dize olarak döndürülür.

  • Önbellekten Al veya Ekle: Hizmetin GetOrAdd metodu, cacheKey ile ilişkili önbelleğe alınmış değeri almak için çağrılır. Değer önbellekte mevcut değilse, expensiveLongRunMethod bunu hesaplamak, önbelleğe almak ve geri döndürmek için çağrılır. Değer zaten önbellekteyse, doğrudan döndürülür.

  • Çıktı: Önbelleğe alınmış PDF içeriği (bir dize olarak) konsola yazdırılır (Console.WriteLine(cachedValue)), önbelleğe alınmış verilerin alınmasını gösterir.

Çıktı

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 7 - Konsol Çıkışı

PDF

LazyCache C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 8 - PDF Çıkışı

IronPDF Lisanslama (Deneme Mevcut)

IronPDF paketi, PDF oluşturmak ve çalıştırmak için bir lisans gerektirir. Paket erişiminden önce, uygulamanın başlangıcında aşağıdaki kodu ekleyin.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
Imports IronPdf

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY"
$vbLabelText   $csharpLabel

Deneme lisansı IronPDF'nin deneme lisans sayfasında mevcuttur.

Sonuç

LazyCache, kolay bir API ve önbelleğe alınmış öğelerin otomatik süre aşımı sağlayarak C# uygulamalarındaki önbellek uygulamasını basitleştirir. Projelerinize LazyCache'i entegre ederek, sık erişilen verileri verimli bir şekilde önbelleğe alarak performansı artırabilir, gecikmeyi azaltabilir ve kaynak kullanımını atomik ve düzenli bir şekilde optimize edebilirsiniz. Web uygulamaları, API'ler veya hizmetler inşa ediyor olun, LazyCache, C# uygulamalarınızın performansını ve ölçeklenebilirliğini artırmak için değerli bir araç olabilir.

Diğer yandan, IronPDF, .NET uygulamaları içinde PDF belgeleri işleme konusunda güçlü ve çok yönlü bir C# kütüphanesi olarak öne çıkar. Sağlam yetenekleri, HTML'yi PDF'ye dönüştürme, PDF oluşturma, düzenleme ve programatik olarak PDF'leri manipüle etme gibi işlevleri kapsar. Şifreleme ve dijital imzalar yoluyla güvenli belge işleme özellikleriyle IronPDF, geliştiricilere PDF süreçlerini verimli bir şekilde yönetme ve özelleştirme imkanı sunar, C# geliştirmede geniş bir belge yönetimi ve oluşturma görevleri yelpazesi için değerli bir araç haline gelir.

Sıkça Sorulan Sorular

LazyCache nedir ve .NET uygulamalarına nasıl fayda sağlar?

LazyCache, .NET/ASP.NET Core uygulamaları için tasarlanan bir önbellekleme sağlayıcı kütüphanesidir. Bu kütüphane, önbellekleme uygulanmasını basitleştirerek, gereksiz veri alma operasyonlarını en aza indiren bellek içi veri depolama ile performansı artırır.

C#'de LazyCache kullanarak önbellekleme nasıl uygulanır?

C#'da LazyCache kullanarak önbellekleme uygulamak için, kütüphaneyi NuGet üzerinden yüklemeniz ve LazyCache'in CachingService kullanarak bir önbellek hizmeti kurmanız gerekir. Veri önbelleğe almak için, GetOrAdd metodunu kullanabilirsiniz.

LazyCache, verilerin önbellekte güncel kalmasını nasıl sağlar?

LazyCache, belirli bir politikalara göre otomatik sona erme süresi tanımlanmasına olanak vererek, verilerin önbellekte güncel kalmasını sağlar.

LazyCache'i iş parçacığı güvenli yapan nedir?

LazyCache iş parçacığı güvenlidir, böylece birden fazla iş parçacığı önbellek ile etkileşim kurabilir.

C# projelerinde PDF belge yönetimini nasıl optimize edebilirsiniz?

IronPDF kullanarak C# projelerinde PDF yönetimini optimize edebilirsiniz. IronPDF, HTML'den PDF'ye dönüştürme gibi güçlü yetenekler sunar.

LazyCache'i dağıtık önbellek için kullanmak mümkün mü?

Evet, LazyCache, gelişmiş bir önbellekleme stratejisi uygulamanıza imkan verir.

LazyCache ile birlikte bir C# PDF kütüphanesi kullanmanın avantajları nelerdir?

LazyCache ile birlikte IronPDF gibi bir C# PDF kütüphanesini kullanmak, PDF belgelerini etkin bir şekilde oluşturmanıza ve önbelleğe almanıza olanak tanır.

IronPDF gibi bir C# PDF kütüphanesi kullanmanın lisans gereksinimleri nelerdir?

IronPDF'nin tam işlevselliğini kullanmak için bir lisansa ihtiyaçınız vardır. Geliştiriciler, IronPDF'nin web sitesinde deneme lisansıyla başlamalı ve kütüphaneyi etkinleştirmek için uygulama kodlarında lisans anahtarını eklemelidir.

LazyCache, uygulama performansını nasıl artırır?

LazyCache, sıkça erişilen verileri bellekte saklayarak tekrarlanan veri çekme işlemlerine olan ihtiyaçı azaltır ve uygulama performansını artırır. Bu, daha hızlı yanıt süreleri ve veritabanları veya harici veri kaynakları üzerindeki yükün azaltılmasıyla sonuçlanır.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara