.NET周刊【8月第4期 2023-08-27】

NET · 浏览次数 : 832

小编点评

## .NET 性能优化交流群 **简介** 我们创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具.NET框架底层原理的实现,如垃圾回收器、JIT等等如何编写高性能的.NET代码,哪些地方存在性能陷阱希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。 **加入** 欢迎大家加入我们这个交流群,分享你的学习经验和问题,共同寻找解决.NET 性能优化问题的宝贵方法。 **交流** * **如何找到.NET性能瓶颈**:使用APM、dotnet tools等工具 * **.NET框架底层原理的实现**:垃圾回收器、JIT * **如何编写高性能的.NET代码**:内存优化、性能分析 * **哪些地方存在性能陷阱**:缓存、内存泄漏、JIT * **如何优化性能**:代码分析、性能测试 * **分享经验**:代码分享、性能分析经验 **欢迎** * 对.NET框架底层原理进行深入了解 * 对性能分析工具进行深入了解 * 对内存优化和性能分析进行深入了解 * 对缓存和内存泄漏进行深入了解 * 对性能陷阱进行深入了解

正文

国内文章

AgileConfig-1.7.0 发布,支持 SSO 🎉🎉🎉

https://www.cnblogs.com/kklldog/p/agileconfig-170.html

AgileConfig 已经好久好久没有更新过比较大的功能了。一是 AgileConfig 本身的定位就是比较轻量,不想集成太多的功能。二是比较忙(懒)。但是本次升级给大家带来了一个比较有用的功能 SSO。

使用 OpenTelemetry 构建 .NET 应用可观测性(1):什么是可观测性

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

Windows 虚拟地址 到底是如何映射到 物理地址 的?

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

我发现有很多的 .NET程序员 写了很多年的代码都没弄清楚什么是 虚拟地址,更不用谈什么是 物理地址 以及Windows是如何实现地址映射的了?这一篇我们就来聊一聊这两者之间的联系。

C#是否应该限制链式重载的设计模式?

https://www.cnblogs.com/sunkaixuan/p/17655870.html

链式重载是我自己创造的一个词,意思是方法A里处理一下参数,return另一个方法A,第二个方法A里处理一下参数调第三个方法A,就这样无限循环下去直到调到真正能出结果的方法A。

本人学艺不精,偶然进行C#开发,感觉看代码要吐。比如看到某处调用方法A,除非有某个特征显眼的参数,否则根本不知道调的方法A是哪个,而且代码里也不是按照链的顺序写的。

一个超经典 WinForm 卡死问题的最后一次反思

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

在我分析的 200+ dump 中,同样会遵循着 28原则,总有那些经典问题总是反复的出现,有很多的朋友就是看了这篇 一个超经典 WinForm 卡死问题的再反思 找到我,说 WinDbg 拦截 System_Windows_Forms_ni System.Windows.Forms.Application+MarshalingControl..ctor 总会有各种各样的问题,而且 windbg 也具有强侵入性,它的附加进程方式让很多朋友望而生畏!

这一篇我们再做一次反思,就是如何不通过 WinDbg 找到那个 非主线程创建的控件,那到底用什么工具的? 对,就是用 Perfview 的墙钟模式。

MAUI+Blazor混合应用开发示例

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

笔者之前在公司搭建过一套生产管理系统,该系统要求能和硬件进行串口通信,同时又要方便后台进行信息查询。笔者给出的解决方案就是:MAUI + Blazor,这样只需要提供一套UI,就能满足桌面端、移动端和Web端三种不同应用场景。今天要介绍的是基于桌面端的开发实现(实际上WPF和Winform皆可行)。

某酒管集团-单例模式对性能的影响及思考

https://www.cnblogs.com/yxdeng/p/17636047.html

大概一年前开始在思考 构造函数中 依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。 一般较多公司的项目都使用Autofac 依赖注入(Scoped 作用域),但是发现过多的对象产生 会消耗 CPU , 内存 并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用 单例 (Singleton)来解决这些问题呢? 带着这些想法开始ReView整个项目的代码,排查是否存在 单例 会造成 线程安全 或 方法内修改全局变量的代码( 结果是乐观的.... )。于是开始了性能测试....论证.. 试运行... ,结果是超预期的(CPU 从 60%-降低到--》10%, 内存 从 33%-降低到--》20%, 接口平均响应时间 从 120毫秒--降低到--》50毫秒 . 1500/QPS (不含内部服务相互调用)) 和 @InCerry 沟通结果,说可以写个 案例 和大家分享分享... 于是乎 有了这一片文章。

