.NET周报【10月第1期 2022-10-11】

news/2024/5/8 10:26:18/文章来源:https://www.cnblogs.com/InCerry/p/dotnet_week_22_10_1.html

本周精选

继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型

https://github.com/dotnet/runtimelab/pull/2002

.NET Runtimelab中绿色线程的原型实现的PR,在不久的将来,.NET开发者也可以方便的用上有栈协程,目前的启动一个有栈协程的API如下所示:

FOH(冻结对象堆)正式合并进入.NET 8,将进一步提升整体性能

https://twitter.com/EgorBo/status/1579474949152313347?ref_src=twsrc^tfw

谈论FOH(冻结对象堆)的许多部分将被合并到.NET 8中,因此像typeof(x)这样的东西在生成JIT代码时可以处理直接引用省略写屏障,进一步提升性能。对比的汇编代码如下所示:

Bing 广告宣传平台迁移至.NET6 - .NET Blog

https://devblogs.microsoft.com/dotnet/bing-ads-campaign-platform-journey-to-dotnet-6/

一个关于Bing的搜索广告活动平台向.NET 6迁移的案例研究(+AKS)。

该平台建立在几十个分布式服务上,每秒处理数千个请求,时间不到100ms。 通过WCF托管在一个(仅仅是 "解除 "的)Windows虚拟机中的.NET框架4.6和SOAP服务。 在Windows虚拟机中托管了一个WCF的SOAP服务和一个.NET框架4.6。

文章介绍了转移到新的.NET平台的原因。

原因主要有以下五点:

  • 跨平台,如使用容器。
  • .NET Core开发在高性能、语言特性和.NET Framwork停止更新
  • 由于快速迭代改进,减少了创新摩擦
  • 开放源代码。
  • 卓越的工具,如CLI工具、SDK风格的项目和消除绑定重定向等

迁移过程中,库的顺序是".NET Framwork 4.6→. Framwork .7→.NET Standard 2.0",而应用的顺序是".NET Framwork 4.6→.NET Framwork 4.7→.NET Core 3.1→.NET 5→.NET 6",按顺序排列。 .NET Framwork 4.6并不完全支持.NET Standard,迁移到.NET Standard并不容易。

该项目在迁移过程中提出了几个挑战和解决方案。

首先,该项目依赖于一些NuGet软件包,这意味着必须更新软件包和替换旧库。 不兼容的软件包被重新包装,并以支持.NET标准的形式发布到内部软件包中,甚至没有源代码的软件包也被反编译和修补,使其与.NET标准兼容。

