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

2023-02-14 06:03:38

國內文章

SQLSERVER的truncate和delete有區別嗎?

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

在面試中我相信有很多朋友會被問到 truncate 和 delete 有什麼區別 ,這是一個很有意思的話題,本篇我就試著來回答一下,如果下次大家遇到這類問題,我的答案應該可以幫你成功度過吧。

一個用於存取 OpenAI GPT-3 API的 .NET SDK

https://mp.weixin.qq.com/s/91SBO2Z4ufnx0ry6X1uffQ

大家好,我是寶弟!今天給大家分享一個用於存取 OpenAI GPT-3 API的.NET SDK。此SDK包裝了OpenAI原始的RestAPI。

一款使用Windows App SDK開發的小說閱讀應用

https://mp.weixin.qq.com/s/Gv-Xc4sbD-4zS9JCjhVuMA

大家好,我是寶弟!今天給大家推薦一款使用Windows App SDK開發的小說閱讀應用CleanReader(乾淨閱讀),CleanReader是原生的Windows應用,支援Windows 11 系統。適合喜歡閱讀網文,或者本地輕量閱讀的使用者。

.NET與巨量資料

https://mp.weixin.qq.com/s/32by2AB91JWKTeJclpKHZQ

當別人做巨量資料用Java、Python的時候,我使用.NET做巨量資料、資料探勘,這確實是值得一說的事。寫的並不全面,但都是實際工作中的內容。

.NET多播委託和事件看這篇文章就夠了

https://mp.weixin.qq.com/s/4x7CN5p724X-1lmumomSdg

多播委託和事件在某種程度上是相似的,但是仍有一些重要的區別:定義:多播委託是一種特殊型別的委託,允許多個方法註冊為對委託的響應者。而事件是一種通知機制,允許一個物件向外界發出通知,當特定事件發生時。

CA週記 - 用 .NET 啟動你的 DJI Ryze Tello 無人機

https://mp.weixin.qq.com/s/9uUeA5-KP6X_OidLqrjpkw

大疆的 DJI Ryze Tello 是入門級的無人機,不僅在 STEM 教育中有非常廣泛的應用,也可以作為程式設計入門的首選。通過 UDP 協定呼叫 DJI Ryze Tello SDK 可以讓 DJI Ryze Tello 無人機執行起飛,降落,轉向以及不同的花式動作。本文將會通過 .NET 建立應用控制 DJI Ryze Tello。

C#實現聊天訊息渲染、圖文混排(支援Windows、Linux)

https://www.cnblogs.com/zhuweisky/p/17095413.html

在實現聊天軟體時,渲染文字表情圖文混排是一項非常繁瑣的工作,再加上還要支援GIF動圖、參照訊息、撤回訊息、名片等不同樣式的訊息渲染時,就更加麻煩了。好在我們可以使用 ESFramework 提供的 IChatRender 元件,使用它我們就能輕鬆實現類似於微信聊天訊息的渲染效果。IChatRender 支援 Windows、Linux(包括國產OS)。在Windows平臺上提供了基於 WinForm 和基於 WPF 的實現,在Linux上則是基於.NET Core 實現的。

如何避免讓執行緒摸魚,請用非同步技術 async await 拿捏他~

https://www.cnblogs.com/weixb/archive/2023/02/09/17104642.html

很多的Web框架,收到一個請求,就會建立一個執行緒來處理,如果片刻間內有100個使用者請求這個方法,那麼就得安排100個執行緒,
有沒有方法讓第1個執行緒在等待資料返回時,先去接待第N+1個使用者(校驗請求引數什麼的)這樣就能大大減少執行緒數量~

【.NET 8】ASP.NET Core計劃 - 支援更完善的AOT釋出

https://www.cnblogs.com/InCerry/archive/2023/02/08/Support-publishing-ASP-NET-Core-API-apps-with-Native-AOT.html

我們知道在.NET7.0中一個令人激動的特新就是支援了NativeAOT,我們可以通過NativeAOT生成本機程式,由於無需JIT編譯,所以無需安裝.NET Runtime,也進一步的提升了.程式的啟動速度,降低了程式的體積,在使用者端軟體開發、ServerLess等場景會有不錯的前景。

不用Blazor WebAssembly,開發在瀏覽器端編譯和執行C#程式碼的網站

https://www.cnblogs.com/rupeng/archive/2023/02/10/17107662.html

