国内文章
.NET Conf China 2022 第一批讲师阵容大揭秘!整个期待了!
https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg
目光看过来 2022 年 12 月 3-4 日,一场社区性质的国内规模最大的 线上线下.NET Conf 2022 技术大会 即将盛大开幕。目前大会正紧锣密鼓地进行中,第一批大咖讲师及主题已确定,小编迫不及待想和大家分享。
如何像使用 AspNetCore 中的 Controllers 和 Actions 一样处理 MQTT 消息
https://mp.weixin.qq.com/s/KyATJd47ctCVg9ZLTyGikA
在物联网项目中, 处理 MQTT 的 topic 时费工费力, 代码一团乱, 什么才是最好的姿势?这里面我们极力介绍 MQTTnet.AspNetCore.Routing 项目,这个组件是通过 MQTTnet 实现了定义控制类和属性来路由处理消息的 topic , 就像 Asp.Net Core 的 WebApi 写法一样简单容易。
定制 ASP.NET Core 的身份认证
https://www.cnblogs.com/jackyfei/archive/2022/11/15/16879926.html
在本章,我们将学习如何定制 ASP.NET Core 认证机制。微软把安全认证当做 ASP.NET Core 框架的一部分,足以看见它是应用程序非常最重要的内容。在文将介绍如何定制 ASP.NET Core 认证 UI 的基本实现,以及如何向 IdentityUser 添加自定义信息。
从 WinDbg 角度理解 .NET7 的 AOT 玩法
https://www.cnblogs.com/huangxincheng/archive/2022/11/16/16895110.html
前几天 B 站上有位朋友让我从高级调试的角度来解读下 .NET7 新出来的 AOT,毕竟这东西是新的,所以这一篇我就简单摸索一下。
C#多线程(三)线程高级篇
https://www.cnblogs.com/xiaolipro/archive/2022/11/15/16891311.html
抛开死锁不谈,只聊性能问题,尽管锁总能粗暴的满足同步需求,但一旦存在竞争关系,意味着一定会有线程被阻塞,竞争越激烈,被阻塞的线程越多,上下文切换次数越多,调度成本越大,显然在高并发的场景下会损害性能。在高并发高性能且要求线程安全的述求下,无锁构造(非阻塞构造)闪亮登场。
.Net Core 实现 WebSocket Server 的另外三种方式
https://mp.weixin.qq.com/s/8kXURygrPDmRi2mGcGt5nQ
之前已经写过关于《WebSocket 原生 socket 实现》和《.Net Core WebSocket 服务端与客户端完整示例》以及《基于.Net TcpListener 实现 WebSocketServer 通讯》。本文介绍了实现 WebSocket Server 的另外三种方式。
C# 11:接口中的静态抽象成员
https://mp.weixin.qq.com/s/fjnICBu61TA2JVHx9A8eww
本文介绍了 C# 11 中的新特性,在接口中支持静态抽象成员以及它的使用方法和样例代码。
聊聊 FASTER 和进程内混合缓存
https://mp.weixin.qq.com/s/kg_SpcY6TiPznYKogZaokw
本文简单的体验了微软 FASTER KV Store,进行性能测试和解读了官方论文的性能数据,并给出了 FASTER 是否可以作为进程内混合缓存的可能性。
使用 Jupyter 记事本记录和制作.NET 可视化笔记
https://mp.weixin.qq.com/s/hvDEopMXqVRmk_hsoEq2hg
对于记录笔记的工具特别多,不过对于程序员来说,记录笔记+程序代码+运行结果演示可以同时存在,无疑会极大增加我们的笔记的可读性和体验感。以前在写 python 的时候,使用 jupyter 的体验很好,所以此处做一个基于 jupyter 的记录 C#代码的笔记简易教程,供大家围观。
使用 BeetleX.MQTT 构建服务
https://mp.weixin.qq.com/s/8ucY869v4mxFO4DAgx7f8g
已经有很长一段时间没有写代码,为了不让自己的代码技能有所下降所以针对 BeetleX 扩展了一个 MQTT 协议来保持自己的代码设计和编写能力。接下来简单介绍一下如何使用 BeetleX.MQTT 来构建对应的 TCP 或 WebSocket 服务。
【赏析】.NET 跨平台框架-Avalonia UI
这是 Avalonia UI 官方的一个 Demo,站长对部分 Nuget 包进行了升级,网友【小飞机 MLA】对 Linux 版本修复了字体 Bug 得以正常运行、演示。
https://mp.weixin.qq.com/s/0MWOq8EznrzzK269phsKnw
主题
Fleet 公开预览版中的 C#支持 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2022/11/17/csharp-support-in-fleet/
Fleet 中的 C#支持现已进入公开预览阶段。
与 Rider 一样,实现是基于 ReSharper 的,但不支持 Xamarin 或 Unity,所以 Rider 和 Fleet 将在可预见的未来共存。 在.NET 支持下,Rider 和 Fleet 将暂时共存。 作为一个限制条件,在.NET 5 或更高的版本中。
支持的功能包括代码分析、导航、名称重构、代码完成、模板、格式化、文档弹出、应用程序配置和执行、调试包括断点。
文章还谈到了实现支持的步骤和未来计划。
宣布.NET 虚拟单体库 - 问题#241 - dotnet/announcements
https://github.com/dotnet/announcements/issues/241
.NET 虚拟单体资源库,是一个镜像和收集构建.NET 所需的一切的资源库。
.NET 产品的构建是由许多存储库组成的,这使得微软以外的任何人都很难复制构建,并增加了构建和发布基础设施的复杂性,其目标是简化构建和运输过程,并使其对社区透明。 储存库的目的是简化构建和运输,并对社区透明。
包括所有从.NET SDK 构建所需的代码[1]
ASP.NET Core 到底有多快?
https://dusted.codes/how-fast-is-really-aspnet-core
一篇深入探讨最近关于 ASP.NET Core 性能的 TechEmpower Benchmark 结果的文章,其中吹捧了它的速度,以及相应的代码是什么样子。
基准代码包括仅使用 Kestrel 和最小部件编写的 "平台"、使用 ASP.NET Core 中间件的 "微型 "和甚至使用 Razor 模板引擎的 "完整",每个实现都被讨论和推广。平台,但是否可以说它 "比其他语言/平台更快"。
Git Action:自我托管的运行器现在支持 Windows ARM64 - 问题#616 - github/roadmap
https://github.com/github/roadmap/issues/616#event-7826802074
GitHub Actions 的自我托管运行器现在支持 Windows ARM64 环境。
宣布 Oracle 对.NET 7 的支持 - Alex Keh - Medium
https://medium.com/@alex.keh/announcing-oracle-support-for-net-7-c011b0dc4558
ODP.NET Core 现在支持.NET 7。
NuGet 软件包 3.21.80 版本或更高版本支持 Oracle 数据库 11g Release 2(11.2.0.4)或更高版本。
Visual Studio 2022 版本 17.4.1 - Visual Studio 2022 发行说明 | Microsoft Learn
https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.4.1
Visual Studio 2022 的 17.4.1 版本已经发布。
它修复了 ML.NET Model Builder、集成终端屏幕阅读器的问题,以及在 Linux 上打开.NET 7 核心转储时的崩溃。
VS Git 多库支持已发布!
https://devblogs.microsoft.com/visualstudio/multi-repository-support-released/
一篇解释 Visual Studio 2022 17.4 中发布的 Git 的多仓库支持的文章。
多资源库支持允许你在打开一个解决方案的同时处理多个资源库。 由于性能的限制,目前可以同时处理的存储库的数量限制在 10 个。
文章介绍了跨多个仓库的分支管理、变更跟踪、推送以及 Git 仓库的设置,如 Fetch 时是否启用 Prune。
Visual Studio 中用于 ASP.NET Core 项目的开发隧道的公开预览 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/public-preview-of-dev-tunnels-in-visual-studio-for-asp-net-core-projects/
关于可在 Visual Studio 中用于 ASP.NET Core 开发的 dev tunnels 公开预览的文章。
"dev tunnel "是一种提供从互联网到本地环境的隧道(端口转发)的服务。 它已经从一个私人预览变成了公开预览。 这篇文章描述了如何启用隧道,如何配置它以用于调试启动,以及自最初发布以来的变化。
未来的路线图是增加诸如持久性 URL、隧道管理和各种 UI 的内容。
Visual Studio 2022 性能提升 17.4 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-performance-enhancements-17-4/
一篇关于 Visual Studio 2022 17.4 中性能改进的介绍性文章。
按文件夹搜索
更快地编制 C++项目的索引
在 Git 分支切换过程中,减少了解决方案的重新加载
.NET 中配置切换时的响应性
单元测试
平行测试探索
高效的并行测试执行
优化了 Visual Studio 和测试运行器进程之间的通信
提高了文件保存的响应速度
发布版本 v2.50.0 - grpc/grpc-dotnet
https://github.com/grpc/grpc-dotnet/releases/tag/v2.50.0
grpc-dotnet 2.50.0 已经发布。
在这个版本中没有重大的功能变化,主要是一些错误的修复。
.NET 框架程序集支持添加到 Azure Logic Apps(标准)XSLT 转换中(预览)。
https://techcommunity.microsoft.com/t5/integrations-on-azure-blog/net-framework-assembly-support-added-to-azure-logic-apps/ba-p/3669120
在 Azure Logic Apps(标准)XSLT 转换中增加了对.NET 框架组件的支持。
文章、幻灯片等
.NET 7.0 对动态 PGO 的性能改进是令人难以置信的 | Petabridge
https://petabridge.com/blog/dotnet7-pgo-performance-improvements/
关于.NET 7 的 DynamicPGO 与 Akka.NET 性能改进的文章。
试用.NET 7 中引入的内置容器支持 - 银光和蓝天
https://tech.tanaka733.net/entry/2022/11/builtin-container-support
关于.NET 7 中内置容器支持的文章(从 dotnet 发布中构建容器镜像)。
这篇文章解释了如何实际使用它,各种设置和限制。
用.NET NativeAOT 编写一个 OBS 插件
https://sharovarskyi.com/blog/posts/dotnet-obs-plugin-with-nativeaot/
关于用.NET 7 的 NativeAOT 编写 OBS 插件的文章。
它实现了一个例子,即为 OBS 插件导出一个带有UnmanagedCallersOnly
的函数,并在它作为插件加载时进行记录。
在同一事务中一起使用 Entity Framework Core 和 Dapper - Qiita
https://qiita.com/jun1s/items/212a95b73e68625a3674
关于在一起使用 Entity Framework Core 和 Dapper 时处理事务和连接的文章。
.NET 现在被 IBM Power 支持,试试吧 - Qiita
https://qiita.com/tom_m_m/items/9a729f462c0622a5ece3
关于安装和运行 64 位 IBM Power(ppc64le)的文章,.NET 7 中支持该功能。
HashSet vs SortedSet in C# - Code Maze
https://code-maze.com/csharp-hashset-vs-sortedset/
文章总结了 "HashSet<T>
"和 "SortedSet<T>
"之间的区别,它们的特点和性能差异。
如何在没有[授权]的情况下启用 - Qiita
https://qiita.com/mkuwan/items/bd5ff882108998d76dca
关于如何通过后退授权策略统一指定`Authorize'属性,而不是将其指定给控制器或方法的文章。
C#的安全静态代码分析器的快速比较
https://dev.to/dbalikhin/a-quick-comparison-of-security-static-code-analyzers-for-c-2l5h
文章比较了 C#静态代码安全分析工具。
文章比较了 CodeQL、SonarCloud、Semgrep、安全代码扫描和 Snyk 代码等工具针对样本代码的运行结果。 其他方面,如速度、IDE 支持和价格也进行了比较。
BlazorBindings.Maui - Preview 10
https://dev.to/dreamescaper/blazorbindingsmaui-preview-10-5c35
关于 BlazorBindings.Maui for MAUI forked from MobileBlazorBindings 的预览 10 的文章。
对.NET 7 的支持,导航的改进,外壳属性,组件生成器的改进等。
断言范围,你不知道你需要的 FluentAssertions 功能
https://dev.to/this-is-learning/assertion-scopes-the-one-fluentassertions-feature-you-didnt-know-you-needed-4pn
一篇关于断言分组机制的文章,称为 FluentAssertions 中的断言范围。
在一个断言范围内失败的断言可以被分组并报告(因此,如果一个断言失败,后续的断言也被执行)。
如何在.NET 中绘制 2D 图形 MAUI 的 GraphicsView
https://dev.to/syncfusion/how-to-draw-2d-graphics-in-net-mauis-graphicsview-daj
关于如何在.NET MAUI 中创建一个绘制 2D 图形的视图的文章。
GraphicsView 和 Microsoft.Maui.Graphics 可以用来绘制形状等。
面向.NET 开发者的 LiteDB 介绍:包含 WebApp Demo
https://platform.uno/blog/intro-to-litedb-for-net-developers-sample-webapp-included/
介绍 LiteDB,一种适用于.NET 的 NoSQL 数据库,并使用它实现一个 Uno 平台的示例应用程序。
C#11 的必要成员 - NDepend
https://blog.ndepend.com/c-11-required-members
关于 C#11 中 "required"(必填)成员的文章。
文章介绍了用法、限制以及何时有用。
用 Visual Studio 管理模板(ADMX)启用组策略设置 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/enable-group-policy-settings-with-visual-studio-administrative-templates-admx/
关于使用 Visual Studio 管理模板来启用组策略设置的文章。
EF Core 7 来了 - 欢迎键入实体 ID 🍾
https://dev.to/maxx_don/ef-core-7-is-here-welcome-typed-entity-id-1k3p
关于在 Entity Framework Core 7 中支持具有自定义类型 ID 的实体的文章。
开源库、资源库、工具等
le-nn/blazor-transition-group: 当 Blazor 组件进入或离开 DOM 时执行动画的一种简单方法。
https://github.com/le-nn/blazor-transition-group
用于为 Blazor 中的列表类组件实现添加/删除动画的库。
在 Blazor 中执行列表添加/删除动画的简单方法[BlazorTransitionGroup][2]
asmichi/ChildProcess: Asmichi.ChildProcess 是一个.NET 库,提供了创建子进程的功能。 一个替代的方法是 System.Diagnostics.Process.Start
。
https://github.com/asmichi/ChildProcess
ChildProcess 是一个.NET 库,提供创建子进程的功能。
dd + gzip 自制工具(镜像+恢复物理磁盘,dd + gzip 与 Linux 兼容)在 Windows 11 上运行,用于 ARM64 - Qiita
https://qiita.com/dnobori/items/59cc61b7f35449182b98
一个对物理磁盘进行镜像和回写的工具,可用于 ARM64 版本的 Windows。
pythonnet/pythonnet:Python for .NET 是一个软件包,为 Python 程序员提供了与.NET 通用语言运行时几乎无缝的集成。(CLR),并为.NET 开发者提供了一个强大的应用脚本工具。
https://github.com/pythonnet/pythonnet
譬如从 Python 到.NET,或者从 Python 到.NET 调用 Python。
如何使用 Pythonnet 从 C#调用 Python - Qiita[3]
网站、文件等
.NET 应用程序的单体到微服务之旅
https://d1.awsstatic.com/developer/Monolith-to-Microservice-Journey-net-framework-application-v1.5.pdf
.NET 应用程序的单体到微服务之旅
https://twitter.com/dotnetonAWS/status/1593725744554835973
社交媒体
介绍如何简单使用 IKVM.NET 将 Java 编译成.NET,开箱即用的 Java on .NET 。甚至能用 MavenReference 直接引用 Java maven 上的包。
https://www.zhihu.com/pin/1576268620421865474
Azure,gRPC JSON 转码和.NET Native AOT(服务器端) 在一个系统上组合上运行的故事。
https://twitter.com/jamesnk/status/1592634240310861824?s=12
关于用 PerfView 分析.NET 应用程序性能的视频
https://twitter.com/aaronontheweb/status/1592275255426711553?s=12
版权声明
国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-11-22.md
其余内容来自 Myuki WeekRef,由 InCerry 翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-11-22.md
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET 周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交 Issue 或者在我的微信公众号私信。
格式如下:
10~50 字左右的标题
对应文章或项目网址访问链接
200 字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
参考资料
[1]
包括所有从.NET SDK构建所需的代码: https://github.com/dotnet/dotnet
[2]在Blazor中执行列表添加/删除动画的简单方法[BlazorTransitionGroup]: https://zenn.dev/remrem/articles/3e13d64bcba6b5
[3]如何使用Pythonnet从C#调用Python - Qiita: https://qiita.com/hiron_rgkr/items/e0f110d75fb35584e6ed