CTC蜀道会:第一次圆桌会圆满结束

https://www.cnblogs.com/edisonchou/p/ctc_offline_activity_2023no1_introduction.html

近期,成都.NET俱乐部核心成员经过讨论会,我们成立了CTC蜀道会,它是一个专注于创业历程、研发管理、AIGC、副业之路、.NET、Vue、微软技术、开源技术等领域的社区,立足于蓉城成都,致力于连接同道中人,共同破圈成长。

Blazor前后端框架Known-V1.2.13

https://www.cnblogs.com/known/p/17645480.html

Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。

主题

【英文】发布版本 v2.56.0 grpc/grpc-dotnet

https://github.com/grpc/grpc-dotnet/releases/tag/v2.56.0

grpc-dotnet v2.56.0 已发布。

它包括对 DebuggerDisplay 等调试体验的改进,以及细微的改进和错误修复。

【英文】Windows 社区工具包 8.0 预发行版 - #ifdef Windows

https://devblogs.microsoft.com/ifdef-windows/windows-community-toolkit-8-0-pre-release/

Windows Community Toolkit 8.0 预览版已发布。

WCT 8.0 将多个平台集成到一个代码库中,统一命名空间等等。该组件可与 UWP、Windows App SDK 和 Uno 平台配合使用。

本文还介绍了可用的包以及如何在新的/现有的项目中使用它们。

【英文】发布 ImageSharp.Drawing 1.0.0

https://sixlabors.com/posts/announcing-imagesharp-drawing-100/

SixLabors.ImageSharp.Drawing 1.0.0 已发布。

该库基于ImageSharp,提供高级绘图功能,例如文本渲染、路径和形状绘制。在类似 Linux 的环境中可以用作 System.Drawing 的替代方案。

请注意,该库的版本 v1.x 是在 Apache 2.0 许可证下,但它所依赖的 ImageSharp 不是 v2.x(不是开源的)。

【英文】ReSharper 和 Rider 2023.2 的第一组错误修复就在这里! | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/08/24/2023-2-1-bugfix/

ReSharper 和 Rider 2023.2 已发布。

此版本修复了各种错误,包括冻结和代码解析问题。

【英文】.NET Framework 2023 年 8 月累积更新预览 - .NET 博客

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

.NET Framework 2023 年 8 月累积更新的预览版已发布。

此版本修复了 WPF、运行时和 ASP.NET 中的多个错误。

文章、幻灯片等

【英文】内存优化的扭曲故事

https://ayende.com/blog/199969-A/a-twisted-tale-of-memory-optimization?Key=cb2fc684-6549-466c-9c4f-0bae8b5ef566

讨论从“char[]”创建 UTF-8 字节时优化内存分配的陷阱。

【日文】可以包装 Microsoft.Fast.Components.FluentUI 的 DataGrid 中无法显示的项目

https://zenn.dev/tomokusaba/articles/2468153bfe2d68

关于FluentUI for Blazor的FluentDataGrid组件中在列中指定长字符串时如何避免显示被截断的问题。

【日文】CEDEC 2023 现代高性能 C# 2023 版

https://speakerdeck.com/neuecc/cedec-2023-modanhaipahuomansuc-number-2023-edition

该幻灯片介绍了基于序列化器的实现在现代 .NET 中编写高性能代码的技术。

【日文】使用 AntDesignBlazor 时如何测试组件

https://zenn.dev/artuer/articles/9245d21ac8a88c

如何使用 AntDesignBlazor 对组件进行单元测试。能够使用 BUnit 和 AntDesignTestKit 编写测试。

【日文】制作一个在iOS真机和模拟器上运行MAUI App的脚本的故事 - Qiita

https://qiita.com/t0r/items/1e7a2e8923a8b47a3a12

关于创建 shell 脚本以直接在 iOS 真实版和模拟器上运行 .NET MAUI 应用程序。

【英文】在 Visual Studio 2022 中安全地使用 HTTP 请求中的机密 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/safely-use-secrets-in-http-requests-in-visual-studio-2022/