本文中,我將會為大家分享一個如何用.NET技術開發「在瀏覽器端編譯和執行C#程式碼的工具」,核心的技術就是用C#編寫不依賴於Blazor框架的WebAssembly以及Roslyn技術。

.NET 團隊 更新了 .NET 語言策略

2023年2月6日 ,.NET團隊在官方部落格上釋出了.NET 語言策略的更新文章,具體參見 https://devblogs.microsoft.com/dotnet/update-to-the-dotnet-language-strategy/。微軟在.NET平臺上提供3種語言 - C#,F#和Visual Basic。新的 .NET 語言策略更新了這三者並把最新的文章更新在 Microsoft Learn 上釋出 .NET 語言策略。

主題

【英文】更新.NET語言策略 - .NET Blog

https://devblogs.microsoft.com/dotnet/update-to-the-dotnet-language-strategy/

關於微軟對 .NET 中語言的戰略更新。

目前 .NET 中主要的三種語言是 C#、F# 和 Visual Basic,有關微軟對這三種語言的戰略的檔案已經更新。

【英文】Windows App SDK的實驗釋出1.3實驗版 - Windows應用程式 | Microsoft Learn

https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/experimental-channel

Windows App SDK 1.3 Experimental-1已經發布。

這個版本引入了幾個新功能,包括XAML Backdrop API(例如,將Mica應用於視窗背景),以及用於存取應用程式視窗的Window.AppWindow API。

【中文】Rider EAP版本現在支援中文語言套件 | .NET工具部落格

https://blog.jetbrains.com/zh-hans/dotnet/2023/02/07/introducing-the-rider-localization-eap-for-chinese-japanese-and-korean/

日語、中文和韓語的在地化語言套件現在可用於JetBrains Rider 2023.1 EAP3。

一些在地化工作目前正在進行中,並通過IDE和YouTrack接受反饋。 該公司還表示,未來的目標包括將ReSharper在地化。

【英文】ReSharper結束Visual Studio 2010和2012的開發工作 | .NET工具部落格

https://blog.jetbrains.com/dotnet/2023/02/10/ending-development-for-vs-2010-2012/

宣佈ReSharper 2023.1及以後版本將不再積極支援Visual Studio 2010和2012。

安裝程式整合選項將被保留,並不會立即不可用,但功能將不那麼有保障,支援將被優先考慮。

文章、幻燈片等

【日文】快速製作影象分類應用的過程 - Qiita

https://qiita.com/SoeAtsu/items/4d22493c5dc8367162db

一篇關於在WPF和ML.NET中構建一個識別和分類影象的應用程式的文章。

【英文】SpecFlow - Cucumber in C#

https://daniel-delimata.medium.com/specflow-cucumber-in-c-e642c63469b2

如何使用SpecFlow、Cucumber在.NET中測試你的Web應用程式。

【英文】生成RequestDelegate的響應書寫表示式:最小化API的幕後花絮-第六部分

https://andrewlock.net/behind-the-scenes-of-minimal-apis-6-generating-the-response-writing-expression/

本文在《極簡API的幕後》系列中介紹了RequestDelegate如何生成輸出響應的表示式(Expression)。

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

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

如何以元件的形式將Blazor中的自定義驗證邏輯元件化。

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

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

如何在ValidationSummary元件中只顯示與特定模型相關的錯誤,而不是所有屬性。

【英文】.NET註釋月刊|2023年2月|.NET工具部落格

https://blog.jetbrains.com/dotnet/2023/02/08/net-annotated-monthly-february-2023/

JetBrains的2023年2月相關總結文章。

【日文】如何在C#伺服器上取得組態檔 - Qiita

https://qiita.com/Shaula/items/177e8c16ec9b8b102c7a

如何使用dotnet-trace獲得在伺服器(如容器)上執行的.NET應用程式的跟蹤。

【日文】用.NET探查IBM i資料庫 - Qiita

https://qiita.com/tom_m_m/items/9481e8b619463ab9c20f

關於在IBM i(ppc64le架構)上從.NET應用程式存取Db2資料庫的文章。

【英文】C# 提示:不要使用 nameof 來給常數一個值 - Code4IT

https://www.code4it.dev/csharptips/do-not-use-nameof-for-constants

觀點:不建議在nameof中使用常數的名稱,然後將其作為表名等使用,因為如果不慎改變,會破壞程式碼。

