.NET週刊【8月第4期 2023-08-27】

國內文章

AgileConfig-1.7.0 發佈,支持 SSO 🎉🎉🎉

https://www.cnblogs.com/kklldog/p/agileconfig-170.html

AgileConfig 已經好久好久沒有更新過比較大的功能了。一是 AgileConfig 本身的定位就是比較輕量,不想集成太多的功能。二是比較忙(懶)。但是本次升級給大家帶來了一個比較有用的功能 SSO。

使用 OpenTelemetry 構建 .NET 應用可觀測性(1):什麼是可觀測性

https://www.cnblogs.com/eventhorizon/p/17660272.html

Windows 虛擬地址 到底是如何映射到 物理地址 的?

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

我發現有很多的 .NET程序員 寫了很多年的代碼都沒弄清楚什麼是 虛擬地址,更不用談什麼是 物理地址 以及Windows是如何實現地址映射的了?這一篇我們就來聊一聊這兩者之間的聯繫。

C#是否應該限制鏈式重載的設計模式?

https://www.cnblogs.com/sunkaixuan/p/17655870.html

鏈式重載是我自己創造的一個詞,意思是方法A裏處理一下參數,return另一個方法A,第二個方法A裏處理一下參數調第三個方法A,就這樣無限循環下去直到調到真正能出結果的方法A。

本人學藝不精,偶然進行C#開發,感覺看代碼要吐。比如看到某處調用方法A,除非有某個特徵顯眼的參數,否則根本不知道調的方法A是哪個,而且代碼裏也不是按照鏈的順序寫的。

一個超經典 WinForm 卡死問題的最後一次反思

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

在我分析的 200+ dump 中,同樣會遵循着 28原則,總有那些經典問題總是反覆的出現,有很多的朋友就是看了這篇 一個超經典 WinForm 卡死問題的再反思 找到我,說 WinDbg 攔截 System_Windows_Forms_ni System.Windows.Forms.Application+MarshalingControl..ctor 總會有各種各樣的問題,而且 windbg 也具有強侵入性,它的附加進程方式讓很多朋友望而生畏!

這一篇我們再做一次反思,就是如何不通過 WinDbg 找到那個 非主線程創建的控件,那到底用什麼工具的? 對,就是用 Perfview 的牆鐘模式。

MAUI+Blazor混合應用開發示例

https://www.cnblogs.com/fengjq/p/17647612.html

筆者之前在公司搭建過一套生產管理系統,該系統要求能和硬件進行串口通信,同時又要方便後臺進行信息查詢。筆者給出的解決方案就是:MAUI + Blazor,這樣只需要提供一套UI,就能滿足桌面端、移動端和Web端三種不同應用場景。今天要介紹的是基於桌面端的開發實現(實際上WPF和Winform皆可行)。

某酒管集團-單例模式對性能的影響及思考

https://www.cnblogs.com/yxdeng/p/17636047.html

大概一年前開始在思考 構造函數中 依賴注入較多,這對系統性能及硬件資源消耗產生一些優化想法。 一般較多公司的項目都使用Autofac 依賴注入(Scoped 作用域),但是發現過多的對象產生 會消耗 CPU , 內存 並給GC(垃圾回收)造成一定的壓力。那麼開始思考是否能夠使用 單例 (Singleton)來解決這些問題呢? 帶着這些想法開始ReView整個項目的代碼,排查是否存在 單例 會造成 線程安全 或 方法內修改全局變量的代碼( 結果是樂觀的.... )。於是開始了性能測試....論證.. 試運行... ,結果是超預期的(CPU 從 60%-降低到--》10%, 內存 從 33%-降低到--》20%, 接口平均響應時間 從 120毫秒--降低到--》50毫秒 . 1500/QPS (不含內部服務相互調用)) 和 @InCerry 溝通結果,說可以寫個 案例 和大家分享分享... 於是乎 有了這一片文章。

CTC蜀道會:第一次圓桌會圓滿結束

https://www.cnblogs.com/edisonchou/p/ctc_offline_activity_2023no1_introduction.html

近期,成都.NET俱樂部核心成員經過討論會,我們成立了CTC蜀道會,它是一個專注於創業歷程、研發管理、AIGC、副業之路、.NET、Vue、微軟技術、開源技術等領域的社區,立足於蓉城成都,致力於連接同道中人,共同破圈成長。

Blazor前後端框架Known-V1.2.13

https://www.cnblogs.com/known/p/17645480.html