使用 Visual Studio 2022 发送 HTTP 请求 (.http) 的功能时如何存储机密。

除了 httpenv.json 作为环境设置和 httpenv.json.user 作为用户特定设置之外,我们还介绍了从 ASP.NET Core 用户机密和 Azure Key Vault 获取机密信息以及使用 Windows DPAPI 进行加密等方法。是它还引入了 HTTP 文件中额外支持的新语法。

【英文】使用 ForwardedHeadersMiddleware 简化微服务中的标头传播

https://medium.com/@asad99/simplifying-header-propagation-in-microservices-with-forwardedheadersmiddleware-2001fa6b4981

如何在服务之间传播从客户端接收到的 HTTP 标头。本文介绍如何使用 Microsoft.AspNetCore.HeaderPropagation NuGet 包。

【英文】使用 GitHub Copilot Chat 简化代码优化和调试 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/simplified-code-refinement-and-debugging-with-github-copilot-chat/

介绍 Visual Studio 中使用 GitHub Copilot Chat 进行调试和代码改进功能。

本文介绍了分析器中的 CPU 使用情况分析、异常帮助程序以及调试时引用变量和调用堆栈的问题等功能。

【英文】探索 .NET 8 中的 Blazor 变化 - 使用表单捕获用户输入

https://jonhilton.net/blazor-ssr-forms/

在 .NET 8 中的 Blazor (SSR) 中处理表单用户输入的演练。

【英文】如何在 Steam Deck 上安装 JetBrains Rider | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/08/23/how-to-install-jetbrains-rider-on-steam-deck/

如何在 Steam Deck (SteamOS) 上安装 Rider。

本文介绍了除了 Rider 之外如何安装和运行 .NET 和 Unity。

【英文】.NET 迁移的故事 - 编目

https://www.jimmybogard.com/tales-from-the-net-migration-trenches-catalog/

创建一个目录,列出现有应用程序需要解决的问题,以便从 .NET Framework 迁移到 .NET。

【英文】使用 Serilog 和 Azure 进行 ASP.NET Core 日志记录

https://damienbod.com/2023/08/21/asp-net-core-logging-using-serilog-and-azure/

如何在 ASP.NET Core 中使用 Serilog 将日志发送到 Application Insights 和 Azure 应用服务日志记录服务。

【英文】动态适应应用程序大小

https://maoni0.medium.com/dynamically-adapting-to-application-sizes-2d72fcb6f1ea

讨论称为动态适应应用程序大小 (DATA) 的 GC 功能,该功能将在 .NET 8 中实验性地引入。

【日文】C# Dev Kit for Visual Studio Code 是一个故事,您可以在 GitHub Codespaces 上免费使用它 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20230825/1692937805

关于在 Visual Studio Code 上使用扩展的 C# Dev Kit 进行 .NET 开发需要 Visual Studio 许可证,但该许可证包含在 GitHub Codespaces 中。

【日文】尝试将 ASP.NET Core 集成添加到 Azure Functions(.NET 独立工作线程)- Shibayan 其他

https://blog.shibayan.jp/entry/20230823/1692768859

了解 ASP.NET Core 集成现已在 Azure Functions 的 .NET 隔离工作线程中可用。

【英文】Visual Studio 中的新增功能:使用解决方案资源管理器比较文件 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/new-in-visual-studio-compare-files-with-solution-explorer/

介绍 Visual Studio 解决方案资源管理器中的文件比较功能。

Enum.TryParse 意外行为

https://steven-giesel.com/blogPost/64d479f1-823f-4fc7-a56a-2b1ff06dcf72

如果 Enum.TryParse 与基本类型匹配,即使该值实际上并未定义,它也会通过有必要检查 IsDefined。

库、存储库、工具等。

wcabus/nes-sharp:用 C# 编写的 NES 模拟器

https://github.com/wcabus/nes-sharp

用 C# 编写的 NES(Famicom)模拟器。

https://x.com/wesleycabus/status/1695072673087263168?s=12

网站、文档等

推文

讨论如何在 appsettings.json 中以与日志相同的方式完成 .NET 8 中与指标相关的设置。

https://x.com/davidfowl/status/1695454305782837561?s=12

对象头是 4 个字节,但在 64 位 .NET 中,出于对齐原因包含 4 个字节的填充是一种浪费。

