.NET週刊【9月第1期 2023-09-03】

國內文章

如何正確實現一個自定義 Exception

https://www.cnblogs.com/kklldog/p/how-to-design-exception.html

最近在公司的項目中,編寫了幾個自定義的 Exception 類。提交 PR 的時候,sonarqube 提示這幾個自定義異常不符合 ISerializable patten. 花了點時間稍微研究了一下,把這個問題解了。今天在此記錄一下,可能大家都會幫助到大家。

細聊C# AsyncLocal如何在異步間進行數據流轉

https://www.cnblogs.com/wucy/p/17654645.html

在異步編程中,處理異步操作之間的數據流轉是一個比較常用的操作。C#異步編程提供了一個強大的工具來解決這個問題,那就是AsyncLocal。它是一個線程本地存儲的機制,可以在異步操作之間傳遞數據。它爲我們提供了一種簡單而可靠的方式來共享數據,而不必擔心線程切換或異步上下文的變化。本文我們將探究AsyncLocal的原理和用法,並進行相關源碼解析。探討它如何在異步操作之間實現數據的流轉,以及它是如何在底層工作的。

【微信自動化】使用C#實現微信自動化

https://www.cnblogs.com/1996-Chinese-Chen/p/17663064.html

上個月,在一個羣裏摸魚划水空度日,看到了一個老哥分享的一個微信自動化的一個類庫,便下載了他的Demo,其本意就是模擬鼠標來操作UI,實現UI自動化;然後自己在瞎琢磨研究,寫了一個簡單的例子,用來獲取好友列表,獲取聊天列表,以及最後一次接收或者發送消息的時間,以及最後一次聊天的內容,還有自動刷朋友圈,獲取朋友圈誰發的,發的什麼文字,以及配的圖片是什麼,什麼時候發的,再就是一個根據獲取的好友列表,來實現給指定好友發送消息的功能。

在.NET Framework中使用RocketMQ(阿里雲版)實戰

https://www.cnblogs.com/kimiliucn/p/17662052.html

https://www.cnblogs.com/kimiliucn/p/17667200.html

在開發某一個需求的時候,領導要求使用RocketMQ(阿里雲版) 作爲消息隊列。使用的版本是5.x,目前也已經沒有4.x購買的入口了,所以只能買5.x系列。公司項目還是用的比較老的技術.NET Framework 4.8,生產者主要有WebAPI/MVC/JOB(控制檯應用程序),然後消費者採用的是Windows服務進行長鏈接消費信息。這期間因爲各種原因踩過很多坑,然後諮詢了客服說RocketMQ(阿里雲版)5.0不支持.NET Framework,但最終操作下來竟然能使用(只支持集羣模式,不支持訂閱模式),那今天[西瓜程序猿]來記錄一下如何使用RocketMQ(阿里雲版),給各位小夥伴作爲參考防止踩坑。

如何將項目打包上傳到NuGet服務器(圖文教程)

https://www.cnblogs.com/kimiliucn/p/17675287.html

在我寫[在.NET Framework中使用RocketMQ(阿里雲版)]這篇博客的時候,因爲封裝了很多代碼在單獨的DLL中,包括生產者、消費者以及官方SDK等等,然後都在博客中體現出來導致博客大量代碼,然後有位讀者就建議打包成NuGet包,大家也可以直接安裝引入調用,我也覺得很不錯,於是就有了這篇文章啦!

C#/.NET/.NET Core優秀項目和框架8月簡報

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

收集了8月份一些優秀的.NET項目和框架。

WPF使用Blazor的快速案例

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

下面我們將講解在WPF中使用Blazor,並且使用Blazor做一些文件編輯操作,下面是需要用到的東西:WPF、Blazor、Masa Blazor、Monaco。

MAUI+Masa Blazor APP 各大商店新手發佈指南(三)vivo篇

https://www.cnblogs.com/MASA/p/17669118.html

上架vivo商店,使用廠家的離線推送當然是一個重要原因,與小米不同,vivo的推送服務可以在應用未上架的情況下通過添加測試手機的方式進行測試。

C#中的淺拷貝與深拷貝

https://www.cnblogs.com/wml-it/p/17667229.html

衆所周知,C#中有兩種類型變量:那就是值類型引用類型。對於值類型而言,copy就相當於是全盤複製了,真正的實現了複製,屬於深拷貝;而對於引用類型而言,一般的copy只是淺拷貝,只是copy到了引用對象的地址,相當於值傳遞了一個引用指針,新的對象通過地址引用仍然指向原有內存中的對象。

.NET Core WebAPI 基礎 文件上傳

https://www.cnblogs.com/ysmc/p/17666170.html

昨天分享了一個在WebApi中如何接收參數的文章 傳送門,然後有新人小夥伴就問了,那文件上傳呢,這個怎麼弄,藉此我寫了一個小demo,分享給大家。

