在 .NET Core 定義了兩種快取,本機快取(IMemoryCache);分散式快取(IDistributedCache),用於將快取資料儲存於外部儲存裝置中(如 Redis、SQL Server 或其他分散式快取提供者),使用上沒有甚麼太特別的,單純的記錄下。
保護你的機敏性資料,通過 C# VaultSharp 訪問 Hashicorp Vault - 快速入門
開發者不應該把機敏性資料,用明碼的方式存放在電腦,HashiCorp Vault 是一套基於身份的私鑰和加密管理系統,Hashicorp Vault 是一個安全管理工具,專門用於管理機敏性資料,例如:密碼、API 密鑰和其他機密訊息,下圖出自 Introduction | Vault | HashiCorp Developer
原本我本來想要自幹一套 Secret Manager / Config Manage,因為有 Vault 我省去了自幹的時間,這裡,我將嘗試學習使用 C# VaultSharp 訪問 Hashicorp Vault
通過 MiniExcel 批次匯入/匯出
最近有機會又要操作 Excel,很久以前就知道 MiniExcel,趁假日有機會來把玩一下,這次的重點是研究批次讀寫的使用方式,看看有沒有機會降低一次載入大量 Excel 所造成的記憶體損耗。除了 Excel 之外,它也支援 Csv 呢。還沒開始之前看一下效能比較圖。
通過 RateLimiter 限速器,限制執行速度
- 228
- 0
- Rate Limiter
- 2024-03-03
System.Threading.RateLimiting 在 .NET 7 發佈,他提供了 4 種的限速方式,當需要限制執行速度時,透過它讓我們可以根據需求來決定 Web API、HttpClient、流程限速,有了這個就可以不用自己控制執行速度了
解決在 Web API 使用 HttpClient / IHttpClientFactory 處理 Cookie 出現狀態錯亂的問題
- 377
- 0
- HttpClient
- 2024-09-21
日前,在工作上碰到了 HttpClient 處理 Cookie 時,用戶取得 Cookie 狀態錯移,就是 B 用戶拿到 A 用戶的 Cookie 狀態,追了一下,才發現是預設共用了 CookieContainer 了,要怎麼解這題??
利用 JsonDiffPatch 產生資料異動時的差異內容,縮小儲存容量
當資料有異動 (CUD) 的時候,我會把異動的結果存放在另一張表,稱之為歷程 History 或是快照 Snapshot,讓活動中的資料內容都是有用的,其他的資料表要記錄"當下"的狀態時,則是參考 Snapshot 的資料,例如 Id+Version,這次我要用 JsonDiffPatch 來產生差異資料內容,並且還原出當時的內容,就來看看我怎麼實作。
EF Core + Cursor-based pagination 的寫法
我們都知道,可以透過分頁技巧,將大量資料切成小部分回傳給調用端,常見的技巧就是 Offset-based 以及 Cursor-based,我將使用 EF Core + Postgresql 實作分頁
下圖出自:A deep dive into cursor-based pagination in MongoDB (engage.so)
Specflow table 搭配 json 資料的幾個需要注意的寫法
Specflow 的 table 預設用來處理單一欄位,若是想要在欄位裡面塞入 json 或者是比對 json 就得自行處理,這裡列出我常用的方式。
不使用 HttpContext 傳遞 Context 的寫法
上篇 有提到可以透過 ASP.NET / ASP.NET Core 的 HttpContext 來傳遞狀態,由於他的生命週期很短,每一個調用者擁有獨立的狀態,很適合用來跨層傳遞狀態;現在,我想要降低對 HttpContext 的依賴,改由自訂的 ContextAccessor 保留物件的狀態,傳遞系統所必要的狀態,統一由一個點進行修改,比如登入帳號、追蹤 Id,其他的點,只能取用不能修改。
在 .NET 的 Dependency Injection Container 中使用延遲實例化
- 427
- 0
- DI Container
當我們想要讓物件延遲實例化時,可以透過 Lazy<T> + Delegate 來實現這件事,同樣的在 DI Container 也可以套件,無意間發現 Lazy Proxy 這個套件,可以簡化配置 Lazy 的配置,立馬收入武器內