.NET週報 【6月第3期 2023-06-18】

2023-06-21 12:03:21

國內文章

揭祕 Task.Wait

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

Task.Wait 是 Task 的一個實體方法,用於等待 Task 完成,如果 Task 未完成,會阻塞當前執行緒。非必要情況下,不建議使用 Task.Wait,而應該使用 await。本文將基於 .NET 6 的原始碼來分析 Task.Wait 的實現,其他版本的實現也是類似的。

使用 C# 進行AI工程開發

https://www.zhihu.com/column/c_1648375724791808000

一直以來,官方口徑都是儘量不要碰 CSharp 裡的 unsafe 部分,以至於在大部分其它語言的程式設計師眼裡,甚至 CSharp 程式設計師的眼裡,CSharp 就是一個 Java,做做 CRUD,搗鼓搗鼓侷限於 Windows 平臺的 Winform 和 WPF 就行了。我覺得這種觀念是不對的,東西做出來就是讓人用的。準確看待一件事情,需要有一個大局觀和整體觀,而大局觀和整體觀,就避免不了去觸碰 CSharp 裡的 unsafe 部分。必須開啟 unsafe,才能完整的理解 dotnet 和 CSharp。這裡講講我的理解......

.NET原始碼解讀kestrel伺服器及建立HttpContext物件流程

https://www.cnblogs.com/Z7TS/p/17459777.html

.NET本身就是一個基於中介軟體(middleware)的框架,它通過一系列的中介軟體元件來處理HTTP請求和響應。因此,本篇文章主要描述從使用者鍵入請求到伺服器響應的大致流程,並深入探討.NET通過kestrel將HTTP報文轉換為HttpContext物件。通過本文,您可以瞭解以下內容:

  • http的資料流轉流程
  • 原始碼解讀kestrel伺服器的運作流程及生成HttpContext物件

記一次 .NET 某藥材管理系統 卡死分析

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

前段時間有位朋友找到我,說他們在查詢報表的時候發現程式的穩定性會受到影響,但伺服器的記憶體,CPU都是正常的,讓我幫忙看下怎麼回事,問了下程式的穩定性指的是什麼?指的是卡死,那既然是卡死,就抓一個卡死的dump吧。

.net 專案靜態檔案自動壓縮打包

https://www.cnblogs.com/newton/p/17451112.html

在 ASP.NET MVC 時代,我們常使用 BundleCollection 設定需要打包壓縮的 js 和 css 檔案,執行時框架會自動處理打包壓縮過程並將最終結果傳入響應。ASP.NET Core 開始,不再提供內建的打包壓縮元件,官方推薦 WebOptimizer 替代使用。

全面的ASP.NET Core Blazor簡介和快速入門

https://www.cnblogs.com/Can-daydayup/p/17157143.html