Known是基於C#和Blazor開發的前後端分離快速開發框架,開箱即用,跨平臺,一處代碼,多處運行。

主題

【英文】發佈版本 v2.56.0 grpc/grpc-dotnet

https://github.com/grpc/grpc-dotnet/releases/tag/v2.56.0

grpc-dotnet v2.56.0 已發佈。

它包括對 DebuggerDisplay 等調試體驗的改進,以及細微的改進和錯誤修復。

【英文】Windows 社區工具包 8.0 預發行版 - #ifdef Windows

https://devblogs.microsoft.com/ifdef-windows/windows-community-toolkit-8-0-pre-release/

Windows Community Toolkit 8.0 預覽版已發佈。

WCT 8.0 將多個平臺集成到一個代碼庫中,統一命名空間等等。該組件可與 UWP、Windows App SDK 和 Uno 平臺配合使用。

本文還介紹了可用的包以及如何在新的/現有的項目中使用它們。

【英文】發佈 ImageSharp.Drawing 1.0.0

https://sixlabors.com/posts/announcing-imagesharp-drawing-100/

SixLabors.ImageSharp.Drawing 1.0.0 已發佈。

該庫基於ImageSharp,提供高級繪圖功能,例如文本渲染、路徑和形狀繪製。在類似 Linux 的環境中可以用作 System.Drawing 的替代方案。

請注意,該庫的版本 v1.x 是在 Apache 2.0 許可證下,但它所依賴的 ImageSharp 不是 v2.x(不是開源的)。

【英文】ReSharper 和 Rider 2023.2 的第一組錯誤修復就在這裏! | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/08/24/2023-2-1-bugfix/

ReSharper 和 Rider 2023.2 已發佈。

此版本修復了各種錯誤,包括凍結和代碼解析問題。

【英文】.NET Framework 2023 年 8 月累積更新預覽 - .NET 博客

https://devblogs.microsoft.com/dotnet/dotnet-framework-august-2023-cumulative-update-preview/

.NET Framework 2023 年 8 月累積更新的預覽版已發佈。

此版本修復了 WPF、運行時和 ASP.NET 中的多個錯誤。

文章、幻燈片等

【英文】內存優化的扭曲故事

https://ayende.com/blog/199969-A/a-twisted-tale-of-memory-optimization?Key=cb2fc684-6549-466c-9c4f-0bae8b5ef566

討論從“char[]”創建 UTF-8 字節時優化內存分配的陷阱。

【日文】可以包裝 Microsoft.Fast.Components.FluentUI 的 DataGrid 中無法顯示的項目

https://zenn.dev/tomokusaba/articles/2468153bfe2d68

關於FluentUI for Blazor的FluentDataGrid組件中在列中指定長字符串時如何避免顯示被截斷的問題。

【日文】CEDEC 2023 現代高性能 C# 2023 版

https://speakerdeck.com/neuecc/cedec-2023-modanhaipahuomansuc-number-2023-edition

該幻燈片介紹了基於序列化器的實現在現代 .NET 中編寫高性能代碼的技術。

【日文】使用 AntDesignBlazor 時如何測試組件

https://zenn.dev/artuer/articles/9245d21ac8a88c

如何使用 AntDesignBlazor 對組件進行單元測試。能夠使用 BUnit 和 AntDesignTestKit 編寫測試。

【日文】製作一個在iOS真機和模擬器上運行MAUI App的腳本的故事 - Qiita

https://qiita.com/t0r/items/1e7a2e8923a8b47a3a12

關於創建 shell 腳本以直接在 iOS 真實版和模擬器上運行 .NET MAUI 應用程序。

【英文】在 Visual Studio 2022 中安全地使用 HTTP 請求中的機密 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/safely-use-secrets-in-http-requests-in-visual-studio-2022/

使用 Visual Studio 2022 發送 HTTP 請求 (.http) 的功能時如何存儲機密。

除了 httpenv.json 作爲環境設置和 httpenv.json.user 作爲用戶特定設置之外,我們還介紹了從 ASP.NET Core 用戶機密和 Azure Key Vault 獲取機密信息以及使用 Windows DPAPI 進行加密等方法。是它還引入了 HTTP 文件中額外支持的新語法。

【英文】使用 ForwardedHeadersMiddleware 簡化微服務中的標頭傳播

https://medium.com/@asad99/simplifying-header-propagation-in-microservices-with-forwardedheadersmiddleware-2001fa6b4981

