.NET週刊【7月第5期 2023-07-30】

國內文章

PaddleSharp:跨越一年的版本更新與亮點

https://www.cnblogs.com/sdflysha/p/20230724-paddlesharp-in-a-year.html

我始終堅信,開源社區是技術進步的重要推動力,也是我抽出我業餘時間,投入到PaddleSharp這個項目的原因,這個項目充分展現了.NET在複雜計算領域的潛力。今天很高興地告訴大家,PaddleSharp有了新版本!

先來說說背景,有的朋友可能知道,PaddleSharp過去老版本存在一些東西過時或者無法使用的情況。但是,時光恰恰是優化和革新的好理由和契機,我在距離上一篇文章發佈之後,做了許多優化,下面我挑重要的部分做介紹。

跟進 .NET 8 Blazor 之 ReuseTabs 支持 Query 屬性綁定

https://www.cnblogs.com/ElderJames/p/ant-blazor-reusetabs-supports-supply-parameter-form-query.html

ASP.NET 團隊和社區在 .NET 8 繼續全力投入 Blazor,爲它帶來了非常多的新特性,特別是在服務端渲染(SSR)方面,一定程度解決之前 WASM 加載慢,Server 性能不理想等侷限性,也跟原來的 MVC,Razor Pages 框架在底層完成了統一。

.NET 如何實現ChatGPT的Stream傳輸

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

ChatGPT是如何實現不使用websocket進行一個一個字返回到前端的?下面我們會介紹一下EventSource

DateTime和DateTimeOffset是同胞兄弟嗎?

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

小編在日常開發中,用得最多的時間類型就是DateTime,直到一次偶然的邂逅,讓小編遇見了DateTimeOffset。當時小編也是一臉迷茫,因爲在小編的C#編程字典裏就沒出現過DateTimeOffset的字樣,實屬慚愧。於是心中立馬產生疑惑:DateTimeOffset是用來幹嘛的?它和DateTime之間又是什麼關係?帶着種種疑問和不解,小編今天就帶你一起一窺究竟!

超越.NET極限:我打造的高精度數值計算庫

https://www.cnblogs.com/sdflysha/p/20230725-sdcb-arithmetic-intro.html

今年(2023)年初趁過年放假期間,我把自己關在家裏,連續幾個晚上熬夜工作,基於GMPMPFR兩個知名的開源項目,最終成功開發了.NET的高精度數值計算庫:Sdcb.Arithmetic,現在經過多個版本的迭代,已經相當穩定了。

.NET程序的 GDI句柄泄露 的再反思

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

上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,後者用來定位泄露代碼,後面有朋友反饋兩個問題:

  • GDIView 統計不準怎麼辦?
  • 我只有 Dump 可以統計嗎?

於是這篇文章我們繼續研究下。

PerfView專題 (第十六篇): 如何洞察C#託管堆內存的 "黑洞現象"

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

首先聲明的是這個 黑洞 是我定義的術語,它是用來表示 內存吞噬 的一種現象,何爲 內存吞噬,我們來看一張圖。

Avalonia中用FluentAvalonia+DialogHost.Avalonia實現界面彈窗和對話框

https://www.cnblogs.com/raok/p/17575878.html

本文是項目中關於 彈窗界面 設計的技術分享,通過 FluentAvalonia+DialogHost.Avalonia 開源nuget包來實現項目中需要 彈框顯示的界面 和所有的 對話框 的展示。

