【.NET 6】使用.NET 6開發minimal api以及依賴注入的實現、VS2022熱過載和自動反編譯功能的演示

WeskyNet發表於2021-11-30

 

前言:

.net 6 LTS版本釋出已經有若干天了。此處做一個關於使用.net 6 開發精簡版webapiminimal api)的入門教程,以及VS2022 上面的兩個強大的新技能(熱過載、程式碼自動反編譯)的順帶演示。

 

1、新建一個專案。此處就命名為 SomeExample:

 

 

 

 

2、選擇 .net6版本,並且此處先去掉HTTPS配置以及去掉使用控制器的選項:

 

 

 

 

3、建立完成以後,原始畫面如下所示。並且,解決方案一欄只剩下program檔案,其他檔案都被精簡掉了。並且沒有Main函式入口和名稱空間等。

 

 

 

 

4、接下來開始做幾個簡單的webapi方法案例。先刪掉原有的,替換為自定義的來個webapi方法,一個Get,一個Post。具體程式碼如下圖所示。

 

 

 

 

5、執行以後,會開啟自帶的swagger頁面。大佬們可以自行比對程式碼部分和swagger部分的一些特點。

 

 

 

 

6、執行HelloWorld這個Get方法的執行結果,如下圖所示。

 

 

 

 

7、執行HelloMiniApi這個Post方法的執行結果,如下圖所示。

 

 

 

 

 

8Api根據不同的用途,在swagger展示上面,我們們還可以對它進行一些分類。分類通過設定Tags標籤來實現,具體設定內容:在方法的末尾設定WithTags,裡面指定分類的顯示的名稱。執行以後的swagger展示效果和有關程式碼,如下圖所示。

 

 

 

 

9、對api方法進行分程式碼檔案管理。如果API方法很多,全寫在program裡面也不現實。所以下面做個擴充。新建用於測試使用的靜態類 TestService,並且實現一個靜態方法 TestApi。其中,方法的引數必須是 this WebApplication。然後就可以通過傳入的引數,來擴充實現webapi,例如此處新增一個ServiceApi的api方法,以及有關其他實現,如下圖所示。

 

 

 

10、新增擴充的api以後,需要在program檔案裡面引用使用,詳細內容如下圖所示。

 

 

 

 

11、執行以後的swagger展示圖。

 

 

 

 

12、測試下執行結果,返回預期結果,說明測試成功。

 

 

 

 

13、測試下VS 2022熱過載的功能,在返回值裡面進行修改,然後點選熱過載小火苗按鈕進行熱更新。

 

 

 

 

14、熱更新以後,不需要重新編譯,直接在swagger展示頁對剛才設定的api方法進行呼叫,呼叫結果如下圖所示,說明熱過載更新成功。將來遇到需要除錯的程式碼時候,大佬們都可以很方便地進行熱更新,無需重新編譯,可以大大提高效率。

 

 

 

 

15、接下來是依賴注入的驗證測試。新增一個測試服務類 TestDependencyInjection,具體實現內容如圖所示。

 

 

 

 

16TestDependencyInjection對應的介面 ITestDependencyInjection內容:

 

 

 

 

17、在program檔案裡面,對上面的服務進行註冊。此處註冊一個單例例項,具體程式碼如下圖展示。

 

 

 

 

18、接下來是驗證依賴注入是否成功。此處我在ServiceApi這個webapi方法裡面進行注入。注入需要注意事項:在webapi方法的委託型別的引數裡面,第一個引數必須是HttpContext;然後後面是自己的引數,此處是注入服務的介面。並且在api方法裡面呼叫了show方法進行驗證。

 

 

 

 

19、執行程式,在swagger展示頁面點選執行對應的webapi方法,並檢視結果。如下圖所示,輸出show方法裡面的內容,代表依賴注入成功。

 

 

 

 

20、再擴充套件個VS2022的隱藏技能:引用的第三方或者nuget包時候(不限制.net 版本),在對應的封裝的類或者方法上面,按F12,可以直接進入到反編譯以後的程式碼裡面去,可以看到封裝的原始碼。例如此處以UseSwagger為例,在此處按F12進去瞅瞅究竟。

 

 

 

 

21、正常情況下我們們應該F12進去只能看見屬性名稱、方法名稱,看不到具體實現。而現在是可以看到具體實現的程式碼的。如下圖所示,方法裡面的具體程式碼都有,也可以繼續進一步F12去看底層的程式碼。

 

 

 

 

以上就是該篇部落格的全部內容,歡迎大佬們留言、推薦或點贊,或者一起談人生。祝各位大佬們,玩.net 6玩的開心~~

本文連結:https://www.cnblogs.com/weskynet/p/15626899.html

 

相關文章