.NET週報 【3月第4期 2023-03-24】

2023-03-28 09:00:52

國內文章

.NET應用系統的國際化-多語言翻譯服務

https://www.cnblogs.com/tianqing/p/17232559.html

本文重點介紹了多語言翻譯服務的設計和實現。文章描述瞭如何通過多語言翻譯服務,將臨時儲存在資料庫中的多語言詞條,按支援的語言翻譯成多語言詞條。作者設計了一個翻譯服務提供者類,通過Facade模式,對外統一提供翻譯服務。文章還提供了Azure翻譯服務的程式碼範例。

實現常駐任務除了避免曇花執行緒,還需要避免重返執行緒池

https://www.cnblogs.com/newbe36524/p/0x028-avoid-return-to-threadpool-in-longrunning-task.html

前面我們使用簡單的例子演示了 Task 和 Thread 的兩種製造曇花執行緒的方式。那麼除了避免曇花執行緒,在實現常駐任務的時候,還需要避免重返執行緒池。本文將介紹如何避免重返執行緒池。

RSA 簡介及 C# 和 js 實現【加密知多少系列】

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

本文主要介紹了對稱加密和非對稱加密,以及非對稱加密的代表演演算法 RSA 演演算法。RSA 演演算法是目前最有影響力的公鑰加密演演算法之一,它能夠抵抗到目前為止已知的所有密碼攻擊。RSA 公鑰加密演演算法的原理是根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。本文還提到了 RSA 演演算法的一些缺點和特點,以及如何使用 BouncyCastle.NetCore 包進行 RSA 加解密。

【ASP.NET Core】在node.js上託管Blazor WebAssembly應用

https://www.cnblogs.com/tcjiaan/p/17241935.html

本文介紹瞭如何使用 node.js 託管 Blazor wasm 應用程式。首先,需要完成 Blazor wasm 應用程式的開發,然後釋出專案並將 _framework 目錄複製到新建的 Server 目錄中。接著,在 Server 目錄下新建 index.html 檔案和 app.js 檔案,分別用來呈現元件和寫伺服器主程式。最後,執行 app.js 檔案並在瀏覽器中輸入地址驗證 Blazor 應用程式是否成功啟動。

VS Code多語言筆電擴充套件外掛 Polyglot Notebooks

https://www.cnblogs.com/shanyou/p/17247652.html

本文介紹了微軟釋出的VS Code的多語言筆電擴充套件外掛Polyglot Notebooks,它使用.NET Interactive引擎,支援多種語言。它讓資料科學家能夠簡單執行跨語言任務。Notebooks是一種方便使用的互動式程式開發工具,可用於執行程式碼、視覺化資料、執行方程式或編寫純文字。開發者可在同一個筆電中使用多種語言,並獲得良好的開發體驗。

記一次 .NET 某醫療住院系統 崩潰分析

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

本文介紹瞭如何使用windbg分析程式崩潰的dump檔案。作者通過使用windbg的自動化分析命令!analyze -v找到了崩潰時的程式指令地址和崩潰的程式碼。文章中還提到了如何使用!heap -s命令檢視具體破壞的詳情記錄。作者通過分析呼叫棧,發現問題是由Oracle的OraOps12.dll造成的,並建議升級該dll檔案。文章最後提到,在百加dump的分析旅程中,碰到和Oracle SDK相關的也有3+起,建議大家在使用上儘量更新到最新版本。

【譯】使用 ChatGPT 和 Azure Cosmos DB 構建智慧應用程式

https://www.cnblogs.com/MingsonZheng/p/17249955.html

本文介紹瞭如何使用 Azure Cosmos DB 和 OpenAI 的 ChatGPT 構建智慧聊天應用程式。文章詳細介紹了範例應用程式的架構、資料模型和實現方法。作者還探討了如何使用提示來維護對話上下文,以及如何將資料庫與大型語言模型結合起來構建智慧應用程式。文章最後提到,作者將進一步研究,並提供更多範例和部落格文章,幫助使用者使用 Azure OpenAI 和 Azure Cosmos DB 建立智慧應用程式和服務。

微軟開源了一個 助力開發LLM 加持的應用的 工具包 semantic-kernel

https://www.cnblogs.com/shanyou/p/semantic-kernel.html

本文介紹了微軟的語意核心(SK)專案,它是一種創新的輕量級軟體開發套件(SDK),旨在將人工智慧(AI)大型語言模型(LLM)與傳統程式語言整合。SK支援多種設計模式,可以為應用程式注入複雜的技能,如提示連結、遞迴推理、總結等。SK最初的目標是C#開發人員,但也為Python提供了預覽支援。微軟還提供了一個免費的LinkedIn學習課程,幫助開發人員入門。

如何提取 x64 程式那些易失的方法引數

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

