國內文章
.NET Conf China 2022 第一批講師陣容大揭秘!整個期待了!
https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg
目光看過來 2022 年 12 月 3-4 日,一場社區性質的國內規模最大的 線上線下.NET Conf 2022 技術大會 即將盛大開幕。目前大會正緊鑼密鼓地進行中,第一批大咖講師及主題已確定,小編迫不及待想和大家分享。
如何像使用 AspNetCore 中的 Controllers 和 Actions 一樣處理 MQTT 消息
https://mp.weixin.qq.com/s/KyATJd47ctCVg9ZLTyGikA
在物聯網項目中, 處理 MQTT 的 topic 時費工費力, 代碼一團亂, 什么才是最好的姿勢?這里面我們極力介紹 MQTTnet.AspNetCore.Routing 項目,這個組件是通過 MQTTnet 實現了定義控制類和屬性來路由處理消息的 topic , 就像 Asp.Net Core 的 WebApi 寫法一樣簡單容易。
定制 ASP.NET Core 的身份認證
https://www.cnblogs.com/jackyfei/archive/2022/11/15/16879926.html
在本章,我們將學習如何定制 ASP.NET Core 認證機制。微軟把安全認證當做 ASP.NET Core 框架的一部分,足以看見它是應用程序非常最重要的內容。在文將介紹如何定制 ASP.NET Core 認證 UI 的基本實現,以及如何向 IdentityUser 添加自定義信息。
從 WinDbg 角度理解 .NET7 的 AOT 玩法
https://www.cnblogs.com/huangxincheng/archive/2022/11/16/16895110.html
前幾天 B 站上有位朋友讓我從高級調試的角度來解讀下 .NET7 新出來的 AOT,畢竟這東西是新的,所以這一篇我就簡單摸索一下。
C#多線程(三)線程高級篇
https://www.cnblogs.com/xiaolipro/archive/2022/11/15/16891311.html
拋開死鎖不談,只聊性能問題,盡管鎖總能粗暴的滿足同步需求,但一旦存在競爭關系,意味著一定會有線程被阻塞,競爭越激烈,被阻塞的線程越多,上下文切換次數越多,調度成本越大,顯然在高并發的場景下會損害性能。在高并發高性能且要求線程安全的述求下,無鎖構造(非阻塞構造)閃亮登場。
.Net Core 實現 WebSocket Server 的另外三種方式
https://mp.weixin.qq.com/s/8kXURygrPDmRi2mGcGt5nQ
之前已經寫過關于《WebSocket 原生 socket 實現》和《.Net Core WebSocket 服務端與客戶端完整示例》以及《基于.Net TcpListener 實現 WebSocketServer 通訊》。本文介紹了實現 WebSocket Server 的另外三種方式。
C# 11:接口中的靜態抽象成員
https://mp.weixin.qq.com/s/fjnICBu61TA2JVHx9A8eww
本文介紹了 C# 11 中的新特性,在接口中支持靜態抽象成員以及它的使用方法和樣例代碼。
聊聊 FASTER 和進程內混合緩存
https://mp.weixin.qq.com/s/kg_SpcY6TiPznYKogZaokw
本文簡單的體驗了微軟 FASTER KV Store,進行性能測試和解讀了官方論文的性能數據,并給出了 FASTER 是否可以作為進程內混合緩存的可能性。
使用 Jupyter 記事本記錄和制作.NET 可視化筆記
https://mp.weixin.qq.com/s/hvDEopMXqVRmk_hsoEq2hg
對于記錄筆記的工具特別多,不過對于程序員來說,記錄筆記+程序代碼+運行結果演示可以同時存在,無疑會極大增加我們的筆記的可讀性和體驗感。以前在寫 python 的時候,使用 jupyter 的體驗很好,所以此處做一個基于 jupyter 的記錄 C#代碼的筆記簡易教程,供大家圍觀。
使用 BeetleX.MQTT 構建服務
https://mp.weixin.qq.com/s/8ucY869v4mxFO4DAgx7f8g
已經有很長一段時間沒有寫代碼,為了不讓自己的代碼技能有所下降所以針對 BeetleX 擴展了一個 MQTT 協議來保持自己的代碼設計和編寫能力。接下來簡單介紹一下如何使用 BeetleX.MQTT 來構建對應的 TCP 或 WebSocket 服務。
【賞析】.NET 跨平臺框架-Avalonia UI
這是 Avalonia UI 官方的一個 Demo,站長對部分 Nuget 包進行了升級,網友【小飛機 MLA】對 Linux 版本修復了字體 Bug 得以正常運行、演示。
https://mp.weixin.qq.com/s/0MWOq8EznrzzK269phsKnw
主題
Fleet 公開預覽版中的 C#支持 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2022/11/17/csharp-support-in-fleet/
Fleet 中的 C#支持現已進入公開預覽階段。
與 Rider 一樣,實現是基于 ReSharper 的,但不支持 Xamarin 或 Unity,所以 Rider 和 Fleet 將在可預見的未來共存。 在.NET 支持下,Rider 和 Fleet 將暫時共存。 作為一個限制條件,在.NET 5 或更高的版本中。
支持的功能包括代碼分析、導航、名稱重構、代碼完成、模板、格式化、文檔彈出、應用程序配置和執行、調試包括斷點。
文章還談到了實現支持的步驟和未來計劃。
宣布.NET 虛擬單體庫 - 問題#241 - dotnet/announcements
https://github.com/dotnet/announcements/issues/241
.NET 虛擬單體資源庫,是一個鏡像和收集構建.NET 所需的一切的資源庫。
.NET 產品的構建是由許多存儲庫組成的,這使得微軟以外的任何人都很難復制構建,并增加了構建和發布基礎設施的復雜性,其目標是簡化構建和運輸過程,并使其對社區透明。 儲存庫的目的是簡化構建和運輸,并對社區透明。
包括所有從.NET SDK 構建所需的代碼[1]
ASP.NET Core 到底有多快?
https://dusted.codes/how-fast-is-really-aspnet-core
一篇深入探討最近關于 ASP.NET Core 性能的 TechEmpower Benchmark 結果的文章,其中吹捧了它的速度,以及相應的代碼是什么樣子。
基準代碼包括僅使用 Kestrel 和最小部件編寫的 "平臺"、使用 ASP.NET Core 中間件的 "微型 "和甚至使用 Razor 模板引擎的 "完整",每個實現都被討論和推廣。平臺,但是否可以說它 "比其他語言/平臺更快"。
Git Action:自我托管的運行器現在支持 Windows ARM64 - 問題#616 - github/roadmap
https://github.com/github/roadmap/issues/616#event-7826802074
GitHub Actions 的自我托管運行器現在支持 Windows ARM64 環境。
宣布 Oracle 對.NET 7 的支持 - Alex Keh - Medium
https://medium.com/@alex.keh/announcing-oracle-support-for-net-7-c011b0dc4558
ODP.NET Core 現在支持.NET 7。
NuGet 軟件包 3.21.80 版本或更高版本支持 Oracle 數據庫 11g Release 2(11.2.0.4)或更高版本。
Visual Studio 2022 版本 17.4.1 - Visual Studio 2022 發行說明 | Microsoft Learn
https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.4.1
Visual Studio 2022 的 17.4.1 版本已經發布。
它修復了 ML.NET Model Builder、集成終端屏幕閱讀器的問題,以及在 Linux 上打開.NET 7 核心轉儲時的崩潰。
VS Git 多庫支持已發布!
https://devblogs.microsoft.com/visualstudio/multi-repository-support-released/
一篇解釋 Visual Studio 2022 17.4 中發布的 Git 的多倉庫支持的文章。
多資源庫支持允許你在打開一個解決方案的同時處理多個資源庫。 由于性能的限制,目前可以同時處理的存儲庫的數量限制在 10 個。
文章介紹了跨多個倉庫的分支管理、變更跟蹤、推送以及 Git 倉庫的設置,如 Fetch 時是否啟用 Prune。
Visual Studio 中用于 ASP.NET Core 項目的開發隧道的公開預覽 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/public-preview-of-dev-tunnels-in-visual-studio-for-asp-net-core-projects/
關于可在 Visual Studio 中用于 ASP.NET Core 開發的 dev tunnels 公開預覽的文章。
"dev tunnel "是一種提供從互聯網到本地環境的隧道(端口轉發)的服務。 它已經從一個私人預覽變成了公開預覽。 這篇文章描述了如何啟用隧道,如何配置它以用于調試啟動,以及自最初發布以來的變化。
未來的路線圖是增加諸如持久性 URL、隧道管理和各種 UI 的內容。
Visual Studio 2022 性能提升 17.4 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-performance-enhancements-17-4/
一篇關于 Visual Studio 2022 17.4 中性能改進的介紹性文章。
按文件夾搜索
更快地編制 C++項目的索引
在 Git 分支切換過程中,減少了解決方案的重新加載
.NET 中配置切換時的響應性
單元測試
平行測試探索
高效的并行測試執行
優化了 Visual Studio 和測試運行器進程之間的通信
提高了文件保存的響應速度
發布版本 v2.50.0 - grpc/grpc-dotnet
https://github.com/grpc/grpc-dotnet/releases/tag/v2.50.0
grpc-dotnet 2.50.0 已經發布。
在這個版本中沒有重大的功能變化,主要是一些錯誤的修復。
.NET 框架程序集支持添加到 Azure Logic Apps(標準)XSLT 轉換中(預覽)。
https://techcommunity.microsoft.com/t5/integrations-on-azure-blog/net-framework-assembly-support-added-to-azure-logic-apps/ba-p/3669120
在 Azure Logic Apps(標準)XSLT 轉換中增加了對.NET 框架組件的支持。
文章、幻燈片等
.NET 7.0 對動態 PGO 的性能改進是令人難以置信的 | Petabridge
https://petabridge.com/blog/dotnet7-pgo-performance-improvements/
關于.NET 7 的 DynamicPGO 與 Akka.NET 性能改進的文章。
試用.NET 7 中引入的內置容器支持 - 銀光和藍天
https://tech.tanaka733.net/entry/2022/11/builtin-container-support
關于.NET 7 中內置容器支持的文章(從 dotnet 發布中構建容器鏡像)。
這篇文章解釋了如何實際使用它,各種設置和限制。
用.NET NativeAOT 編寫一個 OBS 插件
https://sharovarskyi.com/blog/posts/dotnet-obs-plugin-with-nativeaot/
關于用.NET 7 的 NativeAOT 編寫 OBS 插件的文章。
它實現了一個例子,即為 OBS 插件導出一個帶有UnmanagedCallersOnly
的函數,并在它作為插件加載時進行記錄。
在同一事務中一起使用 Entity Framework Core 和 Dapper - Qiita
https://qiita.com/jun1s/items/212a95b73e68625a3674
關于在一起使用 Entity Framework Core 和 Dapper 時處理事務和連接的文章。
.NET 現在被 IBM Power 支持,試試吧 - Qiita
https://qiita.com/tom_m_m/items/9a729f462c0622a5ece3
關于安裝和運行 64 位 IBM Power(ppc64le)的文章,.NET 7 中支持該功能。
HashSet vs SortedSet in C# - Code Maze
https://code-maze.com/csharp-hashset-vs-sortedset/
文章總結了 "HashSet<T>
"和 "SortedSet<T>
"之間的區別,它們的特點和性能差異。
如何在沒有[授權]的情況下啟用 - Qiita
https://qiita.com/mkuwan/items/bd5ff882108998d76dca
關于如何通過后退授權策略統一指定`Authorize'屬性,而不是將其指定給控制器或方法的文章。
C#的安全靜態代碼分析器的快速比較
https://dev.to/dbalikhin/a-quick-comparison-of-security-static-code-analyzers-for-c-2l5h
文章比較了 C#靜態代碼安全分析工具。
文章比較了 CodeQL、SonarCloud、Semgrep、安全代碼掃描和 Snyk 代碼等工具針對樣本代碼的運行結果。 其他方面,如速度、IDE 支持和價格也進行了比較。
BlazorBindings.Maui - Preview 10
https://dev.to/dreamescaper/blazorbindingsmaui-preview-10-5c35
關于 BlazorBindings.Maui for MAUI forked from MobileBlazorBindings 的預覽 10 的文章。
對.NET 7 的支持,導航的改進,外殼屬性,組件生成器的改進等。
斷言范圍,你不知道你需要的 FluentAssertions 功能
https://dev.to/this-is-learning/assertion-scopes-the-one-fluentassertions-feature-you-didnt-know-you-needed-4pn
一篇關于斷言分組機制的文章,稱為 FluentAssertions 中的斷言范圍。
在一個斷言范圍內失敗的斷言可以被分組并報告(因此,如果一個斷言失敗,后續的斷言也被執行)。
如何在.NET 中繪制 2D 圖形 MAUI 的 GraphicsView
https://dev.to/syncfusion/how-to-draw-2d-graphics-in-net-mauis-graphicsview-daj
關于如何在.NET MAUI 中創建一個繪制 2D 圖形的視圖的文章。
GraphicsView 和 Microsoft.Maui.Graphics 可以用來繪制形狀等。
面向.NET 開發者的 LiteDB 介紹:包含 WebApp Demo
https://platform.uno/blog/intro-to-litedb-for-net-developers-sample-webapp-included/
介紹 LiteDB,一種適用于.NET 的 NoSQL 數據庫,并使用它實現一個 Uno 平臺的示例應用程序。
C#11 的必要成員 - NDepend
https://blog.ndepend.com/c-11-required-members
關于 C#11 中 "required"(必填)成員的文章。
文章介紹了用法、限制以及何時有用。
用 Visual Studio 管理模板(ADMX)啟用組策略設置 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/enable-group-policy-settings-with-visual-studio-administrative-templates-admx/
關于使用 Visual Studio 管理模板來啟用組策略設置的文章。
EF Core 7 來了 - 歡迎鍵入實體 ID 🍾
https://dev.to/maxx_don/ef-core-7-is-here-welcome-typed-entity-id-1k3p
關于在 Entity Framework Core 7 中支持具有自定義類型 ID 的實體的文章。
開源庫、資源庫、工具等
le-nn/blazor-transition-group: 當 Blazor 組件進入或離開 DOM 時執行動畫的一種簡單方法。
https://github.com/le-nn/blazor-transition-group
用于為 Blazor 中的列表類組件實現添加/刪除動畫的庫。
在 Blazor 中執行列表添加/刪除動畫的簡單方法[BlazorTransitionGroup][2]
asmichi/ChildProcess: Asmichi.ChildProcess 是一個.NET 庫,提供了創建子進程的功能。 一個替代的方法是 System.Diagnostics.Process.Start
。
https://github.com/asmichi/ChildProcess
ChildProcess 是一個.NET 庫,提供創建子進程的功能。
dd + gzip 自制工具(鏡像+恢復物理磁盤,dd + gzip 與 Linux 兼容)在 Windows 11 上運行,用于 ARM64 - Qiita
https://qiita.com/dnobori/items/59cc61b7f35449182b98
一個對物理磁盤進行鏡像和回寫的工具,可用于 ARM64 版本的 Windows。
pythonnet/pythonnet:Python for .NET 是一個軟件包,為 Python 程序員提供了與.NET 通用語言運行時幾乎無縫的集成。(CLR),并為.NET 開發者提供了一個強大的應用腳本工具。
https://github.com/pythonnet/pythonnet
譬如從 Python 到.NET,或者從 Python 到.NET 調用 Python。
如何使用 Pythonnet 從 C#調用 Python - Qiita[3]
網站、文件等
.NET 應用程序的單體到微服務之旅
https://d1.awsstatic.com/developer/Monolith-to-Microservice-Journey-net-framework-application-v1.5.pdf
.NET 應用程序的單體到微服務之旅
https://twitter.com/dotnetonAWS/status/1593725744554835973

社交媒體
介紹如何簡單使用 IKVM.NET 將 Java 編譯成.NET,開箱即用的 Java on .NET 。甚至能用 MavenReference 直接引用 Java maven 上的包。
https://www.zhihu.com/pin/1576268620421865474

Azure,gRPC JSON 轉碼和.NET Native AOT(服務器端) 在一個系統上組合上運行的故事。
https://twitter.com/jamesnk/status/1592634240310861824?s=12

關于用 PerfView 分析.NET 應用程序性能的視頻
https://twitter.com/aaronontheweb/status/1592275255426711553?s=12

版權聲明
國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-11-22.md
其余內容來自 Myuki WeekRef,由 InCerry 翻譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-11-22.md
由于筆者沒有那么多時間對國內的一些文章進行整理,歡迎大家為《.NET 周報-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源項目可以下方的項目地址提交 Issue 或者在我的微信公眾號私信。
格式如下:
10~50 字左右的標題
對應文章或項目網址訪問鏈接
200 字以內的簡介,如果太長會影響閱讀體驗
https://github.com/InCerryGit/.NET-Weekly
參考資料
[1]
包括所有從.NET SDK構建所需的代碼: https://github.com/dotnet/dotnet
[2]在Blazor中執行列表添加/刪除動畫的簡單方法[BlazorTransitionGroup]: https://zenn.dev/remrem/articles/3e13d64bcba6b5
[3]如何使用Pythonnet從C#調用Python - Qiita: https://qiita.com/hiron_rgkr/items/e0f110d75fb35584e6ed