国内文章

.NET 7 的 AOT 到底能不能扛反编译?

https://www.cnblogs.com/huangxincheng/p/16917197.html

在B站,公众号上发了一篇 AOT 的文章后,没想到反响还是挺大的,都称赞这个东西能抗反编译,可以让破解难度极大提高,可能有很多朋友对逆向不了解,以为用 ILSpy,Reflector,DnSpy 这些工具打不开就觉得很安全,其实不然,在 OllyDbg,IDA,WinDBG 这些逆向工具面前一样是裸奔。

关于 .NET 在不同操作系统中 IO 文件路径拼接方法,升级 .NET 7 后注意到的一个知识点

https://www.cnblogs.com/berkerdong/p/16920239.html

.NET 现在支持跨平台这件事情已经是众所周知的特点了,虽然平台整体支持跨平台了,但是我们的代码如果真的想要实现跨平台运行其实还是有些小细节要注意的,今天想要记录分享的就是关于 文件I/O操作时路径的拼接问题。

.NET性能优化-使用内存+磁盘混合缓存

https://www.cnblogs.com/InCerry/p/dotnet-opt-per-use-hybrid-cache.html

经过一段时间的研究,笔者实现了一个基于微软FasterKv封装的进程内混合缓存库(内存+磁盘),它有着更加易用的API,接下来就和大家讨论讨论它。

你认识的C# foreach语法糖,真的是全部吗?

https://www.cnblogs.com/JulianHuang/p/16907679.html

本文的知识点其实由golang知名的for循环陷阱发散而来,对应到我的主力语言C#, 其实牵涉到闭包、foreach。为了便于理解,我重新组织了语言,以倒叙结构行文。

从 .NET 6 更新到 .NET 7

https://mp.weixin.qq.com/s/94PKmYtcuKslTldrxXKiTg

.NET 7 已经发布了一段时间了,将几个服务升级到了 .NET 7,升级还是比较顺利的,也有遇到几个问题,分享一下。

MASA Framework 事件总线 - 跨进程事件总线

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

跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中,在MASA Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序。

Silky 微服务框架

https://github.com/liuhll/silky

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

聊一聊如何截获 C# 程序产生的日志

https://mp.weixin.qq.com/s/5VtFnzuA8sKMNsBS9HhgEQ

前段时间分析了一个dump,一顿操作之后,我希望用外力来阻止程序内部对某一个com组件的调用,对,就是想借助外力实现,如果用 windbg 的话,可以说非常轻松,但现实情况比较复杂,客户机没有windbg,也不想加入任何的手工配置,希望全自动化来处理,看看我是如何实现的。

kotlin的suspend对比csharp的async&await

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

协程的出现大大降低了异步编程的复杂度,可以让我们像写同步代码一样去写异步代码,如果没有它,那么很多异步的代码都是需要靠回调函数来一层层嵌套,这个在我之前的一篇有介绍 rxjava回调地狱-kotlin协程来帮忙,本篇文章主要介绍:

  • kotlin的suspend函数在编译生成了怎样的代码
  • csharp的async&await在编译生成了怎么样的代码
  • 这两者相比较,引发怎样的思考

用最少的代码模拟gRPC四种消息交换模式

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

我们知道,建立在HTTP2/3之上的gRPC具有四种基本的通信模式或者消息交换模式(MEP: Message Exchange Pattern),即Unary、Server Stream、Client Stream和Bidirectional Stream。本篇文章通过4个简单的实例演示它们在.NET平台上的实现原理,源代码从这里查看。

C# 逆变的具体应用场景

https://mp.weixin.qq.com/s/6yVqPhj0V9P7g4XtwREpZg

早期在学习泛型的协变与逆变时,网上的文章讲解、例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识。

话题

.NET7 GRPC性能表现亮眼

https://github.com/LesnyRumcajs/grpc_bench/discussions/310

2022年11月27日gcnyin大佬提交了grpc_bench的框架升级的PR(将各个语言的的版本都升级了),在预览测试结果中dotnet_grpc以14w/s的成绩取得了第一名。

AppHarbor正在关闭 - AppHarbor

https://blog.appharbor.com/2022/11/09/shutting-down-appharbor

.NET应用程序托管服务AppHabor宣布,它将于12月5日关闭。 (11月9日)。