https://x.com/kookiz/status/1692931201550446891?s=12&t=ggvrrZ7oLogHyNoIGNgjbw

深入理解

通过 janvorli Pull 请求将 NativeAOT 异常处理移植到 CoreCLR #88034 dotnet/runtime

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

PR 将 NativeAOT 的异常处理机制移植到 CoreCLR。

这可以加快异常处理速度,但目前有一些限制,并且需要环境变量才能启用。此外,由于复杂性,不支持 32 位版本的 Windows。

CoreCLR RISC-V 架构端口问题 #84834 dotnet/runtime GitHub

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

移植到 RISC-V 架构的问题。

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.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,欢迎大家加入。

抽奖送书活动预热!!!

感谢大家对我公众号的支持与陪伴!为庆祝公众号一周年,抽奖送出一些书籍,请大家关注公众号后续推文!

image-20230703203249615

与.NET周刊【8月第4期 2023-08-27】相似的内容:

.NET周刊【8月第4期 2023-08-27】

## 国内文章 ### AgileConfig-1.7.0 发布,支持 SSO 🎉🎉🎉 https://www.cnblogs.com/kklldog/p/agileconfig-170.html AgileConfig 已经好久好久没有更新过比较大的功能了。一是 AgileConfig 本身

.NET周刊【9月第4期 2023-09-24】

国内文章 有趣的“可扩展近似计数”算法 https://zhuanlan.zhihu.com/p/656817283 在编程的世界里看见数学的身影,会让我充满好奇和兴奋。这不,在一年一度介绍.NET新版本的官方开发博客《Performance Improvements in .NET 8》中,我看到

.NET周刊【7月第1期 2024-07-07】

国内文章 学习.NET 8 MiniApis入门 https://www.cnblogs.com/hejiale010426/p/18280441 MiniApis是ASP.NET Core中的轻量级框架,用最少的代码和配置创建HTTP API。其特点包括简洁明了、性能卓越、灵活多变、易于学习使用,

.NET周刊【8月第1期 2023-08-06】

## 国内文章 ### NativeBuferring,一种零分配的数据类型(上篇) https://www.cnblogs.com/artech/p/17586781.html 之前一个项目涉及到针对海量(千万级)实时变化数据的计算,由于对性能要求非常高,我们不得不将参与计算的数据存放到内存中,并

.NET周刊【8月第2期 2023-08-14】

本周由于Myuki大佬感染新冠,国际板块暂停更新一周,将在下周补齐,所以本周只有国内板块。 ## 国内文章 ### 解决 Blazor 中因标签换行导致的行内元素空隙问题 https://www.cnblogs.com/ElderJames/p/resolves-width-issues-in-bl

.NET周刊【8月第3期 2023-08-20】

## 国内主题 ### 抓的是周树人,与我鲁迅有什么关系? https://www.cnblogs.com/JulianHuang/p/17642511.html - **问题**:作者看到了一个关于Dictionary.Clear和new Dictionary的问题,想要探究为什么在foreach

.NET周刊【9月第3期 2023-09-17】

国内文章 在.NET 8 RC1 版本中 MAUI、ASP.NET Core 和 EF8 的新特性 https://www.cnblogs.com/shanyou/p/17698428.html 从年初2 月份发布第一个预览版,经历7个预览版后,Microsoft 西雅图时间9月13日发布了 .NE

.NET周报【1月第3期 2023-01-20】

这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐! 国内文章 看我是如何用C#编写一个小于8KB的贪吃蛇游戏的 https://www.cnblogs.com/InCerry/p/building-a-self-contained-game-in-c-under-8-kilo

瀚高4.5.8的安装部署过程

瀚高4.5.8的安装部署过程 说明 大周末的写文档. 主要是备忘,之前写的太乱了. 本来想自己写一份, 但是怀疑找到了瀚高工程师的文档 准备直接学习一下: https://blog.csdn.net/qiuchenjun/article/details/125985256 感谢原作者 安装 rpm

.NET周刊【10月第1期 2023-10-01】

国内文章 .NET应用如何防止被反编译 https://www.cnblogs.com/Can-daydayup/p/17736700.html 本文主要讲述了如何防止.NET应用被反编译。虽然无法完全防止反编译,但可以通过混淆代码、加密敏感数据、动态生成代码、使用代码混合技术和代码签名等方法增加反