.NET周报 【3月第4期 2023-03-24】

2023-06-28,

国内文章

.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 的工具进行测试。

Stryker Mutator

【英文】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 共识算法实现集群的库。

.NET 中的可扩展 Raft 共识算法 | 作者 Ayan Choudhury | 2023 年 3 月 | Medium

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#issuecomment-1481742187

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

扩展现有的基于 cookie 的身份验证并支持 SPA 应用程序中的自定义
通过现代化现有身份支持基于谈话的身份验证
从 SPA 模板中删除了 Dende IdentityServer 依赖项
为 ASP.NET Core 中的身份验证选项创建新文档
从模板到认证文件的链接

版权声明

国内板块由 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,欢迎大家加入。

.NET周报 【3月第4期 2023-03-24】的相关教程结束。

《.NET周报 【3月第4期 2023-03-24】.doc》

下载本文的Word格式文档,以方便收藏与打印。