Web API 通過 Morcatko.AspNetCore.JsonMergePatch 實現更新部分資源

我曾經在端點使用 Dictionary<string,object> 型別,當調用端傳入 {"name":null} 時,移除 name key;傳入 {"name":"123"} 時,name 得的值等於 "123",這樣便能夠做到類似 Json Path 的功能,參考上篇,在不改變合約的情況之下,這次我想要改用 Morcatko.AspNetCore.JsonMergePatch 來實現更新部分資源並且讓端點的合約變成強型別。

...繼續閱讀 »

ASP.NET Core 網站應用程式如何設定健康檢查

ASP.NET Core 提供了健康檢查的 Middleware,可以讓我們很輕鬆的知道應用程式目前的本身的狀態以及應用程式所依賴其他服務的狀態;也可以讓容器協調器進行重新啟動容器或是暫停服務,比如 K8s 的 Liveness、Readiness

令人驚喜的是 AspNetCore.HealthChecks.UI 提供 UI / Alert 讓監視系統變得更有效率了

...繼續閱讀 »

如何使用 Swagger/OpenAPI Specification + Prism 建立基於合約的 Mock Server

在介接其他人寫的 Web API 時,可以透過 Mock Server 來模擬對方會回傳的資料,比如說 json-server,但這樣往往會因為兩造之間沒有一個合約、規範,各自實作,導致最後在整合的時落差太大;理論上,雙方基於合約、規範,進行開發,最後在整合的時候應該有問題的狀況應該會小一點,Prism 是套基於 Swagger/OpenAPI Specification 的 Mock Server,在 OpenAPI 的生態系裡面算是蠻完整的解決方案之一,接下來,是我對它在使用上的小小心得。

...繼續閱讀 »

如何使用 Swagger / OpenAPI Specification 先行的開發流程

以往,在 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,解除強依賴關係,編寫規範時再也不需要重新建置專案,目前運作起來挺順暢的,接下來,我分享我是怎麼做的

...繼續閱讀 »

.NET 的 Virtual File System - Lexical.FileSystem

甚麼是 VFS?以下出自 wiki

虛擬檔案系統(英語:Virtual file system,縮寫為VFS),又稱虛擬檔案切換系統(virtual filesystem switch),是作業系統的檔案系統虛擬層,在其下是實體的檔案系統。虛擬檔案系統的主要功用,在於讓上層的軟體,能夠用單一的方式,來跟底層不同的檔案系統溝通。在作業系統與之下的各種檔案系統之間,虛擬檔案系統提供了標準的操作介面,讓作業系統能夠很快的支援新的檔案系統。

Lexical.FileSystem 是 .NET 平台的 VFS,能夠為我帶來甚麼幫助呢??

...繼續閱讀 »

[AppMetrics] 如何在 ASP.NET Core 3.1 使用 AppMetrics 收集應用程式中的性能指標

AppMetrics 是一款 Open Source 跨平台的 .NET 的 Library,支援了 .NET Core 和 .NET 4.5.2,前面幾篇提到用 Telegraf 收集作業系統的性能指標,涵蓋整個作業系統,粒度大;當指標粒度要更精準則可以考慮用 AppMetrics 收集更細微的資訊。

範例提供了 ASP.NET Core 3.1、ASP.NET Core 2.2 | .NET4.8、Console Application 4.8、ASP.NET Web API 4.5.2 OWIN、Console Application 4.5.2

.NET Core 文件
https://www.app-metrics.io/


.NET 4.5.2 文件
https://alhardy.github.io/app-metrics-docs/

...繼續閱讀 »