.NET週報 【2月第1期 2023-02-04】

2023-02-07 06:00:39

國內文章

.NET 入門到高階路線

https://www.cnblogs.com/hejiale010426/archive/2023/02/01/17083913.html

筆者介紹了.NET入門到高階路線需要學習的知識和資源連結等。

如何將WebAssembly優化到1MB?

https://www.cnblogs.com/hejiale010426/archive/2023/01/30/17076817.html

對於Blazor WebAssembly載入方案的優化是針對於WebAssembly首次載入,由於BlazorWebAssembly是在首次載入的時候會將.NET Core的所有程式集都會載入到瀏覽器中,並且在使用的時候可能參照了很多第三方的dll,導致載入緩慢,本文就通過幾種方式來降低WebAssembly的大小。

.Net6 使用 Ocelot + Consul 看這篇就夠了

https://www.cnblogs.com/Mamba8-24/archive/2023/01/31/17079429.html

書接上文,我們使用了 Consul實現了服務註冊與發現,對Consul不熟悉的同學可以先看看。這篇文章我們來學習Ocelot閘道器,在這之前我們首先得需要知道「什麼是API閘道器?」,「為什麼要選擇Ocelot?」以及「如何將Consul與Ocelot結合起來」等等,同樣這些知識點網上的文章也介紹得比較詳細了,我這裡也只做簡單的介紹,然後本文只是個人學習與分享,不喜勿噴,謝謝。

胡桃工具箱, 基於 .NET 開源的多功能原神工具箱

https://mp.weixin.qq.com/s/08PTf2UfT6G0n5llLUHN2Q

胡桃工具箱是一個 Windows 平臺的開源的原神工具箱,旨在幫助玩家獲得更好的遊戲體驗;它是對官方行動端工具的一種非破壞性功能擴充套件,為不習慣在行動端進行原神遊戲的 PC 玩家提供一個在 Windows 平臺下獲得接近行動端功能權利的途徑。

概述 .NET ThreadPool 實現

https://mp.weixin.qq.com/s/EpGGQKPKaIrz_4f4NEbW1g

本文以 .NET 6 Runtime 原始碼作為學習材料,對執行緒池的設計進行介紹。從目前的理解上來看,其整體的設計與原來 C++ 的實現並沒有特別大的出入。

SQLSERVER 的 nolock 到底是怎樣的無鎖

https://mp.weixin.qq.com/s/1j8T2DiWcr1_uNZxhe-5RQ

相信絕大部分用 SQLSERVER 作為底層儲存的程式設計師都知道 nolock 關鍵詞,即使當時不知道也會在踩過若干阻塞坑之後果斷的加上 nolock,但這玩意有什麼注意事項呢?這就需要了解它的底層原理了。

分散式事務| 使用 dotnetcore/CAP 的本地訊息表模式

https://mp.weixin.qq.com/s/mKVOoux9nmkXIYVhSDv0fg

本地訊息表模式,其作為柔性事務的一種,核心是將一個分散式事務拆分為多個本地事務,事務之間通過事件訊息銜接,事件訊息和上個事務共用一個本地事務儲存到本地訊息表,再通過定時任務輪詢本地訊息表進行訊息投遞,下游業務訂閱訊息進行消費,本質上是依靠訊息的重試機制達到最終一致性。

C#託管堆 遭破壞 問題溯源分析

https://mp.weixin.qq.com/s/11784eciCJKVCAM2Kr22Qg

年前遇到了好幾例託管堆被損壞的案例,有些運氣好一些,從被破壞的託管堆記憶體現場能觀測出大概是什麼問題,但更多的情況下是無法做出準確判斷的,原因就在於生成的dump是第二現場,借用之前文章的一張圖,大家可以理解一下。

2023年 .NET Monorepo 來了

https://mp.weixin.qq.com/s/Wdh4JHrL4y9QO6NgvAQx3w

Monorepo(monolithic repository)是一種專案架構,簡單來說就是,將多個專案或包檔案放到一個git倉庫來管理,很多前端專案vue3、element都是採用的這種架構模式。

一個開源跨平臺的Steam、Uplay、Origin、Epic等遊戲平臺的基礎免費增強工具

https://mp.weixin.qq.com/s/a19bCZAPicNww7NrlxxKgw

今天給大家推薦一個開源跨平臺的一個開源跨平臺的Steam、Uplay、Origin、Epic等遊戲平臺的基礎免費增強工具Watt Toolkit,Watt Toolkit原名Steam++,在這款工具中,您可以做到進行社群加速、成就瀏覽以及解鎖、賬號切換、本地令牌、自動掛卡等實用功能。。

.NET EF Core千萬級資料實踐

https://mp.weixin.qq.com/s/oAt1ASb-VICAvJOV25gVCA

.NET開發中運算元據庫EF一直是我的首選,工作和學習也一直在使用。EF一定程度的提高了開發速度,開發人員專注業務,不用編寫sql。方便的同時也產生了一直被人詬病的一個問題效能低下。

由於Mayuki大佬未更新外文主題詳情,所以本次週報外文板塊僅標題和URL。

主題

【英文】mysql-net/MySqlConnector 釋出 Release 2.3.0 Beta 1

https://github.com/mysql-net/MySqlConnector/releases/tag/2.3.0-beta.1

【英文】Visual Studio Code 2023年1月更新

https://code.visualstudio.com/updates/v1_75

