.NET 幫助

LazyCache C#(它如何為開發者工作)

發佈 2024年8月13日
分享:

快取是軟體開發中用於提高性能的基本技術,通過將經常訪問的數據存儲在記憶體或更快的存儲介質中。在C#中, LazyCache 是一個流行的庫,簡化了線程安全緩存實現,讓開發人員更容易在其應用程式中有效地利用緩存,適用於高負載場景。

什麼是 LazyCache?

LazyCache 是一個針對 .NET/ASP.NET Core 應用程式的底層緩存提供庫,提供了一個簡單直觀的緩存資料 API。它以 NuGet 包的形式提供,可以輕鬆整合到 C# 專案中。LazyCache 的主要目標是簡化緩存實現,並減少使用雙重鎖緩存模式管理緩存資訊所需的樣板代碼。

LazyCache 的主要特點:

  1. 簡單的 API: LazyCache 提供了一個簡單明確的 API,用於添加、檢索和移除緩存項目。開發人員可以快速將緩存整合到其應用程式或網頁服務調用中,而無需處理複雜的緩存機制。

  2. 自動過期: LazyCache 支援基於可配置過期策略的緩存項目自動過期。開發人員可以指定緩存項目的過期時間,LazyCache 會自動從緩存資料中移除過期項目。

  3. 內存緩存: LazyCache 默認將緩存項目存儲在內存中,適用於需要快速訪問緩存資料的場景。內存緩存確保緩存資料訪問的低延遲和高吞吐量。

  4. 線程安全操作: LazyCache 提供線程安全的操作,用於添加、檢索和移除緩存項目。這確保多個線程可以同時訪問緩存而不會有數據損壞或不一致的風險。

  5. 可擴展性: LazyCache 設計為可擴展,允許開發人員根據其具體需求自定義緩存行為。它提供了實現自定義緩存策略(例如分佈式緩存或帶有持久性的緩存)的鉤子。

如何在 C# 中使用 LazyCache:

由於其直觀的 API,在 C# 中使用 LazyCache 非常簡單。以下是一個基本示例,演示如何使用 LazyCache 緩存方法調用的結果:

using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

在此範例中,DataService 類別使用 LazyCache 來快取 GetData 的結果。() 方法。GetOrAdd() 方法擷取與指定鍵相關的快取資料 ("資料鍵") 如果存在。如果資料沒有快取,提供的委派 (從資料庫中提取數據()) 執行以獲取數據,然後將其緩存以供將來使用。

IronPDF 介紹

LazyCache C#(它如何為開發人員工作):圖1 - IronPDF

IronPDF 是一個強大的C# PDF庫,允許在.NET專案中生成、編輯和提取PDF文件內容。以下是一些主要功能:

  1. HTML到PDF轉換

    • 將HTML、CSS和JavaScript內容轉換為PDF格式。
    • 使用Chrome渲染引擎生成像素完美的PDF。
    • 從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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码解释

  • 实例化渲染器:创建 ChromePdfRenderer 的实例以处理将 HTML 内容转换为 PDF 格式。
  • 定义内容:HTML 内容 ("

    示範 LazyCache 和 IronPDF

    ", "

    建立 CachingService

    ", 依此類推。) 已準備好。此內容將被渲染成 PDF 並緩存以供重用。
  • 建立快取服務:一個快取服務 (IAppCache) 使用LazyCache的CachingService實例化。此延遲緩存服務管理緩存數據的存儲和檢索。
  • 緩存鍵: 唯一標識符 ("uniqueKey") 被指派代表快取的 PDF 內容。
  • 定義昂貴的方法:一個工廠方法 (昂貴的長期運行方法) 定義用來生成可快取資料。這個方法會調用 ChromePdfRenderer 將 HTML 內容渲染為 PDF。生成的 PDF 會儲存並以字串形式返回。
  • 獲取或添加至快取: 調用服務的 GetOrAdd 方法以檢索與 cacheKey 相關聯的快取值。如果快取中不存在該值,則會調用 expensiveLongRunMethod 來計算它,將其存儲在快取中,並返回它。如果該值已經在快取中,則直接返回。

  • 輸出: 已快取的 PDF 內容 (作為字串) 印刷到控制台 (控制台.寫行(快取值)), 演示了快取資料的檢索。

輸出

LazyCache C#(對開發者的運作方式):圖7 - 主控台輸出

PDF

LazyCache C#(開發人員如何使用):圖 8 - PDF 輸出

IronPDF Licensing (試用版可用)

IronPDF 套件需要授權才能執行並生成 PDF。請在應用程式開始時,在訪問套件之前加入以下代碼。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

試用許可證可用 這裡.

結論

LazyCache 透過提供簡單的 API 和自動到期的快取項目,簡化了 C# 應用程序中的快取實現。通過將 LazyCache 整合到您的專案中,您可以通過高效地快取經常訪問的數據來提升性能,降低延遲並優化資源利用率,方法是以原子且整潔的方式進行。無論您是在構建 Web 應用程序、API 還是服務,LazyCache 都可以成為一個提升 C# 應用程序性能和可擴展性的有價值工具。

另一方面,IronPDF 作為一個強大且多功能的 C# 庫,專門用於在 .NET 應用程序中處理 PDF 文檔。其強大的功能包括創建、編輯 HTML 轉換為 PDF 和以編程方式操作 PDF。通過加密和數字簽名等安全文檔處理功能,IronPDF 賦予開發者有效管理和自定義 PDF 工作流程的能力,使其成為 C# 開發過程中進行各種文檔管理和生成任務的有價值工具。

< 上一頁
FluentEmail C#(開發人員如何使用)
下一個 >
DuckDB C#(對開發人員的運作方式)

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 NuGet 下載 總下載次數: 10,746,704 查看許可證 >