.NET周报【11月第4期 2022-11-30】
国内文章
.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。
.NET 7 的颠覆性变化:XmlSecureResolver 已经过时了 - .NET | Microsoft 学习[1]
在 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 应用程序驱动程序的启动和关闭,带有超时的元素搜索等。
[C#]为.NET 桌面应用程序实现了一个 E2E 测试的库--Qiita[2]
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周报【11月第4期 2022-11-30】相关推荐
- .NET周报【11月第2期 2022-11-15】
国内文章 统一的开发平台.NET 7正式发布 https://www.cnblogs.com/shanyou/archive/2022/11/09/16871945.html 在 2020 年规划的. ...
- 2月11绝地求生服务器维护,绝地求生11月27日维护公告 11月27日维护内容
绝地求生11月27日即将进行每周三例行的更新维护,在本次更新中并没有增加游戏内容,仅仅只是优化了服务器并且修复了一些BUG.不过本次更新后玩家的体验相信也会更好,本次更新维护时间大约5小时,想知道什么 ...
- 上海11月招聘会排期
说实在的,it职位在招聘会上近乎没有 <script language=javascript>document.write(" ");ad_dst = ad_dst+1 ...
- 方舟服务器维护公告11月19日,明日方舟11月19日10点停机维护 更新内容一览
感谢您对<明日方舟>的关注与支持,<明日方舟>计划将于11月19日10:00至16:00对客户端进行版本更新停机维护.本次更新为强制更新,更新结束后,需玩家对游戏客户端进行重新 ...
- 11月14日服务器维修,[11月14日]部分服务器临时维护公告
亲爱的玩家,大家好: <新天龙八部>以下服务器及所在天外于2016年11月14日19:30进行临时维护,开机时间待定,请大家互相转告并提前做好下线准备,给您带来的不便,敬请谅解. 临时维护 ...
- 方舟服务器维护公告11月19日,明日方舟11月19日更新总结 强制更新补偿5源石
明日方舟将于11月19日迎来版本更新维护,本次的维护时间从10点持续到下午4点,本次的更新属于强制更新,玩家需要重新下载,不过会补偿5个源石,来看看本次具体的更新总结内容吧. 主要更新内容 1.开放喧 ...
- 方舟服务器维护公告11月19日,明日方舟11月19日更新了什么内容-1119更新内容介绍...
明日方舟今天正在更新中,肯定有不少玩家好奇更新内容,那么究竟明日方舟11月19日更新了什么内容呢?想知道答案就赶紧看看下面由小编分享的攻略. 明日方舟11月19日更新了什么内容 1.内容 ◆「喧闹法则 ...
- 明日之后服务器维护11月8号,明日之后11月8日维护多少结束 明日之后11.8维护公告...
斗玩网(d.chinaz.com)报道:网易旗下手游明日之后因为玩家人数过多导致11月8日进行了服务器维护更新,许多玩家都十分想知道11月8日需要维护多久,一起来看看明日之后11月8日维护多少结束?明 ...
- 明日之后服务器维护11月8号,明日之后11月8日更新了什么
明日之后11月8日更新了什么?下面小编我就为大家11月8日更维护公告,感兴趣的玩家小伙伴们就赶紧一起来看看吧! 明日之后11月8日更新了什么 11月8日更新维护公告 因昨日大量幸存者涌入而导致的各服务 ...
最新文章
- python画折线图代码-python画折线示意图实例代码
- Orchard之生成新模板
- javascript实现自动添加文本框功能
- 剑指offer--在O(1)时间内删除链表结点
- 【转】shell十三问,为linux学习打基础(上)
- 蓝桥杯 BASIC-24 基础练习 龟兔赛跑预测
- VS Code 轻量级插件推荐
- python数据建模工具_python数据分析工具——Pandas、StatsModels、Scikit-Learn
- 解决jsp无法用el表达式的问题
- allure 测试报告本地打开_Allure自动化测试报告我是这样用的
- 图形化操作工具DIGITS 6.1的安装与运行
- Trapcode Particular 5 - Particle
- bugzilla dbd-mysql_Ubuntu搭建bugzilla
- Couldn't connect to host, port: localhost, 25; timeout -1;
- 京东自营客服初级考试
- 降薪潮、裁员潮,普通IT数据人的30岁没电视剧里那么容易
- prezi如何安装与教育账号注册激活
- 推荐一个Mac上的软件卸载工具
- BUUCTF-PWN刷题记录25(IO file attack)
- 深入浅出聊聊Java函数式编程思想
热门文章
- 初识Grad-CAM
- 要么励志故事:要么孤独,要么庸俗
- 无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
- NVIDIA Jetson之GPIO引脚设置
- servletjsp入门.....韩顺平笔记
- 边云协同,边缘云更出彩
- 镁光256Gb NAND Flash芯片介绍
- 分享一个react 图片上传组件 支持OSS 七牛云
- 【开发一个简单的音乐播放器+服务端】【一】
- TF卡里删掉文件后内存没变大_双11,TF卡,SD卡,读卡器如何选,看这篇就够了...