關於 yield 關鍵字(C#)

https://www.cnblogs.com/czzj/p/yield.html

yield 關鍵字推遲指令執行,使得程序可以更細緻地控制集合元素產生的時機。對於大型集合,可以先返回部分內容,讓系統展示目標內容,類似於在餐館喫飯時做好一個菜就上桌。此外,使用 yield 還可以提高內存使用效率。當一個方法需要返回一個集合時,如果不使用 yield,則需要把集合數據裝載到內存中等待被使用,這可能導致數據在內存中佔用較長的時間。下面就一起來看下怎麼用 yield 關鍵字吧。

asp.net core之依賴注入

https://www.cnblogs.com/fanshaoO/p/17579976.html

ASP.NET Core 支持依賴關係注入 (DI) 軟件設計模式,這是一種在類及其依賴關係之間實現控制反轉 (IoC) 的技術。
按照官方文檔的描述:
依賴關係注入通過以下方式解決了這些問題:

  • 使用接口或基類將依賴關係實現抽象化。
  • 在服務容器中註冊依賴關係。 ASP.NET Core 提供了一個內置的服務容器 IServiceProvider。 服務通常已在應用的 Program.cs 文件中註冊。
  • 將服務注入到使用它的類的構造函數中。 框架負責創建依賴關係的實例,並在不再需要時將其釋放。

由於Myuki大佬比較忙,本週國際內容板塊只有標題和鏈接。

主題

【英文】ReSharper 2023.2 候選版本現已推出 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/07/26/resharper-2023-2-rc/

【英文】Rider 2023.2 候選版本現已推出 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/07/26/rider-2023-2-rc/

【英文】Avalonia for Visual Studio Code(搶先體驗)

https://dev.to/avalonia/avalonia-for-visual-studio-code-early-access-34bh

【英文】宣佈 ODP.NET 23c 開發版本

https://medium.com/@alex.keh/announcing-odp-net-23c-dev-release-fbd92861e466

【英文】F# 中字符串插值的新語法 - .NET 博客

https://devblogs.microsoft.com/dotnet/new-syntax-for-string-interpolation-in-fsharp/

【英文】預測性調試簡介:對未來的顛覆性展望 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/07/27/introducing-predictive-debugging-a-game-changing-look-into-the-future/

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

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

【英文】版本 2.2.7 · mysql-net/MySqlConnector

https://github.com/mysql-net/MySqlConnector/releases/tag/2.2.7

文章、幻燈片等

【日文】在AvaloniaUI中構建Android🚀 - Qiita

https://qiita.com/tkhshiq/items/f3a363d24cbdf5bd2793

【英文】如何設置 XUnit 測試的全局設置 - Event-Driven.io

https://event-driven.io/en/xunit_global_settings/

【英文】使用 SharpFuzz 對 .NET 進行模糊測試的五年經驗

https://mijailovic.net/2023/07/23/sharpfuzz-anniversary/

【英文】在 .NET 中使用 Azure Web PubSub 和 Protobuf 子協議

https://dev.to/corcav/using-azure-web-pubsub-with-protobuf-subprotocol-in-net-58li

【英文】.NET 8 中您可能錯過的 7 個新功能(或錯誤修復🐛)

https://dev.to/bytehide/7-new-features-or-bug-fixes-you-might-have-missed-in-net-8-4f11

【英文】通過電子郵件訂閱 Visual Studio 博客 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/subscribe-to-the-visual-studio-blog-via-email/

【英文】使用 Visual Studio Code Docker 工具調試 .NET 容器 - .NET 博客

https://devblogs.microsoft.com/dotnet/debugging-dotnet-containers-with-visual-studio-code-docker-tools/

【英文】震撼您的調試遊戲:您需要了解的並行堆棧窗口技巧! - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/rock-your-debugging-game-parallel-stack-window-tips-you-need-to-know/

【英文】Rider 2023.2 中 Unity 着色器文件的改進 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/07/25/improvements-to-unity-shader-files-in-rider-2023-2/

【英文】用攔截器替換方法調用:探索 .NET 8 預覽 - 第 5 部分

https://andrewlock.net/exploring-the-dotnet-8-preview-changing-method-calls-with-interceptors/

【英文】GA4 數據 API 與 .NET

https://dev.to/chuac/ga4-data-api-with-net-1n00

【英文】.NET 中的後臺任務和計劃作業?認識Hangfire🔥

https://dev.to/bytehide/background-tasks-and-scheduled-jobs-in-net-meet-hangfire-30pd

【英文】使用 .NET 項目增強 GitLab 上的測試可視化

https://medium.com/@dejandjenic/enhancing-test-visualization-on-gitlab-with-net-projects-47f65a90c19

【英文】將您的 Chromebook 變成一臺 .Net 開發機器!

https://dev.to/brunosilvadev/turn-your-chromebook-into-a-net-developer-machine-2bk6

【英文】.NET Framework 4.8 到 .NET 6 遷移

https://steven-giesel.com/blogPost/f531dded-44af-4341-871c-d54875877900

【英文】C# 中的日誌格式化程序 - Bruno Sonnino

https://blog.revolution.com.br/2023/07/17/log-formatters-in-c/

【英文】如何使用帶有 WSL 的測試容器運行集成測試

https://medium.com/@NelsonBN/how-to-run-integration-tests-using-testcontainers-with-wsl-52c77a2acbbb

【英文】在 Blazor 和 MAUI 中使用 Session- 和 LocalStorage

https://medium.com/@kxmliebl/using-session-and-localstorage-in-blazor-and-maui-b01fbb41d14c

庫、存儲庫、工具等。

Cysharp/YetAnotherHttpHandler:將 HTTP/2(和 gRPC)的強大功能引入 Unity 和 .NET Standard。

https://github.com/Cysharp/YetAnotherHttpHandler

matthewrdev/UnityUaal.Maui:將 Unity 遊戲引擎嵌入到 .NET MAUI 中。

https://github.com/matthewrdev/UnityUaal.Maui

https://twitter.com/matthewrdev/status/1684349416210337793?s=12

網站、文檔等

推文

https://twitter.com/mariohewardt/status/1684254752891346944?s=12

image-20230731212448962


https://twitter.com/davidfowl/status/1683956501570879489?s=12

image-20230731212521721


https://twitter.com/mkristensen/status/1683909106783105025?s=12

image-20230731212552593

深入探索

爲 CoreCLR 實現常量泛型的最小可行性產品部分

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

“Const Generics”支持開發人員需要通過類型參數傳遞 const 值的用例。

典型的用例是諸如 shuffle(它基本上是一個有保證的常量)
以及數字、向量、矩陣等的模板。

例如,固定緩衝區 [1]、多維數組/Span [2] 和數組的約束形狀 [3]。

對於[1],我們可以用一個類型struct ValueArray<T, int N>來定義具有 N 個元素的 T 數組的類型。
這對於可變參數也很有用。例如,aparams ValueArray<int, 5>可以表示僅接收 5 個參數的可變參數int

對於[2],我們可以使用 const 類型參數來定義 a Span<T, int Dim>,因此我們Span也可以用於多維數組。

對於[3],我們可以約束數組的形狀。當您處理矩陣/向量計算時,這特別有用。
例如,您現在可以使用定義矩陣class Matrix<T, int Row, int Col>。當你實現乘法算法時,你可以簡單地放一個簽名Matrix<T, Row, NewCol> Multiply<NewCol>(Matrix<T, Col, NewCol> rMatrix)。這可以確保用戶在進行乘法運算時傳遞正確的矩陣形狀。

版權聲明

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

格式如下:

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

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

.NET性能優化交流羣

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

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

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

如果提示已經達到200人,可以加我微信,我拉你進羣: lishi-wk

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

抽獎送書活動預熱!!!

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

image-20230703203249615

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