.NET週刊【12月第2期 2023-12-13】

2023-12-19 09:00:30

國內文章

用最清爽的方式開發dotNet

https://www.cnblogs.com/ncellit/p/17881779.html

本文介紹瞭如何以清爽的方式開發dotNet應用,特別是簡單的API。作者推薦使用.Net6的miniapi,提供了官方檔案連結,並分享了基於國內實際情況的個人方法。這包括建立一個企業官網API,涉及資料庫操作、授權鑑權、Swagger檔案和檔案上傳。作者建議引入必要的元件,如Swashbuckle.AspNetCore和SqlSugarCore,並強調根據需求新增元件以避免冗餘。還提到了將控制檯專案轉換為Web專案的步驟,並展示瞭如何在Program.cs中設定專案,包括上傳大小限制、授權鑑權和Swagger設定。

C#/.NET/.NET Core優秀專案和框架2023年11月簡報

https://www.cnblogs.com/Can-daydayup/p/17873700.html

本文介紹了公眾號「追逐時光者」定期分享的C#/.NET/.NET Core優秀專案和框架,包括專案介紹、功能特點和原始碼地址。CAP是一個輕量級的.NET庫,用於處理分散式事務和EventBus功能,有助於構建可延伸的微服務系統。ZEQP.WMS是一個支援多作業系統的倉儲管理系統,基於.Net Core 3.1和Colder.Admin.AntdVue框架開發。HandyControl是一套WPF控制元件庫,提供80多款自定義控制元件,易於建立美觀的WPF應用程式。這些資源有助於開發者提高開發效率和專案質量。

.NET使用分散式網路爬蟲框架DotnetSpider快速開發爬蟲功能

https://www.cnblogs.com/Can-daydayup/p/17884311.html

本文介紹了DotnetSpider,一個.NET平臺下的輕量級、高效能網路爬蟲框架。它支援非同步操作,通過記憶體型訊息佇列實現元件解耦,可設定為分散式爬蟲。文章還指導如何使用DotnetSpider爬取部落格園文章資訊,並儲存至文字檔案。

TIOBE 12月榜單: C# 即將成為2023 年度程式語言

https://www.cnblogs.com/shanyou/p/17892164.html

TIOBE在2023年12月公佈了程式語言排行榜,C#有望成為年度程式語言,因為它在一年內增長了2.38%,而競爭對手Fortran和F#的增長遠低於此。C#與Java的差距也在縮小,12月份僅相差0.69%。C#的優勢在於能高效對接C和C++程式碼,尤其是在.NET 8的NativeAOT支援下。北京將舉辦.NET Conf Local Event,主題為「智慧 開源 安全」,探討.NET在開源領域的發展。會議還將討論.NET雲原生開發,特別是Aspire和Dapr的關係及其在雲原生開發中的應用。

部落格園又崩了,這個鍋要不要阿里雲背?

https://www.cnblogs.com/bossma/p/17889457.html

本文分析了部落格園頻繁崩潰的原因。部落格園近期多次遭遇資料庫CPU使用率100%的故障,官方懷疑是引數嗅探問題導致SQL Server快取了低效的執行計劃。部落格園使用SQL Server和儲存過程,這在.NET技術體系中較為常見。儘管SQL Server作為商業資料庫效能可靠,但在特定引數下可能導致查詢效率低下。部落格園未能定位具體問題SQL,導致問題持續存在。有觀點認為SQL Server效能優於MySQL,但部落格園的問題可能與SQL Server本身或阿里雲服務有關。

.NET8極致效能優化AOT

https://www.cnblogs.com/tangyanzhi1111/p/17876898.html