【英文】用Bogus生成樣本資料

https://wildermuth.com/2023/01/29/generating-sample-data-with-bogus/

如何用Bogus生成假資料。

【英文】非同步無效 - 如何馴服非同步的噩夢 - Dev Leader

https://www.devleader.ca/2023/01/27/async-void-how-to-tame-the-asynchronous-nightmare/

關於async void的問題,以及如何在使用它作為事件處理程式時也能設法捕獲異常等等。

【英文】必須遵守C規則,沒有例外

https://ericsink.com/native_aot/no_exceptions.html

關於NativeAOT本地呼叫的方法不得丟擲異常。

【英文】使用Visual Studio開發隧道來處理Twilio Webhooks

https://dev.to/twilio/use-visual-studio-dev-tunnels-to-handle-twilio-webhooks-58dc

如何使用Visual Studio開發隧道來處理Twilio webhooks。

【英文】計時的成本

https://ayende.com/blog/198977-B/the-cost-of-timing-out

關於在有大量並行執行的環境中,呼叫CancellationToken.CancelAfter進行超時處理會導致大量的Timer集。

RavenDB有一種方法,就是有周期性的定時器,並分批次處理,以減少成本。

【英文】在沒有Blazor WebAssembly的情況下,開發一個網站,在瀏覽器上編譯和執行C#程式碼

https://yangzhongke8.medium.com/without-blazor-webassembly-develop-a-web-site-that-compiles-and-runs-c-code-on-browser-c381873f6d03

如何從JavaScript呼叫用WebAssembly構建的C#程式碼,而不使用Blazor WebAssembly的Blazor部分。

【英文】同步-非同步場景下的效能測試

https://wapplegate.com/performance-testing/

所謂Sync-over-Async的效能,即非同步方法的同步等待。

它總結了幾個程式碼場景和結果,如延遲和RPS,取決於並行請求的數量。

開源庫、儲存庫、工具等

drasticactions/MauiFeed: 跨平臺 .NET Feed 閱讀器。

https://github.com/drasticactions/MauiFeed

.NET MAUI 實現的 Feed 閱讀器。

可以從 Microsoft Store 安裝針對 Windows 的構建。

ForNeVeR/xaml-math: 一組 .NET 庫,用於使用 LaTeX 排版風格渲染數學公式,適用於基於 WPF 和 Avalonia XAML 的框架。

https://github.com/ForNeVeR/xaml-math

用於在 WPF 和 Avalonia 中使用 LaTeX 風格渲染數學公式的庫。

https://twitter.com/fvnever/status/1622750145958887424?s=12

LEGO/AsyncAPI.NET: AsyncAPI.NET SDK 包含了 .NET 中 AsyncAPI 檔案的有用物件模型。

https://github.com/LEGO/AsyncAPI.NET/

用於讀取 AsyncAPI(基於 OpenAPI 的事件驅動 API 版本)檔案的庫。

https://twitter.com/legoengineering/status/1623255496030388227?s=12

深入探索

[WIP] .NET 8 的 ASP.NET Core 路線圖 · Issue #44984 · dotnet/aspnetcore

https://github.com/dotnet/aspnetcore/issues/44984

.NET 8 的 ASP.NET Core 路線圖相關的問題。

HttpContent.ReadAsByteArrayAsync 中的過多分配 · Issue #81628 · dotnet/runtime

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

HttpContent.ReadAsByteArrayAsync()相比HttpClient.GetByteArrayAsync()存在 4 倍的分配,是否過多。

實際上,HttpContent.ReadAsByteArrayAsync() 會因為可以多次讀取而快取或複製,因此如果要避免當前情況,最好使用 Stream 進行讀取等。

推文

https://twitter.com/badamczewski01/status/1623788674558091265

什麼是 .NET 中的 PGO(我很快就會再次談論編譯器,但它是為一家公司準備的,所以沒有視訊:/)

可以看到一開始生成的組合程式碼比較低效,而且很長。經過PGO優化以後,程式碼變得非常高效。


https://twitter.com/Dave_DotNet/status/1623600088231874562

.NET 8 中即將推出的NativeAOT 大小改進(預覽版 1) ... Linux 比原來小50%


https://twitter.com/okyrylchuk/status/1623079620307296260

EF 7 改進了字串的轉換。索引方法。 可以在下面比較 EF Core 6 和 EF 7 的 SQL 輸出。

版權宣告

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