當前位置: 妍妍網 > 碼農

ASP.NET Core 擴充套件庫

2024-03-06碼農

轉自:xfrog

cnblogs.com/xfrog/p/14498209.html

前言

親愛的.Neter們,在我們日復一日的編碼過程中是不是會遇到一些讓人煩惱的事情:

  • 日誌配置太過復雜,各種樣版、參數也搞不清楚,每次都要去檢視日誌庫的文件,還需要復制貼上一些重復程式碼,好無賴

  • 當需要型別轉換時,使用AutoMapper時感覺配置又復雜,自己寫人肉轉換程式碼又冗長,又枯燥,好無聊

  • 當呼叫其他服務時,總是不放心,於是在呼叫前、呼叫後總是不斷重復地記錄請求和應答日誌?

  • 當其他服務需要令牌時,我們不得不管理令牌的生命周期,而且不同第三方服務令牌的認證、維護過程還不一樣,有時呼叫每一個介面時都要手動傳入token,好麻煩

  • 作為套用開發的你,你編寫的服務和很多其他服務互動,經常因為其他服務的問題影響你的開發進度,同時你的服務由於依賴於其他服務,導致偵錯測試困難

  • 在微服務模式下,需要請求鏈路跟蹤,於是,你又在呼叫其他服務時,不斷第重復傳遞鏈路跟蹤的請求頭

  • 作為APIer的你,為了快速尋找問題,不得不記錄每一個介面的請求和應答內容,於是,你就在控制器裏面增加了一堆的日誌,你知道這不科學,但時間緊,任務重,就先這樣吧

  • ......

  • 也許,以上這些問題,都有相應的庫或者範例程式碼來解決,但這實在是太零散了,我們沒有精力或不想去做這些,所以結果是常常我們采用了最"笨"的辦法。

    現在,解決這些問題的綜合庫來了,它就是Xfrogcn.AspNetCore.Extensions擴充套件庫,它深度融合ASP.NET Core的設計模式,使用方式與ASP.NET Core完全一致。

    簡介

    ASP.NET Core擴充套件庫是針對.NET Core常用功能的擴充套件,包含日誌、Token提供器、並列佇列處理、HttpClient擴充套件、輕量級的DTO型別對映等功能。

    源碼地址:

    GitHub:https://github.com/xfrogcn/Xfrogcn.AspNetCore.Extensions

    Gitee:https://gitee.com/WuYeCai/Xfrogcn.AspNetCore.Extensions

    日誌擴充套件

    擴充套件庫中,我們對Serilog日誌庫進行了簡單的封裝使其更加容易配置,同時也增強了本地檔日誌Sink,使其支持更復雜的日誌目錄結構。另外,定時日誌清理功能可讓你無需關心本地日誌管理問題。

    輕量級實體對映

    在分層設計模式中,各層之間的數據通常透過數據傳輸物件(DTO)來進行數據的傳遞,而大多數情況下,各層數據的定義結構大同小異,如何在這些定義結構中相互轉換,之前我們透過使用AutoMapper庫,但AutoMapper功能龐大,在很多場景下,可能我們只需要一些基礎功能,那麽此時你可以選擇擴充套件庫中的輕量級AutoMapper實作。

    AspNetCore Http伺服端的擴充套件

    針對AspNetCore Http伺服端,擴充套件庫提供了以下功能:

  • 請求與應答詳細日誌記錄

  • EnableBufferingAttribute特性,開啟請求的Buffer(可重復讀取)

  • HttpClient擴充套件

    .NET Core擴充套件庫中透過HttpFactory及HttpClient來執行HTTP請求呼叫,HttpClient擴充套件在此基礎上進行了更多功能的擴充套件,增加易用性、可測試性。

    HttpClient包含以下功能:

  • 針對HttpClient的相關擴充套件方法

  • 針對HttpRequestMessage及HttpResponseMessage的擴充套件方法

  • 請求日誌記錄

  • 請求頭的自動傳遞(請求鏈路跟蹤)

  • Http請求模擬(用於測試或模擬第三方服務)

  • Http受限請求中,可自動獲取及管理存取令牌

  • 令牌提供器

    令牌提供器用於套用的相關存取令牌的生命周期管理,包含令牌的自動獲取、緩存、失效判斷、自動重試等,主要由HttpClient擴充套件使用。當然你也可以單獨使用。

    並列佇列處理

    並列佇列處理可以將一個大的佇列,拆分到多個子佇列進行並列處理,以提高處理效率。同時,在每個子佇列處理中實作了處理管道,可靈活擴充套件。

    以上介紹即為擴充套件庫所支持的功能,後面會有相關的系列文章進行詳細介紹。


    - EOF -