這篇文章講述瞭如何在x64環境下提取執行緒棧中的方法引數。作者通過一個案例演示瞭如何使用Marshal在ntheap上分配堆塊,然後提取Marshal.FreeHGlobal方法的使用者控制程式碼。文章指出,由於方法引數是通過暫存器傳遞的,能否成功撈取需要仔細觀察組合程式碼才能知道。

如何使用Photino建立Blazor專案進行跨平臺

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

這篇文章介紹了Photino,一組使用Web UI建立桌面應用程式的技術。它由TryPhotino.io維護,並鼓勵社群開發Photino.Native控制元件以用於其他語言和平臺。文章還提供瞭如何使用Photino.Blazor建立.NET 6及更高版本的桌面應用程式的範例,該應用程式可以在Windows,Linux和Mac上跨平臺工作。

abp(net core)+easyui+efcore實現倉儲管理系統——ABP升級7.3上(五十八)

https://www.cnblogs.com/chillsrc/p/17258437.html

這篇文章講述瞭如何使用ABP框架、EasyUI和EF Core實現倉儲管理系統。文章介紹了.NET 5和.NET 6的統一計劃,以及.NET 6提供的簡化開發、更佳效能和終極工作效率等功能。作者分享了他在升級ABP版本時遇到的問題,並提供瞭解決方案。文章還介紹了ABP框架的優點,包括提供基於DDD和最佳實踐的健壯體系模型。

主題

【英文】.NET 再次為 Bing 帶來效能提升,從 .NET 5 到 .NET 7 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-performance-delivers-again-for-bing-from-dotnet-5-to-dotnet-7/

關於將 Bing 的中央工作流引擎從 .NET 5 更新到 .NET 6、7 的挑戰和好處。

我們認為從 .NET 5 到 .NET 6 的過渡會很容易,但我們遇到了一些問題,例如在內部 HTTP 呼叫中使用不正確的有效負載,以及由於旋轉計數錯誤導致可用性降低。 NET 方面必須處理這個問題,但除此之外,遷移是在沒有任何重大重寫的情況下完成的。

此外,它被預熱為在啟動時根據預分析有意生成 JIT,但 .NET 6 中 JIT 效率的提高大大縮短了啟動時間。

由於遷移到 .NET 7 線上程池行為和基於區域的 GC 方面發生了重大變化,仔細測試表明 GC 時間降低了近 24-30%,這表明 GC 改進和執行緒的第 95 個百分位延遲降低了約 3- 7% 由於執行緒池的改進。

【英文】Visual Studio 2022 的 GitHub Copilot 聊天 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/github-copilot-chat-for-visual-studio-2022/

推出適用於 Visual Studio 2022 的 GitHub Copilot 聊天。

通過 GitHub Copilot 聊天,您現在可以直接從編輯器向 AI 輸入聊天問題,您可以在 Visual Studio 的視窗中與 AI 聊天並改程序式碼問題。此外,當出現異常時,還可以通過AI聊天檢視異常內容。

候補名單登記表現已開放供私人預覽。

【英文】unoplatform/uno 釋出 4.8.15

https://github.com/unoplatform/uno/releases/tag/4.8.15

Uno Platform 4.8.15 已經發布。

此版本包括對 .NET 8 預覽版的支援、改進的啟動體驗、適用於 iOS/Catalyst/Android 的 ThemeShadow、Skia 目標上的陰影、效能和記憶體改進以及許多其他修復。

【英文】ReSharper 和 Rider 2022.3.3 錯誤修復已釋出 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/03/22/resharper-and-rider-2022-3-3-bug-fixes/

ReSharper 和 Rider 2022.3.3 釋出。

此版本修復了一些小錯誤。

文章、幻燈片等

【英文】如何在 .NET 和 C# 中執行突變測試?

https://medium.com/@RebeldeCuantico/how-to-perform-mutation-testing-in-net-and-c-bd23a530341f

如何在 .NET / C# 中進行突變測試。本文介紹瞭如何使用名為 Stryker 的工具進行測試。

【英文】C# .NET 工具與 System.CommandLine

https://dev.to/karenpayneoregon/c-net-tools-withsystemcommandline-2nc2

快速介紹如何使用 System.CommandLine 實現控制檯應用程式。

【英文】使用 PowerShell 指令碼將 ASP.Net Web 應用遷移到 Azure 應用服務

https://techcommunity.microsoft.com/t5/apps-on-azure-blog/asp-net-web-app-migration-to-azure-app-service-using-powershell/ba-p/2814513

引入 PowerShell 工具以將 ASP.NET Web 應用程式 (.NET Framework) 遷移到 Azure 應用服務。

【英文】在.NET中有太多的 timers 類? - Gérald Barré

https://www.meziantou.net/too-many-timers-in-dotnet.htm

.NET中包含的多個定時器(System.Threading.Timer、System.Threading.PeriodicTimer、System.Timers.Timer)的區別和用法介紹。

【英文】使用 Plotly.NET 在 F# 和 C# 中繪製散點圖