本文講述了.NET8中對AOT(Ahead-of-Time)編譯的效能優化。AOT允許.NET原始碼通過ILC編譯器直接編譯成原生二進位制程式碼,無需JIT(Just-In-Time)編譯。優化的重點是減少AOT生成的可執行檔案大小,例如在.NET8中,一個ASP.NET應用程式的AOT檔案大小從.NET7的13MB減少到1.5MB。進一步優化可以通過設定csproj檔案,如設定優化偏好為體積、啟用不變全球化和關閉堆疊跟蹤支援,使檔案大小進一步減小到1.2MB。除了體積優化,.NET8還改進了AOT編譯器內部和單個庫的效能,如HttpClient,並支援BenchmarkDotNet進行效能測試,顯示出AOT的效能提升。

聊一聊 .NET高階偵錯 中的一些記憶體術語

https://www.cnblogs.com/huangxincheng/p/17874509.html

本文解釋了Windows記憶體管理的幾個關鍵術語。Virtual Size是預定和提交地址的總和,可以通過測試程式碼和工具對比驗證。Working Set指實體記憶體條上的記憶體,包括獨佔和共用兩部分。Private Bytes是WS Private和換頁記憶體的總和,對分析記憶體洩露有幫助。通過實驗程式碼,作者展示了換頁記憶體的計算和pagefile.sys的使用情況。WS Shared是實際被共用的記憶體頁集合,與WS Shareable(可共用的記憶體頁集合)不同。

自己寫個網路硬碟系列:① 來學習開啟這個專案吧

https://www.cnblogs.com/Start201505/p/17892327.html

本文介紹了作者使用.NET 8開發的Simple Framework快速開發框架,以及如何利用該框架建立一個個人網路硬碟專案。框架特點是簡化開發流程,支援多資料庫,包含基礎庫和多個擴充套件庫。作者計劃通過實戰專案教授專案對接、編碼、完善和部署。網路硬碟專案旨在實現基本的檔案管理功能,支援線上預覽編輯,多使用者隔離,以及在家部署使用。專案模擬了多個角色的合作,包括專案經理、前端開發、後端開發和運維,並使用了現成的前端頁面進行對接。

ML.NET 3.0 增強了深度學習和資料處理能力

https://www.cnblogs.com/shanyou/p/17878059.html

.NET團隊於2023年11月28日釋出ML.NET 3.0,強調深度學習和資料處理的重要性,使開發者能在.NET生態中建立AI應用。ML.NET 3.0通過CLI和模型生成器等工具,支援開發者使用C#和F#構建和整合自定義ML模型。深度學習方面,新增了物件檢測、命名實體識別和問答功能,特別提出了TorchSharp支援的物件檢測API。資料處理方面,DataFrame和IDataView功能得到增強,改進了資料載入、轉換和視覺化步驟。未來,開發團隊計劃釋出.NET 9和ML.NET 4.0,繼續擴充套件深度學習場景和DataFrame整合。更多資訊可檢視發行說明。

七天.NET 8操作SQLite入門到實戰 - 第六天後端班級管理相關介面完善和Swagger自定義設定

https://www.cnblogs.com/Can-daydayup/p/17880839.html

本文講述瞭如何在.NET後端框架中使用SQLite-net ORM,並設計班級管理的資料庫表。作者首先封裝了SQLiteHelper,然後介紹了班級表和班級學生表的欄位設計,包括班級ID、名稱、建立時間以及學生ID、姓名、年齡、性別等。接著,展示了對應的班級管理模型SchoolClass和Student,並提供了專案原始碼地址。最後,文章強調了完善後端班級管理介面和自定義Swagger設定的重要性。

基於DotNetty實現自動釋出 - 通訊實現

https://www.cnblogs.com/broadm/p/17875559.html

本文介紹了基於DotNetty的通訊實現,DotNetty是微軟Azure團隊開發的.NET網路庫。專案OpenDeploy.Communication類庫包含編碼解碼模組和定義通訊約定。自定義訊息格式NettyMessage包括訊息頭NettyHeader和訊息體Body,訊息頭包含唯一標識、是否同步、終結點等資訊,可序列化為JSON。編碼器和解碼器分別負責將NettyMessage轉換為位元組流和從位元組流中恢復NettyMessage。

