在 .NET Core 定義了兩種快取,本機快取(IMemoryCache);分散式快取(IDistributedCache),用於將快取資料儲存於外部儲存裝置中(如 Redis、SQL Server 或其他分散式快取提供者),使用上沒有甚麼太特別的,單純的記錄下。
[.NET] 控制流程,不使用例外中斷流程控制的寫法
- 1992
- 0
- Error Handler
- 2023-09-09
Exception 是微軟預設中斷流程的手段,要控制好流程就要好好的處理例外,也就是寫 try catch,這會讓流程控制的程式碼看起來很凌亂。於是我需要幾個原則
- 被流程所呼叫的方法都要處理好 Exception/錯誤(根據需求場景,例如:找不到某個資料) 並回傳 Failure 物件
- 若有攔截到 Exception,Failure 物件要裝載 Exception 訊息,並且給予該例外正確的錯誤訊息。
- 盡量在最外層紀錄 Failure 日誌,例如,Controller、Application Layer
- Web API 回傳值不可以包含 Exception
以上是我的原則,在你的團隊裡面應該也有自己的錯誤處理機制;接下來,我用 ASP.NET Core Web API 實際的演練一遍
ASP.NET Core 7 幾個 Model Validation 的技巧
- 2347
- 0
- Validation
- 2023-09-01
微軟一直以來都有提供 Model Validation 讓我們更容易的進行前置條件檢查,這次我想要在 ASP.NET Core Web API 回傳一致性的錯誤結構,捨棄預設錯誤的結構,接下來我將演練 Model Validation 以及 FluentValidation 的使用方式。
Web API 通過 Morcatko.AspNetCore.JsonMergePatch 實現更新部分資源
- 395
- 0
- Json Patch
- 2023-05-11
我曾經在端點使用 Dictionary<string,object> 型別,當調用端傳入 {"name":null} 時,移除 name key;傳入 {"name":"123"} 時,name 得的值等於 "123",這樣便能夠做到類似 Json Path 的功能,參考上篇,在不改變合約的情況之下,這次我想要改用 Morcatko.AspNetCore.JsonMergePatch 來實現更新部分資源並且讓端點的合約變成強型別。
如何使用 Microsoft.FeatureManagement 實現 Feature Toggle
- 434
- 0
- Feature Toggle
- 2023-04-02
在軟體生命週期地演進的過程中,在不同的階段可能需要將某一些功能啟用或停用,這時候就可以選擇 Feature Toggle,微軟的 Microsoft.FeatureManagement 正好是選擇之一,除了基本的 Feature Toggle Flags 之外,也整合到 ASP.NET Core 的生命週期裡面,還有整合 Azure。下圖出自 針對目標受眾啟用分段推出功能 - Azure App Configuration | Microsoft Learn
如何在 ASP.NET Core 6 中使用多種身份驗證
上一篇,我們學習了怎麼自訂身分驗證
ASP.NET Core 6 實作自訂 Authentication 身份驗證,以 Basic Authentication 例 | 余小章 @ 大內殿堂 - 點部落 (dotblogs.com.tw) ,如果一個服務需要有多種以上的驗證,ASP.NET Core 也有支援,接下來我們就來看看怎麼在服務裡面增加多種驗證吧
ASP.NET Core 網站應用程式如何設定健康檢查
- 1698
- 0
- Application Performance Monitor
- 2022-09-15
ASP.NET Core 提供了健康檢查的 Middleware,可以讓我們很輕鬆的知道應用程式目前的本身的狀態以及應用程式所依賴其他服務的狀態;也可以讓容器協調器進行重新啟動容器或是暫停服務,比如 K8s 的 Liveness、Readiness
令人驚喜的是 AspNetCore.HealthChecks.UI 提供 UI / Alert 讓監視系統變得更有效率了
.NET 6 應用程式如何切換環境和組態
- 4925
- 0
- Configuration
- 2022-12-03
以往我們在 .Net Fx 可以透過 Transforms 來切換不同的組態,而在 .NET Core 開始,則改用 Microsoft.Extensions.Configuration 來處理組態,上篇 也針對 Microsoft.Extensions.Configuration 進行了介紹,這篇將針對 .NET 應用程式注入環境的做法做一個簡單的介紹
利用 ASP.NET Core Middleware 統一處理回應訊息
- 2354
- 0
- ASP.NET Core
- 2022-08-21
當你的服務需要隱藏真實的訊息給調用端時,除了在每一個 Action 各自處理,Middleware 也是選擇之一,本想這應該是很簡單的操作,沒想到碰了一鼻子灰,以下是我複寫 HttpContext.Response.Body 的步驟,希望對正觀看的你有幫助。
如何使用 Swagger / OpenAPI Specification 先行的開發流程
- 4391
- 0
- API Specification
- 2022-10-05
以往,在 ASP.NET Fx / ASP.NET Core 我會先寫好 Controller(Server Code) 再搭配 NSwag、Swashbuckle.AspCore 產生 Swagger / OpenAPI Specification Doc,一旦要修改它(Spec.)就必須要重新編譯專案,只是要改文件的錯字,也沒有動到 Server Code 的邏輯,卻要重新 Build Server,幾次下來發現這樣似乎不是很聰明。也常常發生過於關注 Server Code 忽略 Specification ,導致兩邊跟不一致。
現在,我先寫 Specification,然後再透過它產生 Controller (Server Code) 讓 Specification 不再強制依賴 Server Code,解除強依賴關係,編寫規範時再也不需要重新建置專案,目前運作起來挺順暢的,接下來,我分享我是怎麼做的