在该日期之后,所有的数据,包括网站、应用程序和数据库,都将不再能够被访问。

给婴儿看的C#

https://lp.jetbrains.com/csharp-for-babies/

JetBrains的一本电子书,帮助婴儿了解C#。

一本有插图的图画书,对A到Z的单词进行简单的解释。

JamesNK/Newtonsoft.Json 13.0.2版发布

https://github.com/JamesNK/Newtonsoft.Json/releases/tag/13.0.2

Newtonsoft.Json(JSON.NET)13.0.2已经发布。

这个版本有几个新功能和错误修正,包括支持DateOnly和TimeOnly,以及增加了UnixDateTimeConverter.AllowPreEpoch。

发布ComputeSharp 2.0 - 通过DirectX 12和D2D1在GPU上轻松运行C#!

https://sergiopedri.medium.com/announcing-computesharp-2-0-run-c-on-the-gpu-with-ease-through-directx-12-and-d2d1-be4f3f2312b4

ComputeSharp 2.0已经发布。

2.0已经进行了大量的重写,其特点是改变了源代码生成器而不是运行时代码生成器,许多新的API,支持D2D1像素着色器,并引入了XAML控件,以便与UWP和WinUI 3.1整合。

这篇文章介绍了ComputeSharp,它是如何工作的,以及它的部分内容,如XAML支持和D2D1像素着色器。

.NET MAUI现在可以在Visual Studio for Mac 17.4中使用 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/net-maui-is-now-available-in-visual-studio-for-mac-17-4/

Visual Studio for Mac 17.4中的.NET MAUI支持已经发布。

类似于Windows上的Visual Studio的.NET MAUI开发,现在可以使用。

对XCode 14.1的支持将很快发布,C#热重载和XAML实时预览等功能将在未来实现。

Rider 2022.3 EAP 9

https://www.jetbrains.com/rider/nextversion/

https://twitter.com/jetbrainsrider/status/1596198425745391621?s=12

Rider 2022.3 EAP 9(早期访问预览)已经发布。