如何在服務之間傳播從客戶端接收到的 HTTP 標頭。本文介紹如何使用 Microsoft.AspNetCore.HeaderPropagation NuGet 包。

【英文】使用 GitHub Copilot Chat 簡化代碼優化和調試 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/simplified-code-refinement-and-debugging-with-github-copilot-chat/

介紹 Visual Studio 中使用 GitHub Copilot Chat 進行調試和代碼改進功能。

本文介紹了分析器中的 CPU 使用情況分析、異常幫助程序以及調試時引用變量和調用堆棧的問題等功能。

【英文】探索 .NET 8 中的 Blazor 變化 - 使用表單捕獲用戶輸入

https://jonhilton.net/blazor-ssr-forms/

在 .NET 8 中的 Blazor (SSR) 中處理表單用戶輸入的演練。

【英文】如何在 Steam Deck 上安裝 JetBrains Rider | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/08/23/how-to-install-jetbrains-rider-on-steam-deck/

如何在 Steam Deck (SteamOS) 上安裝 Rider。

本文介紹了除了 Rider 之外如何安裝和運行 .NET 和 Unity。

【英文】.NET 遷移的故事 - 編目

https://www.jimmybogard.com/tales-from-the-net-migration-trenches-catalog/

創建一個目錄,列出現有應用程序需要解決的問題,以便從 .NET Framework 遷移到 .NET。

【英文】使用 Serilog 和 Azure 進行 ASP.NET Core 日誌記錄

https://damienbod.com/2023/08/21/asp-net-core-logging-using-serilog-and-azure/

如何在 ASP.NET Core 中使用 Serilog 將日誌發送到 Application Insights 和 Azure 應用服務日誌記錄服務。

【英文】動態適應應用程序大小

https://maoni0.medium.com/dynamically-adapting-to-application-sizes-2d72fcb6f1ea

討論稱爲動態適應應用程序大小 (DATA) 的 GC 功能,該功能將在 .NET 8 中實驗性地引入。

【日文】C# Dev Kit for Visual Studio Code 是一個故事,您可以在 GitHub Codespaces 上免費使用它 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20230825/1692937805

關於在 Visual Studio Code 上使用擴展的 C# Dev Kit 進行 .NET 開發需要 Visual Studio 許可證,但該許可證包含在 GitHub Codespaces 中。

【日文】嘗試將 ASP.NET Core 集成添加到 Azure Functions(.NET 獨立工作線程)- Shibayan 其他

https://blog.shibayan.jp/entry/20230823/1692768859

瞭解 ASP.NET Core 集成現已在 Azure Functions 的 .NET 隔離工作線程中可用。

【英文】Visual Studio 中的新增功能:使用解決方案資源管理器比較文件 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/new-in-visual-studio-compare-files-with-solution-explorer/

介紹 Visual Studio 解決方案資源管理器中的文件比較功能。

Enum.TryParse 意外行爲

https://steven-giesel.com/blogPost/64d479f1-823f-4fc7-a56a-2b1ff06dcf72

如果 Enum.TryParse 與基本類型匹配,即使該值實際上並未定義,它也會通過有必要檢查 IsDefined。

庫、存儲庫、工具等。

wcabus/nes-sharp:用 C# 編寫的 NES 模擬器

https://github.com/wcabus/nes-sharp

用 C# 編寫的 NES(Famicom)模擬器。

https://x.com/wesleycabus/status/1695072673087263168?s=12

網站、文檔等

推文

討論如何在 appsettings.json 中以與日誌相同的方式完成 .NET 8 中與指標相關的設置。

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

對象頭是 4 個字節,但在 64 位 .NET 中,出於對齊原因包含 4 個字節的填充是一種浪費。

https://x.com/kookiz/status/1692931201550446891?s=12&t=ggvrrZ7oLogHyNoIGNgjbw

深入理解

通過 janvorli Pull 請求將 NativeAOT 異常處理移植到 CoreCLR #88034 dotnet/runtime

https://github.com/dotnet/runtime/pull/88034

PR 將 NativeAOT 的異常處理機制移植到 CoreCLR。

這可以加快異常處理速度,但目前有一些限制,並且需要環境變量才能啓用。此外,由於複雜性,不支持 32 位版本的 Windows。

CoreCLR RISC-V 架構端口問題 #84834 dotnet/runtime GitHub

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

移植到 RISC-V 架構的問題。

版權聲明

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

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