構建一個語音轉文字的WebApi服務

https://www.cnblogs.com/hejiale010426/p/17881978.html

本文講述瞭如何構建一個將語音轉換為文字的WebApi服務。首先,使用Vscode建立WebApi專案,新增必要的Whisper.net依賴包。然後,下載模型和語音範例檔案,將其複製到專案目錄。接著,建立WhisperService.cs處理音訊檔並返回識別結果。最後,修改Program.cs註冊服務並構建API。服務完成後,通過控制檯命令執行並體驗,不同顯示卡的耗時有所差異。

C#中的並行處理、並行查詢的方法你用對了嗎?

https://www.cnblogs.com/hanbing81868164/p/17876423.html

本文介紹了Parallel.ForEach和AsParallel兩種並行程式設計工具。Parallel.ForEach能夠在多核處理器上並行執行集合的迭代操作,簡化並行程式設計,適用於簡單迴圈。AsParallel是LINQ的方法,能將查詢操作並行化,適合複雜的LINQ查詢。兩者的效能取決於任務型別和資料規模,Parallel.ForEach適合直接的集合迭代,而AsParallel適合需要篩選和對映的複雜查詢。在實際應用中,應根據任務需求選擇合適的並行工具。

AgileConfig 1.8.0 已適配 .NET8

https://www.cnblogs.com/kklldog/p/agileconfig-up-to-net8.html

本文講述了作者將AgileConfig專案升級到.NET8的經驗。首先,作者更新了專案的目標框架和所有nuget包,解決了一個棄用包的問題。然後,修改了dockerfile以適應.NET8。在本地和docker desktop環境中執行正常,但伺服器上出現了相容性錯誤,通過新增特定引數解決。作者總結.NET介面穩定,升級過程簡單,但新的runtime映象可能與舊版docker engine不相容。文末提供了專案的GitHub和Gitee地址,並邀請關注公眾號。

.NET企業應用安全開發動向-概覽

https://www.cnblogs.com/xiyuanMore/p/17893362.html

本文探討了安全的重要性和安全開發的概念,提出了從全域性視角識別和防範安全問題的必要性。通過分析近期網際網路大廠的安全事故,強調了從教訓中學習的重要性,並概述了內容、資料、裝置和行為四個安全維度。文章還介紹了.NET的安全基礎設施和威脅建模分析方法,強調了隨著技術發展,新的安全挑戰也隨之而來。作者通過分享個人思考和經驗,鼓勵開發者建立體系化的安全思考框架,並在.NET Conf China上進一步探討這些問題。

.net 溫故知新【15】:Asp.Net Core WebAPI 設定

https://www.cnblogs.com/SunSpring/p/17879703.html

本文講述了Asp.Net Core中設定的概念和實踐。主機設定是專案啟動時的設定,應用程式設定是執行時的設定。預設主機設定優先順序為命令列、DOTNET_環境變數、ASPNETCORE_環境變數,且部分變數在啟動時鎖定。launchSettings.json檔案用於本地開發環境設定。預設應用程式設定優先順序為命令列、環境變數、使用者機密設定、appsettings.{Environment}.json、appsettings.json和主機設定。設定提供程式負責讀取這些設定。機密管理器工具用於儲存開發環境中的敏感設定,不在專案目錄下。

CoreFlex框架釋出 0.1.1

https://www.cnblogs.com/hejiale010426/p/17893528.html

本文介紹了CoreFlex框架,支援.NET 6、.NET 7和.NET 8,整合MasaFramework,提供企業級應用開發和Blazor的JS工具庫。框架目標包括JS操作、Serilog紀錄檔、限流、審計紀錄檔、虛擬檔案、系統設定、後臺任務和ChatGpt使用者端案例等模組。Core Flex模組是框架基礎,支援模組化和自動依賴注入。使用時,通過NuGet安裝包,建立模組需繼承CoreFlexModule類,實現生命週期方法,並可新增依賴其他模組的特性。CoreFlex.Razor.JsInterop是JS工具庫,提供Cookie和LocalStorage/SessionStorage操作API。