通常來說,上傳文件,我們是使用POST,還是老規矩先上代碼。

Adapter 適配器模式簡介與 C# 示例【結構型1】【設計模式來了_6】

https://www.cnblogs.com/hnzhengfy/p/SJMSLL_Adapter.html

如題,使用C#實現適配器模式。

.NET WebAPI 基礎 FromRoute、FromQuery、FromBody 用法

https://www.cnblogs.com/ysmc/p/17663663.html

最近技術交流羣裏,還有不少小夥伴不知道 FromRoute、FromQuery、FromBody 這幾個特性是怎麼使用的,也不清楚它們之間的區別在哪裏,特意寫下這個文章,希望可以幫助到迷茫的小夥伴。

如何將現有的Blazor項目的主題切換寫的更好看?

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

在現有的系統當中,我們的主題切換會比較生硬,下面我們將基於Masa Blazor實現好看的擴散主題切換的樣式效果。

WPF-封裝自定義雷達圖控件

https://www.cnblogs.com/liushuiruobing/p/17661556.html

如題,使用WPF封裝自定義雷達圖控件。

主題

【英文】Visual Studio for Mac 停用公告 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/visual-studio-for-mac-retirement-announcement/

Visual Studio for Mac 開發結束的公告。

未來的開發將集中在 Visual Studio 和 Visual Studio Code 上,因此 Visual Studio for Mac 17.6 將是最終版本。將支持到2024年8月31日,即12個月後,以後不會添加新功能或對新框架的支持。

