フッターコンテンツにスキップ
.NETヘルプ

LazyCache C#(開発者向けの仕組み)

キャッシングは、よくアクセスされるデータをメモリやより高速なストレージ媒体に保存することでパフォーマンスを向上させる、ソフトウェア開発における基本的な技術です。 C#では、LazyCacheはスレッドセーフキャッシュ実装を簡素化するための人気のライブラリで、開発者が負荷の高いシナリオでキャッシングを効果的に利用できるようにします。

LazyCacheとは何ですか?

LazyCacheは、.NET/ASP.NET Coreアプリケーションのための基盤となるキャッシングプロバイダライブラリで、データをキャッシングするためのシンプルで直感的なAPIを提供します。 これはNuGetパッケージとして利用可能で、C#プロジェクトに簡単に統合できます。 LazyCacheの主な目的はキャッシング実装を簡素化し、ダブルロックキャッシュパターンを使用してキャッシュされた情報を管理するために必要な定型コードを減らすことです。

LazyCacheの主な機能:

  1. シンプルなAPI: LazyCacheは、キャッシュ項目を追加、取得、削除するためのわかりやすいAPIを提供します。 開発者は、複雑なキャッシングメカニズムを扱うことなく、アプリケーションやWebサービスコールに素早くキャッシングを統合できます。

  2. 自動有効期限: LazyCacheは、設定可能な期限ポリシーに基づいてキャッシュ項目の自動有効期限をサポートします。 開発者はキャッシュ項目の有効期限を指定でき、LazyCacheは期限切れになった項目をキャッシュデータから削除します。

  3. インメモリキャッシング: LazyCacheはデフォルトでキャッシュ項目をメモリ内に保存し、キャッシュデータへの高速アクセスが必要なシナリオに適しています。 インメモリキャッシングは、キャッシュデータアクセスの低遅延と高スループットを保証します。

  4. スレッドセーフ操作: LazyCacheは、キャッシュ項目の追加、取得、削除のためのスレッドセーフな操作を提供します。 これにより、複数のスレッドがデータの破損や不整合のリスクなしにキャッシュに同時にアクセスできることが保証されます。

  5. 拡張性: LazyCacheは拡張可能に設計されており、開発者が特定の要件に応じてキャッシングの動作をカスタマイズできるようにします。 分散キャッシングや永続性を伴うキャッシングなどのカスタムキャッシング戦略を実装するためのフックを提供します。

C#でLazyCacheを使用する方法:

直感的なAPIのおかげで、C#でLazyCacheを使用するのは簡単です。 以下に、IdleCacheを使用してメソッド呼び出しの結果をキャッシュする方法の基本的な例を示します。

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

この例では、DataServiceクラスがLazyCacheを使用してGetData()メソッドの結果をキャッシュします。 GetOrAdd()メソッドは、指定されたキー("dataKey")に関連付けられたキャッシュデータを取得します。 データがキャッシュされていない場合は、指定されたデリゲートFetchDataFromDatabase()が実行され、データを取得し、将来の使用のためにキャッシュされます。

IronPDFの紹介

LazyCache C#(開発者にとっての動作方法):図1 - IronPDF

IronPDFは、.NETプロジェクト内でPDF文書からコンテンツを生成、編集、および抽出することができる強力なC# PDFライブラリです。 ここにいくつかの主な機能があります:

  1. HTML を PDF に変換:

    • HTML、CSS、JavaScriptコンテンツをPDF形式に変換します。
    • ピクセル単位で正確なPDFを作成するためにChrome Rendering Engineを使用します。
    • URL、HTML ファイル、または HTML 文字列から PDF を生成します。
  2. 画像およびコンテンツの変換:

    • 画像をPDFに変換したり、PDFから画像に変換したりできます。
    • 既存のPDFからテキストや画像を抽出します。
    • さまざまな画像フォーマットをサポートします。
  3. 編集および操作:

    • PDFのプロパティ、セキュリティ、および権限を設定します。
    • デジタル署名を追加します。
    • メタデータや履歴を編集。
  4. クロスプラットフォーム サポート:

    • .NET Core (8、7、6、5、および 3.1+)、.NET Standard (2.0+)、.NET Framework (4.6.2+) 対応。
    • Windows、Linux、および macOS 互換。
    • NuGet で簡単にインストール可能。

