.NET Polly Essential

Polly .NET foundation 的 Polly 專案是為了解決暫時性錯誤處理(transient-fault-handling)的一個函式庫,裡面提供了處理眾多相關錯誤處理的函式呼叫。 目前的應用程式越來越少是自己獨立作業就把一個 request 或是一項作業給處理完成的,通常都會跟內部或是外部系統合作,而這個部份通常為了解相依關係,會定義好介面常見的就是定義 Api 他的傳入與回傳值,尤其是在這個微服務觀念盛行的時期,這個作法尤其常見。 但是像這種鬆耦合的系統架構,雖然美其名是開發/佈署不會互相影響彼此,但單一服務獨活於系統中又顯的很雞肋,偏偏依賴 Api 的方式其實並不可靠,網路基本上就不是建立在可靠的傳輸之上,所以連線失敗/服務暫時下線可以說是需要假定會隨時發生的事情。 不過很多時候這種連線失敗很可能只是一個突波,下一個 request 可能就成功了,而 Polly 就像是把這些繁瑣設定與工作包起來方便重複使用的函式庫。 其實這個函式庫,跟混亂工程有著密不可分的關係,不過這個部份主題很大,這篇就不提了,只列出一些可以供參考的資料。 Demo source code GitHub: link How to install Polly 若你覺得安裝 Package 就是一行 nuget 指令就可以,那其實也沒錯,不過你會發現 Polly 這個套件相依的 packages 預設實在多的驚人。 Install-Package Polly -Version 7.1.1 真的這樣幹的話你會發現,用預設的版本安裝相依套件的話,它會幫你安裝超多 System 相關的 Library, 主要原因就是 NETStandard.Library 預設安裝的版本實在太低,導致這些東西會一起裝進去,若想要避免這種情況,的話就需要先把相依的套件先升級。 Install Microsoft.NETCore.Platforms 這是為了 NETStandard 2.x 要安裝的 預設版本號是需要大於 1.1.0 不過這邊可以先升到頂 Install NETStandard.Library 這邊就直接裝到 2.x 以上的版本,Polly 目前的版本 (7.1.1) 預設最低版號要求到 1.6.1,但若真的只裝到 1.6.1 的話就需要安裝一堆 System 相關的套件,所以不太推薦。 ...

November 24, 2019 · 3 分鐘 · 597 字