作爲替代解決方案,我們建議使用 Visual Studio Code 和 C# Dev Kit、在 Mac 上的 VM 上使用 Visual Studio,以及在 Dev Box(雲上的 VM)上使用 Visual Studio。

  • [JetBrains Rider 歡迎 Visual Studio for Mac 用戶購買新個人訂閱可享受 65% 折扣 | .NET 工具博客](https://blog.jetbrains.com/dotnet/2023/09/01/65-off-rider /)
    • 公告發布後,JetBrains Rider 個人訂閱可享受 65% 折扣,截止時間爲 UTC 時間 6 月 4 日上午 6:00(日本時間 6 月 4 日 15:00)

【英文】發佈 v1.4.0 · microsoft/WindowsAppSDK

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.4.0

Windows App SDK 1.4.0 發佈。

此版本中的 XAML 島不再是實驗性的,添加了 ItemsView、DesktopAcrylicController 和 MicaController 的可用性改進等等。

【英文】發佈 8.0.0-beta.1 · App-vNext/Polly

https://github.com/App-vNext/Polly/releases/tag/8.0.0-beta.1

Polly 8.0.0-beta.1 已發佈。

此版本正在接受從 alpha 到 beta 的 API 審覈。

【英文】新的 .NET 升級助手版本,具有功能更新和 .NET MAUI 改進! - .NET 博客

https://devblogs.microsoft.com/dotnet/upgrade-assistant-august-2023-update/

關於 .NET Upgrade Assistant 的 8 月更新。

除了僅將項目文件更新爲 SDK 樣式的功能之外,此版本還包括對 .NET MAUI 遷移的改進,例如使用 CLI 在 macOS 上升級的功能。

【英文】加入我們的 JetBrains .NET Day Online ’23 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/08/30/dotnet-day-online-23/

關於 JetBrains .NET Day Online '23 的公告。

由 JetBrains 主辦的活動將於 9 月 26 日舉行,在線提供 .NET 會議。文章介紹了當前的議程。

【英文】宣佈 freeCodeCamp 推出新的基礎 C# 認證 - .NET 博客

https://devblogs.microsoft.com/dotnet/announcing-foundational-csharp-certification/

freeCodeCamp 現在提供基本的 C# 認證。

freeCodeCamp 是一家提供編程等學習資源的慈善機構,現在增加了 C# 認證考試。與 Microsoft Learn 合作以獲得考試和認證。

【英文】發佈診斷版本 - v7.0.442301 · dotnet/diagnostics

https://github.com/dotnet/diagnostics/releases/tag/v7.0.442301

.NET 診斷工具 v7.0.442301 發佈。

此版本修復了 dotnet-dump/SOS 中的錯誤並添加了 dumpexception 命令。

【英文】宣佈 Appwrite 的新 .NET SDK

https://dev.to/appwrite/announcing-appwrites-new-net-sdk-5028

Appwrite 的 .NET SDK 已發佈。

通過使用此 SDK,您可以在 .NET 中使用 AppWrite 的服務器端功能。

文章、幻燈片等

【英文】並非所有 O(1) 操作都被視爲相等

https://ayende.com/blog/200033-B/not-all-o-1-operations-are-considered-equal?Key=9b63efc3-8651-43b1-a301-6051e87361da

爲了減少Dictionary的查找,我採用了使用List來保存索引的方法。

【英文】生成 ASCII Art — C# 中的簡單操作方法

https://medium.com/@devleaderca/generate-ascii-art-a-simple-how-to-in-c-1b3f53a972f0

如何生成使用圖像中的 ASCII 字符表達陰影的 ASCII 藝術作品。

【英文】NET 8 隨機性指南:探索 2023 年新方法和技術

https://www.thatamazingprogrammer.com/the-art-of-randomness-in-net-8-new-methods-and-techniques

在 .NET 8 中引入新的隨機 API(“GetItem”、“Shuffle”)。

【英文】掌握跨平臺部署:使用 Electron.js 的 Blazor WASM 應用程序並通過 GitHub Actions 自動更新

https://medium.com/@dejandjenic/mastering-cross-platform-deployment-blazor-wasm-applications-with-electron-js-509dc4338450

瞭解如何使用 Electron 打包 Blazor WASM 應用程序,並使用 GitHub Actions 啓用自動更新。

【日文】爲什麼C# 8.0中引入的數組索引器的範圍規範是獨佔結束 - Qiita

https://qiita.com/jun1s/items/a56b80eb5a2dead6617f

關於爲什麼 C# 8 中可用於數組索引器的數組表示法是排他性結束的討論。

【英文】LINQ 內部原理:速度優化

https://antao-almada.medium.com/linq-internals-speed-optimizations-1d99b53750bb

介紹 LINQ 中的運算符內發生的優化。

【英文】最小 API 中的表單綁定:探索 .NET 8 預覽版 - 第 7 部分

https://andrewlock.net/exploring-the-dotnet-8-preview-form-binding-in-minimal-apis/

.NET 8 中最小 API 中表單綁定的討論。

文章還解釋瞭如何處理 CSRF 對策令牌和各種限制。

【英文】C# Lambda:代碼拆解

https://ricomariani.medium.com/c-lambdas-a-code-teardown-b345ce255212

關於使用 C# lambda 時機器語言級別的代碼大小。

【日文】如何在 Azure 應用服務的應用程序設置中設置對象和數組

https://zenn.dev/microsoft/articles/app-service-array

如何通過 Azure 應用服務應用程序設置中的 Microsoft.Extensions.Configuration 中的環境變量設置來設置對象和數組。

【英文】使用 C# 測量 Unicode 字符串長度

https://khalidabuhakmeh.com/measuring-unicode-string-lengths-with-csharp

關於如何獲取 Unicode 字符串的長度。

【英文】Visual Studio 中你可能不知道的 9 個“隱藏”功能

https://blog.elmah.io/9-hidden-features-in-visual-studio-that-you-may-not-know/

介紹 Visual Studio 的 9 個隱藏便利功能。

【英文】在 Kubernetes 上收集 .NET Core 的內存轉儲

https://cezarypiatek.github.io/post/memory-dump-on-kubernetes/

如何從 Kubernetes 上運行的 .NET 應用程序獲取內存轉儲。

【英文】爲.NET 編譯 Rust,只用茶和固執!

https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_0_1.html

關於我們嘗試將 Rust 編譯爲 .NET 的 IL。

【日文】如何使用 System.Text.Josn 將字符串數字 "Foo":"1" 反序列化爲 int Foo {get;set;}

https://devadjust.exblog.jp/29682981/

當數字表示爲 JSON 值的字符串時,如何使用 System.Text.Json 將數字轉換並接收爲數字。

【英文】實現基於功能標誌的端點過濾器

https://timdeschryver.dev/blog/implementing-a-feature-flag-based-endpoint-filter

關於如何根據端點過濾器中的功能標誌進行操作。

【英文】結構體內存佈局優化,實際考慮

https://ayende.com/blog/199841-A/struct-memory-layout-optimizations-practical-considerations?Key=a53d68c5-1801-429b-af30-3fd406eabc6e&

關於class和struct的內存佈局差異及優化。

網站、文檔等

推文

Visual Studio Code 的 Avalonia UI 擴展已發佈。

https://x.com/avaloniaui/status/1696469591138972127?s=12

image-20230907225308862


您可以使用名爲 sizscope 的工具檢查.NET AOT以後的二進制大小。

https://x.com/sergiopedri/status/1697966324759048459?s=12

image-20230907225349615


一個關於使用Interlocked.Increment計算 RPS 等內容如何影響性能的故事。如何有效地計算 RPS (每秒的請求) :

https://x.com/egorbo/status/1697579906106896652?s=12

Image


如何使用 .NET 8 Keyed Service 直接解析 HttpClient。

https://x.com/davidfowl/status/1695590701294145803?s=12

image-20230907225518216

版權聲明

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家爲《.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,歡迎大家加入。

抽獎送書活動預熱!!!

感謝大家對我公衆號的支持與陪伴!爲慶祝公衆號一週年,抽獎送出一些書籍,請大家關注公衆號後續推文!

image-20230703203249615

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