【英文】ReSharper 2023.1 EAP 3 釋出 | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/02/03/resharper-2023-1-eap-3/

【英文】Rider 2023.1 EAP 3 帶有Docker和結構檢視的改進以及在地化預覽功能 | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2023/02/03/rider-2023-1-eap-3/

【英文】dotnet/maui 釋出 Release 7.0.59 Service Release 3

https://github.com/dotnet/maui/releases/tag/7.0.59

文章、幻燈片

【日文】[C#12候選特性]集合字詞 |UFCPP部落格

https://ufcpp.net/blog/2023/1/collection-literal

【日文】我想把Blazor中的驗證邏輯元件化

https://zenn.dev/okazuki/articles/viewside-validation

【日文】我想縮小顯示的錯誤資訊,如Blazor中ValidationSummary的asp-validation-summary

https://zenn.dev/okazuki/articles/blazor-validationsummary-tips

【日文】使用SignalR開發應用程式更加得心應手!

https://speakerdeck.com/nenonaninu/signalr-woshi-tutaapurikesiyonkai-fa-woyorikuai-shi-ni

【日文】對C#初學者三個推薦學習網站的評論 - Qiita

https://qiita.com/YouKnow/items/34a24351991c6744b691

【英文】Redis大學 RU102N: Redis for .NET Developers

https://dev.to/slorello/redis-university-ru102n-redis-for-net-developers-30om

【英文】用C#原始碼生成器對映ASP.NET Core 最小的API Endpoint

https://dev.to/joaofbantunes/mapping-aspnet-core-minimal-api-endpoints-with-c-source-generators-3faj

【英文】用新的MediaElement在.NET MAUI應用程式中播放音訊和視訊

https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-communitytoolkit-mediaelement/

【日文】在C#中控制控制檯輸出的字元編碼

https://zenn.dev/oyasumi731/articles/26309b705704cc

【英文】為最小的API生成參數列達式(續):最小的API的幕後 - 第五部分

https://andrewlock.net/behind-the-scenes-of-minimal-apis-5-generating-argument-expressions-for-minimal-apis-continuted/

【英文】布隆過濾器

https://medium.com/@marcioalthmann/bloom-filters-8dde17bc7ee6

【英文】在ASP.NET Core中使用Respawn進行整合測試

https://medium.com/@niko.kantaria/integration-testing-with-respawn-in-asp-net-core-6de63dcfc7ba

【英文】來自WMI的基本Windows機器硬體資訊用於.NET的異常記錄

https://weblog.west-wind.com/posts/2023/Feb/02/Basic-Windows-Machine-Hardware-information-from-WMI-for-Exception-Logging-from-NET

【英文】SQL-Server: 用Ef Core計算的列

https://dev.to/karenpayneoregon/sql-server-computed-columns-with-ef-core-3h8d

【日文】使用Dapper的個人技巧和竅門 - Qiita

https://qiita.com/mania3bb2007/items/3319279676ff820998cb

【日文】[.NET] 將組態檔(如appsettings.json)對映到類中 - Qiita

https://qiita.com/yaju/items/3c0de1341e6c96cc1afa

【英文】.NET中的靜態和非靜態介面成員呼叫:它們是不一樣的

https://medium.com/@ocoanet/static-and-non-static-interface-member-calls-in-net-they-are-not-the-same-b22bf2d00ae5

開源庫、資源庫、工具

Cysharp/SimdLinq: 用SIMD替換LINQ的聚合操作,速度極快。

https://github.com/Cysharp/SimdLinq/

JJConsulting/JJMasterData: JJMasterData是一個開源的.NET庫,幫助你在執行時從資料字典(後設資料)快速建立CRUD。

https://github.com/jjconsulting/JJMasterData

網站、檔案等

推文

https://twitter.com/egorbo/status/1619448596360994816?s=12

Roslyn 團隊剛剛合併了「更快的字串文字切換」優化 - https:// github.com/dotnet/roslyn/ pull/66081... 以下是快速程式碼樣例:


https://twitter.com/JamesNK/status/1620216852176863233

.NET8將支援ASP.NET Core在macOS上使用HTTPS協定。


https://twitter.com/neuecc/status/1620030194060001282

釋出使用SIMD技術優化的LINQ擴充套件庫,統計方法可以提高3~10倍的速度。

深入研究

通過選擇功能啟用對針對iOS的NativeAOT的支援 · Issue #80905 · dotnet/runtime

https://github.com/dotnet/runtime/issues/80905

https://twitter.com/austinwise/status/1619228434680680448?s=12

版權宣告

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

格式如下:

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

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

.NET效能優化交流群

相信大家在開發中經常會遇到一些效能問題,苦於沒有有效的工具去發現效能瓶頸,或者是發現瓶頸以後不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流群,但是由於各種原因一直都沒建立,現在很高興的在這裡宣佈,我建立了一個專門交流.NET效能優化經驗的群組,主題包括但不限於:

  • 如何找到.NET效能瓶頸,如使用APM、dotnet tools等工具
  • .NET框架底層原理的實現,如垃圾回收器、JIT等等
  • 如何編寫高效能的.NET程式碼,哪些地方存在效能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET效能問題和寶貴的效能分析優化經驗。目前一群已滿,現在開放二群。

如果提示已經達到200人,可以加我微信,我拉你進群: ls1075

另外也建立了QQ群,群號: 687779078,歡迎大家加入。