.NET周报【10月最后一期 2022-11-01】

2024-01-07 06:40
文章标签 01 net 2022 周报 一期

本文主要是介绍.NET周报【10月最后一期 2022-11-01】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

精选要闻

.NET 7 NativeAOT 比.NET 单文件发布文件小 80%

https://twitter.com/JamesNK/status/1584919726861737984?s=20&t=cOsB41s2cydu_Ibts4xnEw AOT GRPC 服务器应用程序比.NET 运行时自包含的单文件发布小 80%,目前只比 Go 稍大一点。9a15611499a38abf42e6b15d6d7f1873.png

由于.NET 需要 Jit 编译,第一次请求需要编译很多代码,所以都比较耗时。通过 NativeAOT 以后,第一次请求响应时间比.NET 默认快 650%,和 Go 只相差 12%。19ae30f27b63f78b8c14b2a8f10f05e0.png要知道.NET 不是静态编译的平台,而且它在典型场景有着比 Go 更完善的特性和更高的性能,能在体积和第一次请求响应追上 Go 是非常不错的。不过这并不是最终结果,因为.NET NativeAOT 虽然可用,但是还未正式发布,期待后续的更新。

.NET8 新增新的 AOT 分层编译策略,DynamicPGO 可达 FullPGO 性能

.NET8 现在可以检测经常访问的 AOT 代码(并且重新 jits 它),一般来说只检测经常访问的代码 - 我们已经可以从中看到很好的好处(RPS🔼, Start-time🔽)🙃https://github.com/dotnet/runtime/pull/70941(已合并)。

5f66d2276d6af416329fc214ddba31ca.png
image-10月第4期 10.24-10.30-221028102145262

可以看到上图中红色箭头所示,RPS 有明显提升,而 Start-time 也有明显的下降。

Silky 微服务框架

https://github.com/liuhll/silky

在.NET 平台下的微服务应用开发框架,支持微服务场景的诸多特性,如服务治理、RPC 通信、链路跟踪、分布式事务等。

介绍一个免费、开源的.NET 分布式应用框架 - MassTransit

https://www.cnblogs.com/sheng-jie/p/MassTransit-NET-Distributed-Application-Framework.html

本文着重介绍了MassTransit[1]框架。它直译公共交通, 是由Chris Patterson开发的基于消息驱动的.NET 分布式应用框架,其核心思想是借助消息来实现服务之间的松耦合异步通信,进而确保应用更高的可用性、可靠性和可扩展性。

C# RulesEngine 规则引擎:从入门到看懵

https://www.cnblogs.com/whuanle/p/16830333.html

本文介绍了微软开源的规则引擎库 RulesEngine 的特性和使用方法,其中包含很多代码实例,方便易懂。

是什么让.NET7 的 Min 和 Max 方法性能暴增了 45 倍?

https://www.cnblogs.com/InCerry/archive/2022/10/28/how_to_use_simd_improve_dotnet7_min_max_performance.html

本文就通过.NET7 中的一些 pr 带大家一起探索下.NET7 的Min()Max()方法是如何变快 45 倍的。

.NET 性能系列文章一:.NET7 的性能改进

https://www.cnblogs.com/InCerry/archive/2022/10/24/net-performance-series-1-performance-improvements-in-net-7-fb793f8f5f71.html

.NET 7 目前(17.10.2022)处于预览阶段,将于 2022 年 11 月发布。通过这个新版本,微软提供了一些大的性能改进。这篇 .NET 性能系列的第一篇文章,是关于从.NET6 到.NET7 最值得注意的性能改进。

创建.NET 程序 Dump 的几种姿势

https://mp.weixin.qq.com/s/ihXas9SwRyGTd26tVjhCPQ

本文介绍了生成一个.NET Dump 文件的多种方式。在 Windows、Linux 或 Azure 上有许多方法可以生成 Dump 文件。

TensorFlow.NET 实战 - 为.NET 开发者开启机器学习之旅

https://mp.weixin.qq.com/s/RY5GH948d1Xy7Q2Zeine6A

介绍在《TensorFlow.NET 实战 - 为.NET 开发者开启机器学习之旅》这本书 - .NET 生态上在人工智能领域有一个开源团队 SciSharp STACK ,他们为 TensorFlow 提供了 .NET Standard binding,旨在以 C#实现完整的 Tensorflow API,允许 .NET 开发人员使用跨平台的.NET Standard 框架开发、训练和部署机器学习模型。

C#实现生成 Markdown 文档目录树

https://mp.weixin.qq.com/s/VGxEftueOWOecP9vpJvQmw

介绍了使用 C#处理 Markdown 文档的方式和方法。

记一次 .NET 某娱乐聊天流平台 CPU 爆高分析

https://mp.weixin.qq.com/s/LuxA50zsDzxJbS3ehCuFjg

前段时间有位朋友加微信,说他的程序直接 CPU=100%,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种 CPU 打满的事故,程序员压力会非常大, 我让朋友在 CPU 高的时候抓 2 个 dump 下来,然后发给我分析。