IronPDFとLazyCacheを使用してPDFドキュメントを生成する

はじめに、以下のように Visual Studio を使用してコンソールアプリケーションを作成します。

LazyCache C#(開発者にとっての動作方法):図2 - コンソールアプリ

プロジェクト名を提供します。

LazyCache C#(開発者にとっての動作方法):図3 - プロジェクト設定

.NETのバージョンを提供してください。

LazyCache C#(開発者にとっての動作方法):図4 - 対象フレームワーク

IronPDFパッケージをインストールします。

LazyCache C#(開発者にとっての動作方法):図5 - IronPDF

キャッシュされたメソッド呼び出しを追加するためにLazyCacheパッケージをインストールします。

LazyCache C#(開発者にとっての動作方法):図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

コードの説明

  • レンダラーのインスタンス化: HTMLコンテンツをPDF形式に変換するためのChromePdfRendererのインスタンスが作成されます。

  • Define Content: HTML content ("

    Demo LazyCache and IronPDF

    ", "

    Create CachingService

    ", etc.) is prepared. このコンテンツはPDFとしてレンダリングされ、再利用のためにキャッシュされます。

  • キャッシュサービスの作成: キャッシングサービス(IAppCache)がLazyCacheのCachingServiceを使用してインスタンス化されます。 このレイジーキャッシュサービスはキャッシュデータの保存と取得を管理します。

  • キャッシュキー: キャッシュされたPDFコンテンツを表すために「uniqueKey」という一意の識別子が割り当てられます。

  • 高価なメソッドの定義: キャッシュ可能なデータを生成するためのファクトリーメソッド(expensiveLongRunMethod)が定義されます。 このメソッドはHTMLコンテンツをPDFとしてレンダリングするためにChromePdfRendererを呼び出します。 生成されたPDFは保存され、文字列として返されます。

  • キャッシュに追加または取得: サービスのGetOrAddメソッドが呼び出され、cacheKeyに関連付けられたキャッシュ値を取得します。 値がキャッシュに存在しない場合、expensiveLongRunMethodが実行されて計算され、キャッシュに保存され、返されます。 値がすでにキャッシュされている場合、それが直接返されます。

  • 出力: キャッシュされたPDFコンテンツ(文字列として)は、キャッシュデータの取得を示すためにコンソールに出力されます(Console.WriteLine(cachedValue))。

出力

LazyCache C#(開発者にとっての動作方法):図7 - コンソール出力

PDF

LazyCache C#(開発者にとっての動作方法):図8 - PDF出力

IronPDFのライセンス(試用版あり)

IronPDFパッケージは、PDFを実行および生成するためにライセンスが必要です。 パッケージをアクセスする前に、アプリケーションの開始時に次のコードを追加します。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

試用ライセンスはIronPDFの試用版ライセンスページで入手可能です。

結論

LazyCacheは、キャッシュ項目の自動有効期限と直感的なAPIを提供することで、C#アプリケーションにおけるキャッシングの実装を簡素化します。 LazyCacheをプロジェクトに統合することで、よくアクセスされるデータを効率的にキャッシュしてパフォーマンスを向上させ、レイテンシーを削減し、リソースの利用を効率化することができます。 Webアプリケーション、API、またはサービスを構築する場合でも、LazyCacheはC#アプリケーションのパフォーマンスとスケーラビリティを向上させるための貴重なツールとなります。

一方で、IronPDFは.NETアプリケーション内でPDFドキュメントを操作するための強力で多機能なC#ライブラリとして際立っています。 その強力な機能は、PDFの作成、編集、HTMLをPDFにレンダリング、およびPDFのプログラムによる操作を網羅しています。 暗号化やデジタル署名による安全な文書処理の機能を備えたIronPDFは、PDFワークフローを効率的に管理・カスタマイズするための能力を開発者に提供し、C#開発における広範囲のドキュメント管理および生成タスクにとって価値あるツールとなっています。

よくある質問

LazyCache とは何ですか .NET アプリケーションにどのような利益をもたらしますか?

LazyCache は、.NET/ASP.NET Core アプリケーション向けに設計されたキャッシングプロバイダライブラリです。キャッシングの実装を簡素化し、ボイラープレートコードを削減し、メモリ内データストレージを通じてパフォーマンスを向上させることで、これらのアプリケーションに利益をもたらします。

LazyCache を使用して C# でキャッシングを実装する方法は何ですか?

LazyCache を使用して C# にキャッシングを実装するには、NuGet を通じてライブラリをインストールし、LazyCache の CachingService を使ってキャッシングサービスを設定する必要があります。GetOrAdd メソッドを使用して、メソッドコールの結果を保存し、すでにキャッシュされていない場合にデータを取得するためのユニークキーとデリゲートを提供することでデータをキャッシュできます。

LazyCache は、データをどのようにキャッシュ内で最新に保つのでしょうか?

LazyCache は、設定可能なポリシーに基づいてキャッシュされたアイテムの自動期限切れをサポートすることで、データが最新の状態であることを保証します。この機能により、開発者は期限切れ時間を設定し、古いデータがユーザーに提供されるのを防ぎます。

何が LazyCache をスレッドセーフにしているのですか?

LazyCache は、その設計によってスレッドセーフであり、複数のスレッドがデータの破損を心配することなくキャッシュと対話することができます。ダブルロックメカニズムを使用して、マルチスレッドアプリケーションでのキャッシュ操作が安全に行われることを保証します。

C# プロジェクトにおける PDF ドキュメント管理を最適化する方法は何ですか?

C# プロジェクトにおける PDF ドキュメント管理は、HTML から PDF への変換、コンテンツ抽出、PDF 編集などの強力な機能を提供する IronPDF を使用して最適化できます。クロスプラットフォームの互換性をサポートしており、生成された PDF をキャッシュするために LazyCache と統合してパフォーマンスを向上させることができます。

LazyCache を分散キャッシングに使用することは可能ですか?

はい、LazyCache はカスタムキャッシングストラテジーを実装するための拡張性を提供しており、分散キャッシングを含む柔軟性を持っています。この柔軟性により、分散環境をサポートするために、他のキャッシングシステムとの統合が可能です。

LazyCacheと一緒にC# PDFライブラリを使う利点は何ですか?

LazyCacheと一緒にIronPDFのようなC# PDFライブラリを使用することで、PDF ドキュメントを効率的に生成およびキャッシュできます。この組み合わせにより、余分なPDF生成を避けてアプリケーションのパフォーマンスが向上し、頻繁に要求されるドキュメントへの迅速なアクセスが可能になります。

IronPDFのようなC# PDFライブラリを使用するためのライセンス要件は何ですか?

IronPDF をフル機能で利用するにはライセンスが必要です。開発者は IronPDF のウェブサイトで利用可能なトライアルライセンスから始めることができ、アプリケーションコードにライセンスキーを含めて PDF を生成するためにライブラリをアクティブ化する必要があります。

LazyCacheはアプリケーションパフォーマンスをどのように向上させるのですか?

LazyCache は、頻繁にアクセスされるデータをメモリに保存することで、繰り返しのデータ取得操作の必要性を減らし、アプリケーションのパフォーマンスを向上させます。これにより、応答時間が短縮され、データベースや外部データソースにかかる負荷が軽減されます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。