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

國內文章

用最清爽的方式開發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

image-20231213224233925

網站、文檔等

推文

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

image-20231213224321452

版權聲明

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

格式如下:

  • 10~50字左右的標題
  • 對應文章或項目網址訪問鏈接
  • 200字以內的簡介,如果太長會影響閱讀體驗

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章