主题

AWS App Runner 推出对 PHP、Go、.Net 和 Ruby 托管运行时的支持

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-app-runner-support-php-go-dot-net-ruby-managed-runtimes/

现在 AWS App Runner 支持多种语言的运行机制,包括.NET 和 Java。

AWS App Runner 是一个系统,允许你通过准备带有源代码的镜像或配置文件,轻松构建、部署和运行你的应用程序。作为一个运行时,ASP.NET 6 被支持,作为一个例子,一个 ASP.NET Core 应用程序可以通过以下的配置文件来构建和部署。

version: 1.0
runtime: dotnet6
build:commands:build:– dotnet publish -c Release -o out
run:command: dotnet out/HelloWorldDotNetApp.dllnetwork:port: 5000env: APP_PORTenv:– name: ASPNETCORE_URLSvalue: "http://*:5000"

介绍 AWS Toolkit for .NET Refactoring,一个新的 Visual Studio 扩展。

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-toolkit-net-refactoring-visual-studio-extension/

一个名为 AWS Toolkit for .NET Refactoring 的 Visual Studio 扩展已经发布。

这是一个扩展,提供了为云环境更新遗留的.NET 框架应用程序的功能。编写.NET Core/.NET,扫描依赖性和 API 使用情况,改变 IIS web.config 的代码以在 Linux 下运行,并协助部署到 AWS。

以适当的缩进方式复制 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/copy-with-proper-indentation/

文章描述了一个实验性的 Visual Studio 扩展,允许以保持正确缩进的方式复制代码。

该扩展允许缩进,即使在复制一个嵌套代码块中间的代码块时也能保持一致。当粘贴到消息应用程序、博客等时,这可以防止只有第一行失去缩进,而其余部分过度缩进的情况。

  • Copy Nice - Visual Studio Marketplace[2]

.NET 框架 2022 年 10 月累积更新预览 - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-framework-october-2022-cumulative-update-preview/

.NET 框架的 2022 年 10 月累积更新预览已经发布。

这个版本包含几个质量改进的更新,包括 WPF。

文章、幻灯片

使 AnimationEvent 对 CoreCLR 垃圾收集器安全 | Unity Blog

https://blog.unity.com/technology/making-animationevent-safe-for-the-coreclr-garbage-collector

文章介绍了在用 CoreCLR 运行 Unity 时,如何将 AnimationEvents 与 CoreCLR 的 GC 整合并运行。

包括为提高速度而使其成为 Blittable,重用 GCHandle,以及修改它们,使其在 Mono、IL2CPP 中的运行速度与 CoreCLR 相同。

在 Visual Studio 2022 中使用的扩展 - tech.guitarrapc.cóm

https://tech.guitarrapc.com/entry/2022/10/27/023608

介绍 Visual Studio 2022 中可用扩展的文章。它引入了各种扩展,从编辑器到显示构建状态等等。

Blazor Wasm 的现场演示现在可以使用 | ++C++; // 不明飞行 C 博客

https://ufcpp.net/blog/2022/10/blazorwasmdemo/

一篇关于在 Blazor WebAssembly 中整理和重做工作演示的文章。

在.NET 项目中,有 6 种方法可以在一个共同的位置设置相同的版本信息 | @jsakamoto

https://devadjust.exblog.jp/29404286/

本文介绍了从一个共同的位置设置一个解决方案中多个.NET 项目的版本信息的方法。

文章介绍了六种设置常用设置的方法。

  • Directory.Build.props

  • 进口道具。

  • 链接包含 AssemblyFileVersion 的源代码

  • 从文件中导入

  • 通过 dotnet 构建参数指定

  • 在构建时通过环境变量进行规范

OpenSearch 的.NET 客户端现在是 GA,我打算使用它。

https://zenn.dev/shimat/articles/d2ae99acaf022f

关于 Amazon OpenSearch(前身为 Elasticsearch Service)的.NET 客户端库的文章。

Elasticsearch 客户端库从 v7.14 开始就无法连接到 OpenSearch,所以一直在等待 OpenSearch 的客户端库。现在已经发布的.NET 版本的客户端库,以及它的使用和感受。

在 ASP.NET Core 6.0 中构建你自己的 OAuth 2.0 服务器和 OpenId 连接提供商

https://dev.to/mohammedahmed/build-your-own-oauth-20-server-and-openid-connect-provider-in-aspnet-core-60-1g1m

关于在.NET 6 的 ASP.NET Core 中实现自己的 OAuth 2.0 服务器和 OpenId Connect Provider 的文章。

托管指针、Span、ref 结构、C#11 ref 字段和 scoped 关键字 - NDepend

https://blog.ndepend.com/managed-pointers-span-ref-struct-c11-ref-fields-and-the-scoped-keyword

这篇文章回顾并解释了从指针到 Span、Ref 结构和字段的一切。

自动发布.Net 应用程序的版本

https://blog.antosubash.com/posts/automatic-version-and-release