Net 高階偵錯之十二:垃圾回收機制以及終端子佇列、物件固定

https://www.cnblogs.com/PatrickLiu/p/17874330.html

本文是《Net 高階偵錯》系列的第十二篇,深入介紹了GC垃圾回收演演算法、根物件概念及其存在區域、帶解構函式物件的回收機制、終端子佇列與執行緒的作用,以及大物件堆的回收策略。文章強調了對.Net框架底層的理解對偵錯的重要性,並提供了偵錯環境的詳細說明。通過實際程式碼的偵錯過程,驗證了理論知識,幫助讀者更深入地理解物件的生命週期和GC的工作原理。

c# 高並行必備技巧(三)

https://www.cnblogs.com/pzscit/p/17880912.html

本文討論了高並行場景下的技術策略。介紹了非同步程式設計以避免阻塞,多執行緒和執行緒池以提高效率並控制資源使用。並行程式設計可同時執行多工,資料流程式設計則適合巨量資料處理。強調了記憶體管理的重要性,提倡使用並行集合和優化資料庫存取,如使用快取和連線池。最後,建議根據實際需求選擇合適的優化策略。

主題

Rider 2023.3:支援 .NET 8 SDK、C# 12 的最新版本、效能增強、預測性偵錯以及更多 AI 驅動的功能。 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/12/07/rider-2023-3-release/

ReSharper 2023.3:支援 C# 12、效能增強和更多 AI 驅動的功能 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/12/07/resharper-2023-3-release/

dotCover、dotMemory、dotPeek 和 dotTrace 2023.3 釋出 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/12/07/dotcover-dotmemory-dotpeek-and-dottrace-2023-3-release/

BenchmarkDotNet v0.13.11 · dotnet/BenchmarkDotNet · 討論 #2479

https://github.com/dotnet/BenchmarkDotNet/discussions/2479

2.7.10 版 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.7.10

釋出 v8.0.1 · npgsql/npgsql

https://github.com/npgsql/npgsql/releases/tag/v8.0.1

版本 11.0.6 · AvaloniaUI/Avalonia

https://github.com/AvaloniaUI/Avalonia/releases/tag/11.0.6

釋出 v1.5-experimental1 · microsoft/WindowsAppSDK

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.5-exp1

.NET 8 網路改進 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-8-networking-improvements/

使用 .NET 將 WebAssembly 擴充套件到雲 - .NET 部落格

https://devblogs.microsoft.com/dotnet/extending-web- assembly-to-the-cloud/

.NET Conf 2023 回顧 - 慶祝社群、創新和 .NET 8 的釋出 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-conf-2023-recap-videos-slides-demos-and-more/

.NET 8 的 Qdana 即將準備就緒!嘗試 EAP,讓我們知道您的想法 |科達納部落格

https://blog.jetbrains.com/qodana/2023/12/qodana-for-net-8-is-almost-ready-try-the-eap-and-let-us-know-what-you-think/

C# 2023 年降臨節日曆

[.NET8]在真正的BlazorWebApp上加上巧克力製作PWA-Qiita

https://qiita.com/nr_ck/items/f22c24c0583309577a5e

C#12.0.NET8.0中Utf8字串的製作方法和效能研究

https://gitan.dev/?p=320

在MVVM中,簡潔地使用INotifyPropertyChanged。帶程式碼sunipto。-Qiita

https://qiita.com/hiro_t/items/556868bc6d1f5fd53a6f

用C#寫的讓自制鍵盤方便一點的工具

https://blog.alglab.net/archives/csharp-prkkeymap/

在NET SDK8.0中嘗試PublishTrimmed時可能會失敗的話-Qiita

https://qiita.com/skitoy4321/items/c6ae2b58245b6874ec35

