.NET周刊【8月第4期 2023-08-27】
国内文章#
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
- 什么是系统的可观测性(Observability)
- 为什么软件系统需要可观测性
- 可观测性的三大支柱
- 日志(Logging)
- 指标(Metrics)
- 分布式追踪(Distributed Tracing)
- Unknow Unknows VS Known Unknowns
- 数据的关联 - 实现可观测性的关键
- 总结
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开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。
- Gitee: https://gitee.com/known/Known
- Github:https://github.com/known/Known
主题#
【英文】发布版本 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 中的多个错误。
文章、幻灯片等#
【英文】内存优化的扭曲故事#
讨论从“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 博客#
使用 Visual Studio 2022 发送 HTTP 请求 (.http) 的功能时如何存储机密。
除了 httpenv.json 作为环境设置和 httpenv.json.user 作为用户特定设置之外,我们还介绍了从 ASP.NET Core 用户机密和 Azure Key Vault 获取机密信息以及使用 Windows DPAPI 进行加密等方法。是它还引入了 HTTP 文件中额外支持的新语法。
【英文】使用 ForwardedHeadersMiddleware 简化微服务中的标头传播#
如何在服务之间传播从客户端接收到的 HTTP 标头。本文介绍如何使用 Microsoft.AspNetCore.HeaderPropagation NuGet 包。
【英文】使用 GitHub Copilot Chat 简化代码优化和调试 - Visual Studio 博客#
介绍 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 博客#
介绍 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 架构的问题。
版权声明#
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.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,欢迎大家加入。
抽奖送书活动预热!!!#
感谢大家对我公众号的支持与陪伴!为庆祝公众号一周年,抽奖送出一些书籍,请大家关注公众号后续推文!
作者:InCerry
作者Github:https://github.com/incerrygit
出处:https://www.cnblogs.com/InCerry/p/dotnet_week_23_8_4.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
声明:本博客版权归「InCerry」所有。
.NET性能优化QQ群:687779078(主群)、264167610(备用)
欢迎大家关注我的微信公众号,新文章会优先发到公众号!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库