通过转移到PackageReference方法,解决了绑定重定向的问题,这也解决了菱形依赖性问题。 由于有大量的.csproj,迁移是通过SDK式的转换工具实现的。 随后,.NET团队发布了一个名为try-convert的类似工具。 他们还试图集中管理软件包的版本,以减少软件包依赖关系的复杂性。 (文章中的链接。Microsoft.Build.CentralPackageVersions是一个新的NuGet的 中央软件包管理,它似乎是[NuGet的]的前身。

最后,还有对WCF的依赖。 该服务是由WCF用SOAP服务构建的,由于它是对用户开放的,所以不可能迁移到类似gRPC的东西上,所以最后创建了CoreWCF,它是WCF的一个子集,并进行了迁移。 谈到.NET框架与.NET的关系时,他说:"我们的目标是使我们的产品和服务更有竞争力。

从WCF到CoreWCF的迁移对.NET有很大的影响,可以减少40-50%的内存使用。

总而言之,向.NET 6的迁移是一次大规模的、痛苦的但值得的经历,从大型代码库的迁移中总结出以下经验:

  • 迁移到.NET框架4.7或.NET框架4.8
  • 将所有项目转换为SDK风格,并在开始工作前使用PackageReference。
  • 在.NET框架和.NET项目之间可以共享代码。
  • 使用集中的软件包管理,以方便迁移到新的NuGet软件包上

从少年到天才:一个优化的故事 | by Israel Lot | Oct, 2022 | ITNEXT

https://itnext.io/from-junior-to-genius-an-optimization-story-ab20afc8159d

一篇关于调整代码的文章,根据计算32位校验和的代码,在不同的阶段进行计算。

文章从一个简单的实现,到一个不安全的实现,到一个棘手的实现,到一个简单的实现,到一个使用SIMD的实现,最后到一个85倍的性能优化。

主题

Console.ReadKy在.NET 7中的优化 - .NET Blog

https://devblogs.microsoft.com/dotnet/console-readkey-improvements-in-net-7/

文章描述了.NET 7中的重写和修改,使Console.ReadKey在Unix/Linux上表现得更好。

一段时间以来,在Unix/Linux上的Console.ReadKey的行为,在输入的组合键和处理修改键方面,已经发现了一些BUG。 为了解决这个问题,在.NET 7中的代码已经被重新编写了。

文章介绍了在重写前为增加自动测试覆盖率所采取的方法,内部系统调用的调用,旧的实现和新的实现。

它还引入了runtimeconfig.json和环境变量设置,恢复到.NET 6兼容行为。 这些兼容性行为将在.NET 8中被删除。

在Visual Studio中对文件进行比较 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/comparing-files-in-visual-studio/

关于考虑在Visual Studio中实现文件比较功能的问题。

Visual Studio过去没有提供通过选择任意文件来比较文件的功能,但它已经开始考虑。 首先,他们已经开始试验一个名为 "文件差异 "的功能扩展,文章介绍了该扩展的功能。

如果你有兴趣,他们希望你能提供反馈和投票。

  • File Differ - Visual Studio Marketplace
  • [NEW] Is there a way to compare two files from solution explorer? - Visual Studio Feedback

用MSAL.NET对.NET MAUI应用程序进行认证 - .NET Blog

https://devblogs.microsoft.com/dotnet/authentication-in-dotnet-maui-apps-msal/

宣布在Microsoft Identity.Client 4.47.0(MSAL.NET)中支持.NET MAUI。

A宣布.NET MAUI社区工具包 v1.3 - .NET Blog

https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-maui-community-toolkit-v13/

.NET MAUI Community Toolkit v1.3已经发布。

.NET MAUI Community Toolkit v1.3现已发布,包括状态栏样式、Gravatar图片来源、动画增强和源链接支持等内容。

发布11.0.0版预览2 · AvaloniaUI/Avalonia

https://github.com/AvaloniaUI/Avalonia/releases/tag/11.0.0-preview2

Avalonia 11.0.0 Preview 2已经发布。

它包括几个稳定性改进和各种修复。

Rider 2022.3 EAP 2: 新的用户界面,改进的单元测试,更好的动态程序分析和更多的内容. | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/10/07/rider-2022-3-eap-2/

Rider 2022.3 EAP 2已经发布。

新的基于IntelliJ的IDE UI,改进了Search Everywhere、工具窗口和Solution Explorer,Linux和macOS支持Rider的内置dotMemory,支持C# 11,改进了单元测试探索器,改进了 支持.NET MAUI,支持在IIS中启动,动态程序分析(数据库访问),等等。

宣布NuGet PackageReference支持针对.NET Core和.NET 5或更高版本的C++/CLI MSBuild项目 - C++ Team Blog

https://devblogs.microsoft.com/cppblog/announcing-nuget-packagereference-support-for-c-cli-msbuild-projects-targeting-net-core/

宣布NuGet PackageReference支持Visual Studio 2022 17.3版或更高版本中针对.NET Core或.NET 5或更高版本的C++/CLI MSBuild项目。

文章、幻灯片等

一个将Xamarin.Forms库移植到MAUI的故事

https://speakerdeck.com/muak/xamarin-dot-formsraiburariwo-mauiniyi-zhi-sitahua

谈及将Xamarin.Forms的库移植到.NET MAUI的幻灯片。

在这里,我们要介绍一下.NET MAUI,包括实施方法的不同和技巧。

MAUI的当前状态和进化点| ドクセル

https://www.docswell.com/s/hiro128_777/KW79X5-2022-09-30-184910

幻灯片显示了.NET MAUI与Xamarin.Forms的架构差异,对各种工具的支持现状等。

.NET注释月刊 | 2022年10月 | The .NET Tools Blog

https://blog.jetbrains.com/dotnet/2022/10/06/net-annotated-monthly-october-2022/

2022年10月,JetBrains公司发布了一篇与.NET相关的信息汇总文章

[C#] .NET使用NamedPipe进行进程间通信(IPC)(WPF示例) - Qiita

https://qiita.com/kobayashi_stmn/items/7de42805eba009deebaa

关于如何在.NET 6 WPF应用程序中使用NamedPipe进行进程间通信的文章。

Visual Studio的Azure Marketplace镜像现在支持Microsoft Dev Box - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/visual-studios-azure-marketplace-images-now-support-microsoft-dev-box/

宣布Azure Marketplace Visual Studio镜像现在由Microsoft Dev Box支持。

在.NET 6中为强类型的配置对象添加验证信息

https://andrewlock.net/adding-validation-to-strongly-typed-configuration-objects-in-dotnet-6/

关于如何在.NET 6 Microsoft.Extensions.Configuration中为强类型的配置对象添加验证的文章。

了解OpenTelemetry .NET (8) 手动追踪连接示例:通过Azure服务总线在应用程序之间连接追踪

https://tech.tanaka733.net/entry/2022/10/opentelemetry-dotnet-08

关于如何使用Azure服务总线在服务之间连接请求的痕迹的文章。

使用.NET 7的Blazor自定义元素来渲染动态内容

https://jonhilton.net/blazor-custom-elements/

关于如何使用自定义元素在Blazor中构建动态元素的文章。

我们是如何通过删除闭包分配来实现5倍的管道执行速度的

https://particular.net/blog/pipeline-and-closure-allocations

关于通过减少NServiceBus中的lambda捕获(分配)来提高性能的文章。

即使是.NET MAUI也想打开键盘! (安卓)

https://zenn.dev/test_myname/articles/d982b67cf0615f

关于如何在.NET MAUI中显示/隐藏Android屏幕键盘的文章。

Blazor WASM在GH页面上的自定义404页面

https://dev.to/dotnet/blazor-wasm-custom-404-page-on-gh-pages-1o99

当Blazor WebAssembly托管在GitHub Pages上时,如何在访问不存在的页面时显示一个自定义错误页面的文章。

图书馆、资料库、工具等

GitHub - xoofx/Antlr4Ast: Antlr4Ast是一个.NET库,为ANTLR4/g4文件提供一个解析器和抽象语法树(AST)。

https://github.com/xoofx/Antlr4Ast

一个能解析ANTLR4/g4文件以创建AST的库。

disruptor-net/Disruptor-net: 使用.NET实现 LMAX Disruptor

https://github.com/disruptor-net/Disruptor-net

高性能的线程到线程的消息传递框架库。

bchavez/Bogus: 一个用于C#、F#和VB.NET的简单的假数据生成器。基于著名的faker.js,并从其移植。

https://github.com/bchavez/Bogus

从faker.js移植过来的伪数据生成库。

  • Generating Random Dummy Data using Bogus

网站、文件

Twitter

LinqPad正在引入一个整合功能,在LINQPad上按下Ctrl+Shift+B可以在BenchmarkDotNet上获得一个即时的基准测试。

版权

原文版权:mayuki

原文链接:https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-10-11.md

翻译版权:InCerry

翻译链接:https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-10-11.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_401973.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker:基础命令未完待续

基础操作 docker info #查看docker的基本信息docker version #查看docker版本信息一、镜像操作 1、搜索镜像 docker search nginx2、下载镜像 docker pull nginx#从仓库中下载镜像,若没有指定标签,则下载最新的版本,也就是标签为: la…

Python快速刷题网站——牛客网 数据分析篇(十五)

👦👦一个帅气的boy,你可以叫我Love And Program 🖱 ⌨个人主页:Love And Program的个人主页 💖💖如果对你有帮助的话希望三连💨💨支持一下博主 前言 本文将继续学习pan…

MySQL的行锁、间隙锁和临建锁

目录 行锁 间隙锁&临键锁 行锁 InnoDB实现了以下两种类型的行锁: 共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。 //共享锁和共享锁兼容,共享锁和排他锁互斥。 排他锁&#…

43 多个相同限定名类型同时存在导致的继承结构混乱的情况

前言 // 四刷天府绿道 呵呵 在前面文章中 jetty-runner:jar:9.3.20 和 tomcat-embed-core-8.5.29 的 JarScannerCallback 不兼容, 导致服务启动失败 提到了这样的一个问题 我们再看一下这里的 callback 的接口, jetty-runner 的这个对象里面是没有 void scan(Jar jar, Str…

【附源码】计算机毕业设计SSM民宿短租系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

JavaEE - Servlet(向服务器上传文件 Part类)

我们在需要向服务器上传文件时,在前端需要使用form表单,form表单需要使用特殊的类型 form-data 此时提交文件的时候,浏览器会把文件内容以form-data的格式构造到HTTP请求中,服务器就可以通过getPart获取了 需要注意:…

2.idea 标定相关

1.发现 VINS对于参数准确性的要求高于ORBSLAM。依据是相同的参数,ORBSLAM可以提供准确的定位结果,但是VINS很容易就会发散。在线标定外参很有效,经历过几次外参标定以后的外参给VINS可以获得很好的效果,但是不排除只是针对这个场景,随后测试如果效果好,考虑给ORBSLAM3增加…

Redis常见的问题

① 缓存雪崩 缓存雪崩是指在短时间内,有⼤量缓存同时过期,导致⼤量的请求直接查询数据库,从⽽对数据库造成 了巨⼤的压⼒,严重情况下可能会导致数据库宕机的情况叫做缓存雪崩。 我们先来看下正常情况下和缓存雪崩时程序的执⾏流…

docker安装tomcat、mysql、redis

一、tomcat 1.下载tomcat8docker pull tomcat:8.5.612.启动容器(-d 后台启动)docker run -d -p 8080:8080 tomcat:8.5.61 3.访问首页http://ip:8080/访问不到 404 解决:需要修改tomcat下的文件夹 如下 进入后webapps.dist改为webapps 二、mysql 1.拉取mysqldocker pull mys…

网课题搜答案公众号接口系统

网课题搜答案公众号接口系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台&#xf…

分布式数据库的基本概念

1.分布式数据库系统的产生和定义 产生原因: 经济的发展:经济发展:跨国公司:产生一个地方需要管理另外一个地方数据的需求 发展历程: 20世纪70年代末 成长于80年代 第一个数据库系统SDD-1是美国计算机公司(CAA)于1976年-1978年…

浏览器插件官方demo学习(一):基本代码、页面渲染、书签、cookie、Omnibox等

前言 参考:https://github.com/GoogleChrome/chrome-extensions-samples 官方目前只提供了几个基于v3版本的例子,其他例子都是基于v2版本的(可能是官方比较忙,没空写例子吧)。先从v3版本的例子开始学习,后…

JVM(六) —— 运行时数据区之堆的详细介绍(一)

JVM(六) —— 运行时数据区之虚拟机栈的详细介绍核心概述堆空间代码演示堆空间划分(重要)一个Java程序运行起来是一个进程,这个进程对应着一个JVM实例,一个JVM实例对应着一个运行时数据区。而一个运行时数据…

JAVA设计模式-组合模式

目录 1、例子 2、组合模式基本定义 总结: 1、例子 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系传统解决方案: 分析:…

一起学solidity写智能合约——整型(uint和int)

前言 整型一般用的比较多,会在各个合约中见到整型的存在,那么这个类型也是学习路上不可或缺的 环境: remix编译器点我跳转 正文 我们在sol中遇得到很多类型为整型的数据,所以我们的sol提供了两种数据类型的整型: …

基于物联网的户外环境检测装置设计

目 录 摘 要 1 Abstract 2 第1章 绪论 4 1.2 选题背景及意义 4 1.2 研究现状 4 1.3本课题的发展趋势和研究可行性 5 1.4研究主要内容 5 第2章 基于物联网的户外环境检测装置设计概述和相关原理 6 2.1 系统的概述 6 2.1.1 总体设计方案 6 2.1.2 总体框图 6 2.2 相关理论 7 2.2.1…

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法 目录 算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法效果一览基本介绍模型结构程序设计学习总结参考资料效果一览 基本介绍 针对集成学习参数众多,缺乏高效准确的参数寻优方法的问题,提出了基于贝叶斯优化随机森林方法…

k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

RK3588+AI工业视觉检测设计方案

本文详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通,智慧医疗等人工智能领域的智能终端设备。…

自定义ClassLoader

一,如何自定义classLoader? 需要使用加载器的loadClass方法:ClassLoader().loadClass 查看loadClass方法源码 首先检查加载,调用父5加载器开始双亲委派机制, 如果没有加载到,就调用findClass方式 打开发现…