國內文章
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
- 什麼是系統的可觀測性(Observability)
- 爲什麼軟件系統需要可觀測性
- 可觀測性的三大支柱
- 日誌(Logging)
- 指標(Metrics)
- 分佈式追蹤(Distributed Tracing)
- Unknow Unknows VS Known Unknowns
- 數據的關聯 - 實現可觀測性的關鍵
- 總結
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開發的前後端分離快速開發框架,開箱即用,跨平臺,一處代碼,多處運行。
- Gitee: https://gitee.com/known/Known
- Github:https://github.com/known/Known
主題
【英文】發佈版本 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 中的多個錯誤。
文章、幻燈片等
【英文】內存優化的扭曲故事
討論從“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 博客
使用 Visual Studio 2022 發送 HTTP 請求 (.http) 的功能時如何存儲機密。
除了 httpenv.json 作爲環境設置和 httpenv.json.user 作爲用戶特定設置之外,我們還介紹了從 ASP.NET Core 用戶機密和 Azure Key Vault 獲取機密信息以及使用 Windows DPAPI 進行加密等方法。是它還引入了 HTTP 文件中額外支持的新語法。
【英文】使用 ForwardedHeadersMiddleware 簡化微服務中的標頭傳播
如何在服務之間傳播從客戶端接收到的 HTTP 標頭。本文介紹如何使用 Microsoft.AspNetCore.HeaderPropagation NuGet 包。
【英文】使用 GitHub Copilot Chat 簡化代碼優化和調試 - Visual Studio 博客
介紹 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 博客
介紹 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 架構的問題。
版權聲明
- 國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/WeekRef.NET
- 其餘內容來自 Myuki WeekRef,由InCerry翻譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET
由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家爲《.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,歡迎大家加入。
抽獎送書活動預熱!!!
感謝大家對我公衆號的支持與陪伴!爲慶祝公衆號一週年,抽獎送出一些書籍,請大家關注公衆號後續推文!