Quartz.NET 入門指南 - 打造可靠的.NET排程系統
前言在現代軟體開發中,排程任務是一個不可或缺的環節。無論是定期資料備份、報表產生、郵件發送,還是系統維護,都需要一個可靠的排程系統。Quartz.NET 就是一個強大的開源排程框架,它不僅提供了豐富的功能,還具備高度的靈活性和可靠性。 Scheduler Job Store Thread Pool Jobs Triggers Listeners Plugins Quartz.NET 是什麼?Quartz.NET 是 Java Quartz 排程框架的 .NET...
圖解 C# yield - 5分鐘讓你輕鬆掌握迭代器
C# yield 執行流程 開始 迭代器狀態機 呼叫 MoveNext() yield return 值 保存目前狀態 # 為什麼需要 yield? 在C#開發中,我們經常需要處理大量數據的集合。傳統的做法是先將所有數據載入到記憶體中,再進行處理。但這種方式在處理大量數據時會佔用大量記憶體,影響程式效能。 這時候就需要用到 yield 關鍵字。yield 可以讓我們實現延遲執行(Lazy Evaluation),也就是說,只有在真正需要數據時才進行處理,大大節省記憶體使用。 yield 基本用法讓我們從一個簡單的例子開始: 123456789101112131415161718192021// 使用 yield return 產生費波那契數列public static...
IIS環境下使用C#操作LibreOffice進行檔案轉換
在 IIS 環境下使用 C# 操作 LibreOffice 進行檔案轉換問題背景在 Web 應用程式中,我們經常需要提供檔案格式轉換的功能。本文將詳細說明如何在 IIS 環境下,使用 C# 程式碼呼叫 LibreOffice 進行檔案格式轉換(例如:Excel 轉 ODS),並完整解決執行過程中可能遇到的權限問題。 環境需求 Windows Server 環境 IIS 網頁伺服器 LibreOffice 套件 .NET Framework 開發環境 可能遇到的問題 使用一般使用者帳號無法執行轉換 IIS ApplicationPool 權限不足 檔案轉換過程沒有回應 程式執行但找不到輸出檔案 權限不足導致程式無法執行 完整解決方案1. IIS 應用程式集區設定首先確認 IIS 應用程式集區的設定: 開啟 IIS 管理員 找到您的應用程式集區(例如:DefaultAppPool) 右鍵 → 進階設定 設定以下項目: 載入使用者設定檔 = True 識別 = ApplicationPoolIdentity 2. Windows...
C# 常用命名空間參考指南
C# 常用命名空間參考指南筆記一些常用到的命名空間 1. 基礎核心命名空間12345678910using System; // 基礎類型、例外處理using System.Collections; // 非泛型集合using System.Collections.Generic; // 泛型集合using System.Linq; // LINQ 查詢using System.ComponentModel; // 資料綁定、型別轉換using System.Text; // 文字處理using System.Text.RegularExpressions; // 正則表達式using System.Globalization; // 地區和文化資訊using System.Configuration; // 應用程式配置using System.Runtime.Serialization; // 序列化 2. 檔案與 I/O...
System.Text.Json 與 Newtonsoft.Json 的深入比較
System.Text.Json 與 Newtonsoft.Json 的深入比較上一篇文章提到,從Newtonsoft.Json遷移到System.Text.Json的經驗分享,這一篇講講兩個之間的比較,在.NET開發生態系統中,JSON序列化是一個常見的需求。本文將深入比較兩個主要的JSON序列化工具:較新的System.Text.Json和經典的Newtonsoft.Json(也稱為Json.NET)。 歷史背景Newtonsoft.Json 2007年發布 長期作為.NET生態系統的標準JSON處理工具 在.NET Framework時期被廣泛使用 直到.NET Core 2.x都是預設的JSON序列化器 System.Text.Json 隨著.NET Core 3.0(2019年)推出 由微軟開發,作為.NET Core的一部分 設計目標是提供更好的效能和更低的資源使用 效能比較System.Text.Json 優勢 序列化和反序列化速度更快 更低的記憶體使用量 減少垃圾回收的頻率 特別適合處理大型JSON數據 非同步處理的效能更好 實際數據(以處理1MB...