試著製作了簡單HTTP Server(C#編)-Qiita

https://qiita.com/t0r/items/ef2fa3ae15af592e8674

迷宮般的if文秒變漂亮的魔法[C#,元組,模式匹配ngu]-Qiita

https://qiita.com/hysui/items/ea0b00788f98cbb15980

[C#] 讓我們編寫不安全的程式碼 - Annulus Games

https://annulusgames.com/blog/unsafe/

記錄 StackTrace 時,追溯新增異常 - Qiita

https://qiita.com/up-hash/items/47feaf9dbd94763431d7

與整個團隊一起努力編寫最新的 C# - Qiita

https://qiita.com/wipiano/items/7fbf5d61d68f29fdbd36

使用 C# 的內聯組合器 - Qiita

https://qiita.com/up-hash/items/8e9e18c55d23686b2eb1

將字首新增到使用 Microsoft.Extensions.Configuration.Json 讀取的設定值

https://zenn.dev/guil/articles/dfdcba6a7f4636

無法重新分配的 const 變數風味(小故事)- Qiita

https://qiita.com/up-hash/items/8eb07cdace041896e3e8

【C#】我思考抽象類和介面一起使用的原因 - Qiita

https://qiita.com/seiya2130/items/6c639efadbfcb279e4ed

在 ExcelDNA 中使用 async/await - Qiita

https://qiita.com/hiro_t/items/f37256a59946c6c0faa7

[C#] 像 StringBuilder 一樣使用 DefaultInterpolatedStringHandler - TekuMemo

https://aneuf.hatenablog.com/entry/2023/12/12/000000

C# Boost、DotNext 庫 - Qiita

https://qiita.com/up-hash/items/059975d06347b81087de

讓我們嘗試使用 Roslyn API!概述 - Qiita

https://qiita.com/lx-sasabo/items/d3791b305d85bb686ae4

關於使用 C# TimeProvider (.NET8) - Qiita

https://qiita.com/sh1ch/items/936945705d0c7a4ab655

讓我們使用 ISpanFormattable - Qiita

https://qiita.com/Shaula/items/563ef337ae578ceebede

文章、幻燈片等

在 Azure Blob 儲存中建立 Zip 檔案

https://markheath.net/post/create-zip-files-in-blob-storage

[Blazor]使用 BECanvas 進行繪圖處理 - Qiita

https://qiita.com/onsen_koichi/items/a0d9a88254eec34c1afc

即使與 .NET Framework 一起使用 C# 的最新功能 - Qiita

https://qiita.com/diontools/items/2d5625419bb4f43da1a5

使用 VSCode 構建 .NET MAUI 開發環境 - Qiita

https://qiita.com/aqua_ix/items/ba9533d60633abe4c850

[C#] 根據合成語音軟體的時序資訊檔案(.lab)建立字幕檔案(.srt)

https://zenn.dev/inuinu/articles/07ea814ca573c1

使用 SkiaSharp 繪製地圖 - Qiita

https://qiita.com/ingen084/items/8c4492bfb3cc50129507

.NET Conf Japan 2023「.NET + AI」補充文章

https://zenn.dev/chomado/articles/231219-dot-net-conf

.NET Native AOT 解釋 - NDepend 部落格

https://blog.ndepend.com/net-native-aot-explained/

語意核心(RC-3 版本)用日語執行 Hello World

https://zenn.dev/chomado/articles/231207-semantic-kernel-rc3

Snyk 能檢測出這麼多漏洞嗎?(C#/.NET 版)- Qiita

https://qiita.com/akid3020/items/df2fed5ecfd1ec9e4d33

通過新的初學者視訊學習 .NET 8 - .NET 部落格

https://devblogs.microsoft.com/dotnet/learn-dotnet8-beginner-videos/

在非 UWP 環境中使用 Windows.Data.Pdf

https://zenn.dev/nuits_jp/articles/2023-12-06-use-windows-data-pdf-out-of-uwp

使用 .NET 對 PDF⇒JPEG 轉換進行基準測試

https://zenn.dev/nuits_jp/articles/2023-12-06-pdf-to-jpeg-benchmarks

介紹使用 Source Generator 和 Rider 建立工具的流程 - Qiita

https://qiita.com/Tanakancolle/items/b12c48e0cf0fe78af2ad

通過專案解耦優化.NET解決方案架構以加快編譯速度

https://dev.to/asimmon/optimizing-net-solution-architecture-for-faster-compilation-through-project-decoupling-5eg6

[.NET 8] 使用 MVVM 建立的 Blazor Web 應用程式 - Qiita

https://qiita.com/nr_ck/items/6faa86c5e381fb96c67a

使用 [TagProvider] 和 ILogEnricher 豐富紀錄檔

https://andrewlock.net/customising-the-new-telemetry-logging-source-generator/

.NET Aspire

https://henriquesd.medium.com/net-aspire-296e24b952c0

捲動以展開檔案索引標籤 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/scroll-to-expand-document-tabs/

使用 Rider 的預測偵錯程式再次展望未來 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/12/04/another-look-into-the-future-with-riders-predictive-debugger/

ASP.NET Core 8 中的全域性錯誤處理

https://dev.to/milanjovanovictech/global-error-handling-in-aspnet-core-8-2mki

如何使用 .NET8 Application Insights 在時間線上顯示跟蹤/資訊紀錄檔 - Qiita

https://qiita.com/Hydrangeas/items/bca8ecc5d5cb0f14a37c

使用鍵控服務的依賴注入終於出現在 ASP.NET 中

https://blog.elmah.io/dependency-injection-using-keyed-services-is-finally-in-asp-net/

.NET 8.0 如何將 JSON Schema 效能提高 20% | endjin

https://www.endjin.com/blog/2023/12/how-dotnet-8-boosted-json-schema-performance-by-20-percent-for-free

將環境變數新增到 .NET Aspire 服務

https://timheuer.com/blog/add-environment-variables-to-aspire-services/

如何使庫與本機 AOT 相容 - .NET 部落格

https://devblogs.microsoft.com/dotnet/creating-aot-相容-libraries/

\e(跳脫字元跳脫序列)

https://ufcpp.net/blog/2023/12/escape-escape/

使用 Testcontainers 和 .NET 測試 Typesense 搜尋

https://khalidabuhakmeh.com/testing-typesense-search-with-testcontainers-and-dotnet

使用 C# 為 Raspberry Pi 構建裸機可啟動遊戲

https://migeel.sk/blog/2023/12/08/building-bare-metal-bootable-game-for-raspberry-pi-in-csharp/

使用 Husky.NET 進行預提交掛鉤 - 在 Git 提交之前構建、格式化和測試您的 .NET 應用程式

https://dev.to/bellonedavide/pre-commit-hooks-with-huskynet-build-format-and-test-your-net-application-before-a-git-commit-3cbd

使用 Microsoft.Extensions.Compliance.Redaction 編輯紀錄檔中的敏感資料

https://andrewlock.net/redacting-sensitive-data-with-microsoft-extensions-compliance/

將硬體內在函數與 .NET Native AOT 結合使用

https://zenn.dev/naminodarie/articles/dotnet_native_aot_i

.NET 帶註釋的月刊 | 2023 年 12 月 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/12/11/net-annotated-monthly-december-2023/

庫、儲存庫、工具等。

GitHub Actions - Visual Studio Marketplace

https://marketplace.visualstudio.com/items?itemName=TimHeuer.GitHubActionsVS

https://x.com/timheuer/status/1731011137389695140?s=12

網站、檔案等

推文

https://x.com/aaronontheweb/status/1731500517816201611?s=12

版權宣告

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.NET週刊-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源專案可以下方的專案地址提交Issue或者在我的微信公眾號私信。

格式如下:

  • 10~50字左右的標題
  • 對應文章或專案網址存取連結
  • 200字以內的簡介,如果太長會影響閱讀體驗

https://github.com/InCerryGit/.NET-Weekly