关于如何使用 Versionize 工具在 GitHub Actions 中自动进行版本和发布的文章。

文章还讨论了如何使用 Husky.Net 对 Git 的 pre-commit 钩子中的注释进行提示。

学习系列:在 Visual Studio 中开始使用 GitHub

https://devblogs.microsoft.com/visualstudio/learn-github-in-visual-studio-learning-series/

一篇关于使用 Visual Studio 学习 GitHub 的电子邮件系列的介绍性文章。

LINQ 的聚合函数在.NET7 中为何如此之快的故事(或者说矢量化的难度) - Qiita

https://qiita.com/Kujiro/items/dc90366325fffcd3675d

一篇解释 LINQ 聚合函数(Sum、Max、Average)的具体实现的文章,这些函数在.NET 7 中被加速了。

Project Volterra 和 Windows 开发工具包 2023 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20221027/1666807751

关于 Windows 开发工具包 2023 的评论文章。

我买了 Windows 开发工具包 2023 | DevelopersIO

https://dev.classmethod.jp/articles/try-windows-dev-kit-2023-project-volterra/

一篇关于 Windows 开发工具包 2023 的评论文章,其中还讨论了像 PowerShell 和 AWS 工具如何工作。

在 Razor Pages 中与空引用类型作斗争

https://andrewlock.net/fighting-with-nullable-reference-types-in-razor-pages/

关于在 Razor Pages 中与空引用类型斗争的文章。

文章讨论了如何处理 Razor 页面,其中的值是从外部插入的,警告和不适当的抓取会增加 NullReferenceException 的可能性。文章介绍了一些建议,包括使用 C# 11 的required,这在一定程度上可以缓解。

在 C#中使用多线程的 SQLite。

https://zenn.dev/kn64872/articles/90ae674d5332a7

文章探讨了在多线程环境下使用 System.Data.SQLite 的行为。

用 Infer#杀死僵尸 "无回复 "崩溃 - .NET 博客

https://devblogs.microsoft.com/dotnet/slaying-zombie-no-repo-crashes-with-infersharp/

一篇关于使用 Infer#进行静态代码分析以检测难以发现的资源泄漏和安全问题的介绍性文章。

  • microsoft/infersharp: Infer#是一个用于 C#的跨程序和可扩展的静态代码分析器。通过 Facebook 的 Infer 的功能,这个工具可以检测到空解引用、资源泄漏和线程安全违规。它还执行污点流跟踪,以检测关键的安全漏洞,如 SQL 注入。[3]

官方发布! @dotnet 目前的版本已被重新命名为 "标准期限支持",这些变化已在网站上发布。

https://dotnet.microsoft.com/download/dotnet

目前的.NET 非 LTS 版本已被重新命名为 "标准期限支持",其变化已在网站上上线。

901a7c6b1a905dc431d55ed571966935.png
image-20221101190029335

图书馆、资源库、工具

corvus-dotnet/Corvus.UriTemplates: 低分配的 URI 模板解析和解决,支持 Tavis.UriTemplates API

https://github.com/corvus-dotnet/corvus.uritemplates

一个分配较少的处理 URI 模板的库(RFC 6570).

  • 低分配高性能的 C#来解决 UriTemplate 问题| endjin[4]

版权声明

  • InCerry 翻译与整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-11-01.md

  • Myuki WeekRef : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-11-01.md

欢迎大家为.NET周报进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交issue或者在我的微信公众号私信。

格式如下:

  • 10~50 字左右的标题

  • 对应文章或项目网址访问链接

  • 200 字以内的简介,如果太长会影响阅读体验

https://github.com/InCerryGit/WeekRef.NET

参考资料

[1]

MassTransit: http://masstransit-project.com/

[2]

Copy Nice - Visual Studio Marketplace: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.CopyNice

[3]

microsoft/infersharp: Infer#是一个用于C#的跨程序和可扩展的静态代码分析器。通过Facebook的Infer的功能,这个工具可以检测到空解引用、资源泄漏和线程安全违规。它还执行污点流跟踪,以检测关键的安全漏洞,如SQL注入。: https://github.com/microsoft/infersharp

[4]

低分配高性能的C#来解决UriTemplate问题| endjin: https://endjin.com/blog/2022/10/high-performance-csharp-uritemplates

这篇关于.NET周报【10月最后一期 2022-11-01】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579043

相关文章

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。 代码片段: /// <summary>/// 验证 ModelState 是否有效/// </

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习

.net MVC 导出Word--思路详解

序言:          一般在项目的开发过程中,总会接收到一个个需求,其中将数据转换成Work来下载,是一个很常见的需求;          那么,我们改如何处理这种需求,并输出实现呢?          在做的过程中,去思考 1、第一步:首先确认,Work的存在位置,并创建字符输出路:             //在的项目中创建一个存储work的文件夹             string

asp.net 中GridView的使用方法

可以看看,学习学习 https://blog.csdn.net/zou15093087438/article/details/79637042