https://fslab.org/blog/graph-gallery/scatter/csharp.html

瞭解如何使用 Plotly.NET 顯示散點圖文章介紹了Interactive(Juptyer Notebook)中的一個使用範例。

【英文】精通 Blazor - 第 2 部分:熱過載

https://dev.to/florianrappl/mastering-blazor-part-2-hot-reloading-2b87

Blazor 中熱過載的解釋。

這篇文章解釋瞭如何使用熱過載、它的限制是什麼以及它是如何工作的。

【英文】在 VS 程式碼中偵錯多個 .NET 專案

https://dev.to/this-is-learning/debugging-multiple-net-projects-in-vs-code-28kn

如何在 Visual Studio Code 中同時偵錯和執行多個 .NET 專案。

【英文】使用 JetBrains Rider 進行遠端開發 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/03/22/remote-development-with-jetbrains-rider/

關於遠端開發的介紹性文章,在 Rider 2022.2 中作為測試版支援。

本文介紹瞭如何開始使用 Rider 進行遠端開發,以及您可以使用它做什麼。

【英文】使用無root許可權Linux 容器保護您的 .NET 雲應用程式 - .NET 部落格

https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/

關於 .NET 8 中引入的無root許可權 Linux 容器映像。

無root許可權容器映象可以通過以普通使用者身份執行來降低安全風險。使用 .NET 8,容器映像現在將包含應用程式的使用者。

本文解釋瞭如何以普通使用者身份執行它以及在這種情況下該怎麼做。

【英文】使用斷點組簡化偵錯過程 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/streamlining-your-debugging-process-with-breakpoint-groups/

Visual Studio 2022 版本 17.6 預覽版 2 中引入的分組斷點功能介紹。

【日文】IOT 和 Visual Studio 2022 C#(L 在 RaspberryPi 上閃爍)- Qiita

https://qiita.com/dail1015/items/aa8169c72598865f3bca

如何在 Raspberry Pi 4 上執行 .NET 7 並閃爍。

【英文】為什麼 ReSharper 建議這樣做?| .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/03/20/why-is-resharper-suggesting-this/

對「為什麼 ReSharper 建議這樣做?」功能的介紹,可讓您顯示有關 ReSharper 為什麼建議這樣做的幫助。

【英文】Akka.NET v1.5:沒有 Hocon,沒有 Lighthouse,沒有問題

https://petabridge.com/blog/akkadotnet-1.5-no-hocon-no-lighthouse-no-problem/

Akka.NET 1.5新增Akka.Hosting、Akka.Management、Akka.HealthCheck說明。

【英文】在不安裝任何工具的情況下建立投資組合網站 - .NET 部落格

https://devblogs.microsoft.com/dotnet/codespaces-template-blazor-portfolio-website/

瞭解如何使用 GitHub 程式碼空間在 GitHub 頁面和 Azure 靜態 Web 應用上構建 Blazor WebAssembly 網站。

庫、儲存庫、工具等。

endecipher/Coracle.Raft:使用 .NET 中 Raft 共識演演算法的這種完全可延伸的實現,將您的功能叢集化並構建您自己的複製狀態機

https://github.com/endecipher/Coracle.Raft

一個使用 Raft 共識演演算法實現叢集的庫。

SteveSandersonMS/DotNetIsolator:用於在 .NET 中執行隔離的 .NET 執行時的庫

https://github.com/Steve SandersonMS/DotNetIsolator

一個庫,通過在 .NET 執行時之上託管 Wasm 的 .NET 執行時,提供在隔離環境中執行程式碼的機制。

drasticactions/Drastic.Flex:FLEX 的 .NET 繫結,iOS 的應用內偵錯和探索工具

https://github.com/drasticactions/Drastic.Flex

Flex 的 .NET 繫結,一種適用於 iOS 的應用程式內開發工具。

站點、檔案等

推文

.NET 反編譯器文章已更新為 2023 年的資訊。

https://twitter.com/ndepend/status/1635867251084521472?s=12


Rx.Async 的第一個 alpha 版本已經發布。

https://twitter.com/howardvrooijen/status/1637018355243646977?s=12


談論 Span.CopyTo 變得可以展開。

https://twitter.com/egorbo/status/1637807882979667973?s=12

深入探索

通過 EgorBo 拉取請求通過 BLK 優化 stackalloc 歸零 #83255 dotnet/runtime

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

ASP.NET Core SPA 模板需要更好的身份驗證選項 #42158 dotnet/aspnetcore

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

.NET 8 中對 ASP.NET Core SPA 模板的更改。

  • 擴充套件現有的基於 cookie 的身份驗證並支援 SPA 應用程式中的自定義
  • 通過現代化現有身份支援基於談話的身份驗證
  • 從 SPA 模板中刪除了 Dende IdentityServer 依賴項
  • 為 ASP.NET Core 中的身份驗證選項建立新檔案
  • 從模板到認證檔案的連結

版權宣告

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