因為咱們的MongoDB入門到實戰教學Web端準備使用Blazor來作為前端展示UI,本篇文章主要是介紹Blazor是一個怎樣的Web UI框架,其優勢和特點在哪?並帶你快速入門上手ASP.NET Core Blazor(當然這個前提是你要有一定的C#程式設計基礎的情況,假如你完全沒有接觸過C#的話建議你先從基本語法學起)。

ASP.NET Core 6框架揭祕範例演示[38]:兩種不同的限流策略

https://www.cnblogs.com/artech/p/inside-asp-net-core-6-38.html

承載ASP.NET應用的伺服器資源總是有限的,短時間內湧入過多的請求可能會瞬間耗盡可用資源並導致宕機。為了解決這個問題,我們需要在伺服器端設定一個閥門將並行處理的請求數量限制在一個可控的範圍,即使會導致請求的延遲響應,在極端的情況會還不得不放棄一些請求。ASP.NET應用的流量限制是通過ConcurrencyLimiterMiddleware中介軟體實現的。(本文提供的範例演示已經同步到《ASP.NET Core 6框架揭祕-範例演示版》)

淺聊一下 C#程式的 記憶體對映檔案 玩法

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

前段時間訓練營裡有朋友問 記憶體對映檔案 是怎麼玩的?說實話這東西理論我相信很多朋友都知道,就是將檔案對映到程序的虛擬地址,說起來很容易,那如何讓大家眼見為實呢?可能會難倒很多人,所以這篇我以自己的認知嘗試讓大家眼見為實。

ASP.NET Core 6框架揭祕範例演示[37]:重定向的N種實現方式

https://www.cnblogs.com/artech/p/17472647.html

在HTTP的語意中,重定向一般指的是伺服器端通過返回一個狀態碼為3XX的響應促使使用者端像另一個地址再次發起請求,本章將此稱為「使用者端重定向「。既然有使用者端重定向,自然就有伺服器端重定向,本章所謂的伺服器端重定向指的是在伺服器端通過改變請求路徑將請求導向另一個終結點。ASP.NET下的重定向是通過RewriteMiddleware中介軟體實現的。(本文提供的範例演示已經同步到《ASP.NET Core 6框架揭祕-範例演示版》)

如何洞察 C# 程式的 GDI 控制程式碼洩露

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

前段時間有位朋友找到我,說他的程式介面操作起來很慢並且卡頓等一些不正常現象,從工作管理員看了下 GDI控制程式碼 已經到 1w 了,一時也找不出什麼程式碼中哪裡有問題,讓我幫忙看下,其實這種問題看記憶體dump作用不是很大,主要是寫指令碼很麻煩,這一篇我們就來簡單聊聊如何洞察此類問題。

龍芯下如何進行.net core程式開發部署

https://www.cnblogs.com/silent2012/p/17474301.html

2022年4月,基礎的執行時架構程式碼全部通過社群技術評審.NET國際開源社群正式宣佈支援LoongArch(龍架構),目前LoongArch64架構已出現在.NET社群主幹分支上。本文以.NETCore3.1在loongnix-server8.4下部署為例說明開發部署過程。

理解ASP.NET Core - 全球化&在地化&多語言(Globalization and Localization)

https://www.cnblogs.com/xiaoxiaotank/p/17466952.html

在眾多知名品牌的網站中,比如微軟官網、YouTube等,我們經常可以見到「切換頁面語言」的功能,我們可以選擇最適合的語言瀏覽頁面內容。毫無疑問,為網站提供多種語言,頁面內容在地化,大大擴充套件了受眾範圍,提升了使用者體驗。

.NET的基元型別包括哪些?Unmanaged和Blittable型別又是什麼?

https://www.cnblogs.com/artech/p/basic-types.html

在討論.NET的型別系統的時候,我們經常提到「基元型別(Primitive Type)」的概念,我發現很多人並沒有真正理解基元型別就究竟包含哪些(比如很多人覺得字串是基元型別)。除了明確界定基元型別外,本篇文章還會簡單介紹額外兩種關於型別的概念——Unmanaged型別和Blittable型別。

主題

宣佈 .NET 8 Preview 5 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-5/

.NET 8 Preview 5 已經發布。

  • SDK:改進的指標 API
    • 依賴注入 (DI) 友好的指標 API
    • 建立標記的儀表和儀器
  • SDK:源連結現在是 .NET SDK 的一部分
  • SDK:新的 .NET 庫分析器
  • SDK:Linux 上的獨立構建
  • SDK:非預設自包含
  • Alpine ASP.NET Core Docker 複合影象
    • 使用新的 Ready-to-Run 格式編譯 ASP.NET Core,將程式集組合成單個二進位制檔案(複合)以減小大小等,但失去了處理多個版本的能力。
  • 執行時主機預設不使用 RID 圖來確定特定於 RID 的資產
  • 程式碼生成
    • 預設動態 PGO
    • 優化GC型別的ThreadStatic欄位存取
    • Arm64,AVX-512
  • C# Dev Kit 擴充套件並提高了 VSCode 的工作效率

Visual Studio 2022 17.7 Preview 2 來了!- Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-7-preview-2-is-here/

Visual Studio 2022 17.7 Preview 2 已經發布。

  • IDE 生產力和效能
    • 改進的檔案比較
    • 建立拉取請求
    • 增強的多分支圖支援
    • 並行堆疊過濾
    • 提高 F5 速度
    • 編輯速度優化
  • .NET 開發
    • 自動反編譯外部 .NET 程式碼
    • 新的 CPU 利用率自動化洞察
  • 現代 C++ 和遊戲開發
    • 為 C++ 構建洞察力
    • 虛幻引擎藍圖查詢所有參考資料
    • 增強的 Doxygen 過載解析
  • C++跨平臺及嵌入式開發
    • 遠端檔案更新
    • WSL自動獲取
  • JavaScript 和 TypeScript 開發
    • Vite 新專案建立支援 React 和 Vue
  • 企業管理
    • 標準使用者的 Visual Studio 更新和更新
    • 管理員將私有佈局新增到安裝程式的「可用」索引標籤

.NET 8 Preview 5 中的 ASP.NET Core 更新 - .NET 部落格

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-5/

.NET 8 Preview 5 中對 ASP.NET Core 的更新。

  • 改進了 ASP.NET Core 偵錯體驗
    • HttpContext、HttpRequest、HttpRequest、ClaimsPrincipal 上的 DebuggerDisplay 屬性
  • 伺服器和中介軟體
    • IHttpSysRequestTimingFeature
    • ITlsHandshakeFeature 中的 SNI 主機名
    • IExceptionHandler
    • Blazor
    • 新的 Blazor Web 應用程式專案模板
    • 與 Blazor 路由器端點路由整合
    • 為 Blazor Server 的各個元件啟用互動
    • 增強的 Webcil 包
    • Blazor 內容安全策略 (CSP) 相容性
  • API創作
    • 支援通用屬性
    • SignalR
    • SignalR 無縫重新連線
    • 原生AOT
    • 支援 AsParameters 和編譯時最小 API 的自動後設資料生成
  • 身份驗證和授權
    • 更新了 ASP.NET Core SPA 模板的身份驗證
    • 推薦使用 AuthorizationBuilder 的新分析器

在 .NET 8 Preview 5 中宣佈 .NET MAUI - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-preview-5/

.NET 8 Preview 5 中對 .NET MAUI 的更新。

  • iOS鍵盤捲動
  • 增強測試
  • 改進的效能
  • 錯誤修復

釋出 8.0.0-alpha.1 App-vNext/Polly GitHub

https://github.com/App-vNext/Polly/releases/tag/8.0.0-alpha.1

Polly 8.0.0-alpha.1 已經發布。

Polly v8 對 API 進行了重大更改,並以更少的開銷構建在新的 API 上。此版本是其第一個預覽版本。

.NET Framework 的 2023 年 6 月安全修復程式和累積更新已釋出。

此版本包含 6 個安全修復和多個錯誤修復。

  • CVE-2023-24897:遠端程式碼執行(PDB 導致 MSDIA SDK 堆溢位)
  • CVE-2023-29326:遠端程式碼執行(WPF BAML 許可權提升)
  • CVE-2023-24895:遠端程式碼執行(WPF XAML 解析器漏洞)
  • CVE-2023-24936:許可權提升(DataSet 和 DataTable XML 反序列化漏洞)
  • CVE-2023-24936:拒絕服務(AIA 使用者端證書獲取過程漏洞)
  • CVE-2023-29330:拒絕服務(X509Certificate2 檔案檔案處理漏洞)

.NET 2023 年 6 月更新 – .NET 7.0.7、.NET 6.0.18 - .NET 部落格

https://devblogs.microsoft.com/dotnet/june-2023-updates/

.NET 7.0.7、6.0.18 已經發布。

此版本包含各種安全修復和一些錯誤修復以及質量增強修復。

  • CVE-2023-24895:遠端程式碼執行(XAML 框架元素處理漏洞)
  • CVE-2023-24897:遠端程式碼執行(PDB 導致 MSDIA SDK 堆溢位)
  • CVE-2023-24936:許可權提升(DataSet 和 DataTable XML 反序列化漏洞)
  • CVE-2023-29330:拒絕服務(X509Certificate2 檔案檔案處理漏洞)
  • CVE-2023-29337:NuGet 使用者端遠端程式碼執行(競爭條件符號可利用漏洞)
  • CVE-2023-32032:拒絕服務(Tar 檔案提取漏洞)
  • CVE-2023-33126:拒絕服務(崩潰和堆疊跟蹤場景中的漏洞)
  • CVE-2023-33128:拒絕服務(P/Invoke Source Generator 生成的程式碼記憶體釋放漏洞)
  • CVE-2023-33135:拒絕服務(.NET SDK 工具恢復許可權提升漏洞)

介紹 CreatorKit - ServiceStack

https://servicestack.net/posts/creatorkit

CreatorKit 是在 .NET 中實現的 Mailchimp 的自託管替代方案,現已釋出。

您可以管理郵寄列表和時事通訊訂閱、傳送可客製化的電子郵件,並獲得一套完整的工具,包括管理儀表板。

它是 ServiceStack 的一部分,對個人和開源專案免費。

釋出 2.6.116 StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.6.116

StackExchange.Redis 2.6.116 已經發布。

它包括針對本機 AOT 支援的錯誤修復和更新。

Blazor Essentials – 新指南教學 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/06/13/blazor-essentials-new-guide-tutorial/

JetBrains 的 Blazor 介紹指南現已推出。

涵蓋 Blazor,從實現表單、與 JavaScript 互操作和釋出。

將 .NET Framework 4.8.1 釋出到釋出預覽頻道

https://blogs.windows.com/windows-insider/2023/06/13/releasing-net-framework-4-8-1-to-the-release-preview-channel/

.NET Framework 4.8.1 已釋出到 Windows Insiders 的 Release Preview 頻道。

已交付至適用於 Windows 11 21H2、Windows 10 21H2、22H2 的 Insider Preview Release Preview 頻道。

.NET Framework 4.8.1 包括 Arm64 架構支援、輔助功能改進等。

Rider 2023.2 EAP 5:改進了對 C# 的支援、更好的效能分析等。| .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/06/16/rider-2023-2-eap-5/

Rider 2023.2 EAP 5 已經發布。

該版本包括對 lambda 預設引數的支援、改進的 Disposable 檢查、終端 WinPTY 到 ConPTY 的遷移、按執行緒分組的 dotTrace 顯示等。

ReSharper 2023.2 EAP 5:改進了對物件處置的控制,支援預設 Lambda 引數和 C++23 標準庫模組。| .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/06/16/resharper-2023-2-eap-5/

ReSharper 2023.2 EAP 5 已經發布。

此版本包括對 lambda 預設引數的支援、改進的 Disposable 檢查、C++ 中的 C++23 標準庫支援、按執行緒顯示分組的 dotTrace 等。

在 Discord 上引入 Microsoft Store 頻道 - #ifdef Windows

https://devblogs.microsoft.com/ifdef-windows/introducing-the-microsoft-store-channel-on-discord/

頻道已在 Discord 上開通。

此頻道位於 UWP 社群伺服器上,可讓你討論與 Microsoft Store 應用和站點、合作伙伴中心、MSIX 程式包和安裝程式相關的主題。

您可以在社群中進行討論並與 Microsoft 團隊互動。

釋出 v1.0 Windows 地圖:介紹適用於 Windows CommunityToolkit/Maui 的地圖控制元件

https://github.com/CommunityToolkit/Maui/releases/tag/1.0.0-maps

.NET MAUI Community Toolkit 釋出了適用於 Windows 的地圖控制元件。

由於 Windows 沒有將地圖作為平臺功能,並且不支援 .NET MAUI 的地圖控制元件,因此 Bing 提供了一個託管在 WebView2 中的地圖控制元件作為社群實現。

公共預覽版:.NET 8 的應用服務支援 | Azure 更新 | Microsoft Azure

https://azure.microsoft.com/en-us/updates/public-preview-app-service-support-for-net-8/

宣佈在 Azure 應用服務上搶先體驗 .NET 8。

Azure 應用服務(Windows 和 Linux)上 .NET 8 的早期存取可用性。

使用 Microsoft Endpoint Manager (Intune) 設定 Visual Studio 策略 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/configure-visual-studio-policies-using-microsoft-endpoint-manager-intune/

將 Visual Studio 全域性策略新增到 Microsoft Endpoint Manager (Intune) 設定目錄。

這允許從 Intune 部署 Visual Studio 設定選項,以前需要手動 ADMX 上傳直接從 Intune 進行管理。

文章、幻燈片等

ASP.NET(.NET Framework)各個Session State Provider的大規模更新-Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20230618/1687080471

ASP.NET (.NET Framework) 的對談狀態提供程式更新摘要。

有一些使用SQL Server、Cosmos DB和Redis作為ASP.NET的Session State Provider,他們詳細解釋了今年更新的要點。

【VSCode、C#、AWS Lambda】在本地檢視C#建立的Lambda Function的執行-Qiita

https://qiita.com/shin4488/items/a01fdf54daf626cb8742

關於如何在本地 Visual Studio Code 中檢查在 .NET 中實現的 AWS Lambda 函數的執行情況。

在本地執行大型語言模型——你自己的 C# 類 ChatGPT AI

https://dev.to/maartenba/running-large-language-models-locally-your-own-chatgpt-like-ai-in-c-jco

如何使用 LLamaSharp 在您的本地環境中像 ChatGPT 一樣與 LLM 實現 AI 聊天。

將 F# 編譯為 Rust