支持.NET 7 SDK(包括更新的项目模板、中央包管理和C# 11),支持虚幻引擎5.1,后端迁移到.NET 7的性能改进,默认情况下的UI新的工具条 ,以及C#中的机器学习代码完成。

ReSharper 2022.3 EAP 9

https://www.jetbrains.com/resharper/nextversion/

https://twitter.com/resharper/status/1596198977795657729?s=12

ReSharper 2022.3 EAP 9(早期访问预览)已经发布。

该版本扩展了EAP 8对ARM64的支持,dotCover、dotTrace、dotMemory和ReSharper命令行工具现在支持ARM64。 其他错误也得到了修复,在为正式发布做准备。

文章、幻灯片

.NET序列化综述2022

https://aloiskraus.wordpress.com/2022/11/23/net-serialization-roundup-2022/

文章比较了.NET中各种序列化器(二进制和JSON)的序列化、反序列化和启动的性能。

利用Web Live Preview和Telerik提高你的生产力 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/improve-your-productivity-with-web-live-preview-and-telerik/

一篇关于Web Live Preview的介绍性文章,它在Visual Studio 2022中提供了ASP.NET Web表单的运行时预览。

这篇文章展示了如何启用和使用Web Live Preview,以及它如何与第三方组件(如Telerik组件)集成。

C# 列表模式匹配的例子 | haacked.com

https://haacked.com/archive/2022/11/22/csharp-list-pattern/

一篇展示C#11列表模式的代码示例的文章。

.NET 7删除了不安全的XmlSecureResolver

https://www.infoq.com/news/2022/11/XmlSecureResolver/

关于XmlSecureResolver在.NET 7中被删除的文章。

XmlSecureResolver被推荐用来避免引用外部资源引起的XXE,但它是基于代码访问安全(CAS)实现的,但由于.NET Core没有CAS,不再受限制,所以在.NET 7中被删除。 在.NET 7中,它被废弃了。 虽然该类型仍然存在,但在构建时打印了一个警告,在运行时引用该类型时引发了一个异常。

建议限制外部资源的行动是使用XmlResolver.ThrowingResolver而不是XmlSecureResolver。

在ASP.NET Core Razor Pages中实现IAsyncPageFilter - Qiita

https://qiita.com/gushwell/items/bcf39aaf708b9a483cf5

关于如何在ASP.NET Core Razor Pages中实现页面过滤的文章。

我想用Azure AD登录并调用Blazor WASM -> ASP.NET Core WebAPI -> MS Graph API

https://zenn.dev/okazuki/articles/auth-blazorwasm-aspnetcore-obo

文章介绍了如何从登录Azure AD的Blazor WebAssembly应用程序中用ASP.NET Core Web API调用微软图形API。

如何使用和构建一个流程(On-Behalf-Of flow),其中服务器应用程序调用Graph API而不是直接从客户端调用。

在OptionsBuilder中使用范围服务的危险和问题

https://andrewlock.net/the-dangers-and-gotchas-of-using-scoped-services-when-configuring-options-with-options-builder/

关于在使用OptionsBuilder构建配置时使用范围服务的危险和陷阱的文章。

.NET 7为Kubernetes增加了积极的垃圾收集功能

https://www.infoq.com/news/2022/11/GCCollectionMode-Aggressive/

关于.NET 7中引入的GCCollectionMode.Aggressive的文章。

"Aggressive "是一种模式,在用 "GC.Collect "执行GC时,尽可能多地释放内存。 这对于诸如容器上的工作者有很长的空闲时间,并且在等待时使用很少的内存的情况很有用,在这种情况下,你不想完全关闭,但想在等待时保持低的资源使用率。

  • [API建议]:让应用程序的作者告诉我们要空闲。

用GitHub动作构建和发布Visual Studio扩展程序

https://blog.elmah.io/build-and-publish-visual-studio-extensions-with-github-actions/

关于如何使用GitHub Actions构建和发布Visual Studio扩展(生成VSIX包)的文章。

在Android上运行ASP.NET Core - Qiita

https://qiita.com/karuakun/items/c8439d0aadb2e798cf08

关于在Android上使用Termux、运行Ubuntu、安装.NET SDK和运行ASP.NET Core应用程序的文章。

.NET中的静态安全代码检查(Semgrep版)

https://zenn.dev/masakura/articles/b84642b5bd680f

关于如何使用开源静态安全代码检查工具Semgrep来检查C#代码的文章。

如何用MagicOnion发送和接收大型复杂数据对象 - Qiita

https://qiita.com/mxProject/items/838ef3e5e2856c66a29c

关于如何使用MagicOnion的流媒体发送和接收大型数据对象的文章。

令人困惑的.NET反编译器:CallVirt OpCode

https://washi.dev/blog/posts/confusing-decompilers-with-callvirt/

关于不同的类型如果在虚拟函数表中具有相同的索引,就可以在IL的CallVirt中调用,而反编译器不能很好地处理的文章。

Lambda冷启动 - .NET 7 Native AOT vs .NET 6 Managed Runtime | 没有教条的博客

https://nodogmablog.bryanhogan.net/2022/11/lambda-cold-starts-net-7-native-aot-vs-net-6-managed-runtime/

文章比较了AWS Lambda中.NET 7 Native AOT和.NET 6运行时的冷启动时间。

解析 "nettrace "事件流(不仅仅是)。

https://chnasarre.medium.com/parsing-the-nettrace-stream-of-not-only-events-8b95c7f82ec4

关于.NET诊断协议的 "nettrace "流格式以及如何解析它的文章。

dotNETConf/2022/MainEvent/echnical at main - dotnet-presentations/dotNETConf - GitHub

https://github.com/dotnet-presentations/dotNETConf/tree/main/2022/MainEvent/Technical

.NET会议2022年的幻灯片集。

从桌面浏览器或播放器中拦截声音数据,并以类似Spearna的方式显示出来 - Qiita

https://qiita.com/osamus/items/5093cefe20e8f817bbef

一篇文章总结了使用一个名为BASS的音频处理库实现类似Spearna的可视化器的关键点。

[C#]我想尝试使用MemoryPack 7 - 一些样例

https://spacekey.dev/memorypack-7

关于实现一个应用程序的文章,该程序使用MemoryPack在ASP.NET Core API服务器和使用Nuxt的Web前端之间进行通信处理。

在.NET 8新的使用FOH的集合类

https://steven-giesel.com/blogPost/34e0fd95-0b3f-40f2-ba2a-36d1d4eb5601

关于将在.NET 8中引入的FOH的集合类的文章。

它介绍了FOH的集合类与现有的IReadOnlyList<T>和Immutable集合之间的区别,性能等。

从你的Visual Studio安装中删除不支持的组件 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/removing-out-of-support-components-from-your-visual-studio-installations/

描述从Visual Studio 2022 17.4安装中移除不支持的组件的能力的文章。

新的安装程序允许你一次性删除Visual Studio安装中不支持的组件,文章解释了如何做到这一点。

如果安装程序较新,这个删除功能可以对Visual Studio 2022的所有版本进行,甚至Visual Studio 2019和2017环境也可以通过安装2022安装程序来支持。

开源库、资源库、工具

MichalStrehovsky/PublishAotCompressed

https://github.com/MichalStrehovsky/PublishAotCompressed

https://twitter.com/MStrehovsky/status/1595941448326602752

MSBuild的一个扩展包,在用Native AOT发布时,用UPX压缩可执行文件。

dhq-boiler/boilersE2E: 支持你的E2E测试

https://github.com/dhq-boiler/boilersE2E

一个用于Windows桌面应用程序的E2E测试的辅助程序库,包括Windows应用程序驱动程序的启动和关闭,带有超时的元素搜索等。

kalk

https://kalk.dev/

一个为开发者提供的命令行计算器,可以进行各种计算、转换和硬件内联的计算。

ForNeVeR/AvaloniaRider: JetBrains Rider插件用于Avalonia开发

https://github.com/ForNeVeR/AvaloniaRider/

https://twitter.com/fvnever/status/1596592659581345793?s=12

用Rider支持Avalonia开发的插件。 提供了预览和模板。

lowleveldesign/windbg-ext-template: 一个用于创建管理的WinDbg扩展的模板

https://github.com/lowleveldesign/windbg-ext-template

https://twitter.com/lowleveldesign/status/1596164757353922560?s=12

用WinDbg托管.NET在托管代码中实现扩展函数的模板。

网站、文件等

Home | endoflife.date

https://endoflife.date/

一个汇编各种框架和产品的寿命终止日期的网站。

推文

https://twitter.com/dotnetfdn/status/1595427955076784133?s=12&t=EDTXeykhwoV--mTr9sPPxw

用于ESP32-C3的.NET nanoFramework固件镜像已经发布,它说.NET在RISC-V上运行。


Alexandre Mutel: "NativeAOT的一个超级酷的功能与...." - Mastodon

https://mastodon.social/@xoofx/109423020409800983

.NET 7的NativeAOT的一个超级酷的功能是 "直接调用PInvoke",或者是链接静态库https://github.com/dotnet/runtime/blob/main/src/coreclr/nativeaot/docs/interop.md,直接调用函数的能力。

在NuGet中没有内置的支持来分发这些东西(例如运行时文件夹),但可以很容易地发布一个包,提供动态库,但也可以提供对静态链接库的支持,并通过MSBuild目标自动注入它。我喜欢这个功能!

.NET 7的NativeAOT谈到了.NET 7支持直接的P/Invoke调用和静态库链接的讨论。

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。

格式如下:

  • 10~50字左右的标题
  • 对应文章或项目网址访问链接
  • 200字以内的简介,如果太长会影响阅读体验

https://github.com/InCerryGit/.NET-Weekly

.NET性能优化交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。由于已经达到200人,可以加我微信,我拉你进群: ls1075

.NET周报【11月第4期 2022-11-30】的更多相关文章

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

    国内文章 开源·安全·赋能 - .NET Conf China 2022 https://mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg .NET Conf Chi ...

  2. CSDN问答频道“华章杯”11月排行榜活动开始,丰厚奖品等你拿

    CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...

  3. 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了

    主办单位: 中国遥感应用协会 Esri中国信息技术有限公司 内容简单介绍: 依据中国遥感应用协会栾恩杰理事长推动国内遥感技术和应用的指示精神,2014年中国遥感应用协会组织培训交流部与Esri中国信息 ...

  4. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  5. 微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版

    微软今天发布了Visual Studio 2022 最接近正式发布的RC版本,同时宣布在11月8日发布正式版,届时将在线上发布虚拟的发布活动,具体参见:https://devblogs.microso ...

  6. .NET Conf 2022 &ndash; 11 月 8 日至 10 日

    .NET Conf 2022 下周就正式开启了,时间是美国时间的 11月8日至10日..NET Conf 2022是一个免费的,为期三天的, 虚拟开发人员活动提供多种实时会话,其中包括来自社区和 .N ...

  7. 11月30日《奥威Power-BI智能分析报表制作方法》腾讯课堂开课啦

    这么快一周就过去了,奥威公开课又要与大家见面咯,上节课老师教的三种报表集成方法你们都掌握了吗?大家都知道,学习的结果在于实际应用,想要熟练掌握新内容的要点就在于去应用它.正是基于这一要点,每一期的课程 ...

  8. 11月23日《奥威Power-BI报表集成到其他系统》腾讯课堂开课啦

    听说明天全国各地区都要冷到爆了,要是天气冷到可以放假就好了.想象一下大冷天的一定要在被窝里度过才对嘛,索性明天晚上来个相约吧,相约在被窝里看奥威Power-BI公开课如何?        上周奥威公开 ...

  9. 11月16日《奥威Power-BI基于SQL的存储过程及自定义SQL脚本制作报表》腾讯课堂开课啦

           上周的课程<奥威Power-BI vs微软Power BI>带同学们全面认识了两个Power-BI的使用情况,同学们已经迫不及待想知道这周的学习内容了吧!这周的课程关键词—— ...

  10. 11月09日《奥威Power-BI vs微软Power BI》腾讯课堂开课啦

    上过奥威公开课的同学可能有一个疑问:奥威Power-BI和微软Power BI是同一个吗,为什么叫同样的名字?正如这个世界上有很多个John.Jack.Marry…一样,奥威Power-BI和微软Po ...

随机推荐

  1. 以TrueType为例谈字形描述

    以TrueType为例谈字形描述 作者:哲思 时间:2022.9.17 邮箱:zhe__si@163.com GitHub:zhe-si (哲思) (github.com) 一.前言 在深入理解&qu ...

  2. k8s 中的 Pod 细节了解

    k8s中Pod的理解 基本概念 k8s 为什么使用 Pod 作为最小的管理单元 如何使用 Pod 1.自主式 Pod 2.控制器管理的 Pod 静态 Pod Pod的生命周期 Pod 如何直接暴露服务 ...

  3. MySQL集群搭建(5)-MHA高可用架构

    1 概述 1.1 MHA 简介 MHA - Master High Availability 是由 Perl 实现的一款高可用程序,出现故障时,MHA 以最小的停机时间(通常10-30秒)执行 mas ...

  4. CentOS 7.7系统安装Redis 6.0.3

    前提操作 避免出现如下的错误 yum -y install gcc tcl yum -y install centos-release-scl yum -y install devtoolset-9- ...

  5. 对vue中的data进行数据初始化

    this.$data:是表示当前的改变后的this中的数据 this.$options.data():是表示没有赋值前的this中的数据,表示 初始化的data 一般可以使用Object.assign ...

  6. C++ 自学笔记 对象的初始化

    数组的初始化: 在 C++中  struct ≈ Class:struct里面可以有函数. 默认构造函数: 没有参数的构造函数就是默认构造函数

  7. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇

    1.简介 众所周知,假如设备是android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,那么应用默认是不信任安装的Fiddler用户证书的,所以你就没法抓到应用 ...

  8. 使用Java实现haskell-style的list

    作为一个haskell这门函数式编程语言的爱好者,我特别喜欢它的list操作和推导功能.与传统面向对象或者过程语言不同的是,函数式语言通常喜欢把它们分为head.tail或者init.last等两部分 ...

  9. 9-模型层及ORM介绍

    一.模型层 模型层负责和数据库之间进行通信     二.Django配置mysql数据库 1.Django默认的数据库是sqllite3,将其更改为mysql数据库需要进行对应配置 1.安装mysql ...

  10. SystemParametersInfo函数说明

    SystemParametersinfo 返回值:如果函数调用成功,返回值非零:如果函数调用失败,那么返回值为零.若想获取更多错误信息,请调用GetLastError函数. SystemParamet ...