https://www.cnblogs.com/huangxincheng/p/16917197.html
在B站,公众号上发了一篇 AOT 的文章后,没想到反响还是挺大的,都称赞这个东西能抗反编译,可以让破解难度极大提高,可能有很多朋友对逆向不了解,以为用 ILSpy
,Reflector
,DnSpy
这些工具打不开就觉得很安全,其实不然,在 OllyDbg
,IDA
,WinDBG
这些逆向工具面前一样是裸奔。
https://www.cnblogs.com/berkerdong/p/16920239.html
.NET 现在支持跨平台这件事情已经是众所周知的特点了,虽然平台整体支持跨平台了,但是我们的代码如果真的想要实现跨平台运行其实还是有些小细节要注意的,今天想要记录分享的就是关于 文件I/O操作时路径的拼接问题。
https://www.cnblogs.com/InCerry/p/dotnet-opt-per-use-hybrid-cache.html
经过一段时间的研究,笔者实现了一个基于微软FasterKv封装的进程内混合缓存库(内存+磁盘),它有着更加易用的API,接下来就和大家讨论讨论它。
https://www.cnblogs.com/JulianHuang/p/16907679.html
本文的知识点其实由golang知名的for循环陷阱发散而来,对应到我的主力语言C#, 其实牵涉到闭包、foreach。为了便于理解,我重新组织了语言,以倒叙结构行文。
https://mp.weixin.qq.com/s/94PKmYtcuKslTldrxXKiTg
.NET 7 已经发布了一段时间了,将几个服务升级到了 .NET 7,升级还是比较顺利的,也有遇到几个问题,分享一下。
https://mp.weixin.qq.com/s/ZWlJN52WiXcWwxQ3lOQuBg
跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中,在MASA Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序。
https://github.com/liuhll/silky
在.NET平台下的微服务应用开发框架,支持微服务场景的诸多特性,如服务治理、RPC通信、链路跟踪、分布式事务等。
https://mp.weixin.qq.com/s/5VtFnzuA8sKMNsBS9HhgEQ
前段时间分析了一个dump,一顿操作之后,我希望用外力来阻止程序内部对某一个com组件的调用,对,就是想借助外力实现,如果用 windbg 的话,可以说非常轻松,但现实情况比较复杂,客户机没有windbg,也不想加入任何的手工配置,希望全自动化来处理,看看我是如何实现的。
https://mp.weixin.qq.com/s/DQMpsA9HyF4VfbiEl_M5tQ
协程的出现大大降低了异步编程的复杂度,可以让我们像写同步代码一样去写异步代码,如果没有它,那么很多异步的代码都是需要靠回调函数来一层层嵌套,这个在我之前的一篇有介绍 rxjava回调地狱-kotlin协程来帮忙,本篇文章主要介绍:
https://mp.weixin.qq.com/s/df_GvlGWiPIRVrd1OmHfwA
我们知道,建立在HTTP2/3之上的gRPC具有四种基本的通信模式或者消息交换模式(MEP: Message Exchange Pattern),即Unary、Server Stream、Client Stream和Bidirectional Stream。本篇文章通过4个简单的实例演示它们在.NET平台上的实现原理,源代码从这里查看。
https://mp.weixin.qq.com/s/6yVqPhj0V9P7g4XtwREpZg
早期在学习泛型的协变与逆变时,网上的文章讲解、例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识。
https://github.com/LesnyRumcajs/grpc_bench/discussions/310
2022年11月27日gcnyin大佬提交了grpc_bench的框架升级的PR(将各个语言的的版本都升级了),在预览测试结果中dotnet_grpc以14w/s的成绩取得了第一名。
https://blog.appharbor.com/2022/11/09/shutting-down-appharbor
.NET应用程序托管服务AppHabor宣布,它将于12月5日关闭。 (11月9日)。
在该日期之后,所有的数据,包括网站、应用程序和数据库,都将不再能够被访问。
https://lp.jetbrains.com/csharp-for-babies/
JetBrains的一本电子书,帮助婴儿了解C#。
一本有插图的图画书,对A到Z的单词进行简单的解释。
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已经发布。
2.0已经进行了大量的重写,其特点是改变了源代码生成器而不是运行时代码生成器,许多新的API,支持D2D1像素着色器,并引入了XAML控件,以便与UWP和WinUI 3.1整合。
这篇文章介绍了ComputeSharp,它是如何工作的,以及它的部分内容,如XAML支持和D2D1像素着色器。
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实时预览等功能将在未来实现。
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#中的机器学习代码完成。
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。 其他错误也得到了修复,在为正式发布做准备。
https://aloiskraus.wordpress.com/2022/11/23/net-serialization-roundup-2022/
文章比较了.NET中各种序列化器(二进制和JSON)的序列化、反序列化和启动的性能。
一篇关于Web Live Preview的介绍性文章,它在Visual Studio 2022中提供了ASP.NET Web表单的运行时预览。
这篇文章展示了如何启用和使用Web Live Preview,以及它如何与第三方组件(如Telerik组件)集成。
https://haacked.com/archive/2022/11/22/csharp-list-pattern/
一篇展示C#11列表模式的代码示例的文章。
https://www.infoq.com/news/2022/11/XmlSecureResolver/
关于XmlSecureResolver在.NET 7中被删除的文章。
XmlSecureResolver被推荐用来避免引用外部资源引起的XXE,但它是基于代码访问安全(CAS)实现的,但由于.NET Core没有CAS,不再受限制,所以在.NET 7中被删除。 在.NET 7中,它被废弃了。 虽然该类型仍然存在,但在构建时打印了一个警告,在运行时引用该类型时引发了一个异常。
建议限制外部资源的行动是使用XmlResolver.ThrowingResolver而不是XmlSecureResolver。
https://qiita.com/gushwell/items/bcf39aaf708b9a483cf5
关于如何在ASP.NET Core Razor Pages中实现页面过滤的文章。
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://www.infoq.com/news/2022/11/GCCollectionMode-Aggressive/
关于.NET 7中引入的GCCollectionMode.Aggressive
的文章。
"Aggressive "是一种模式,在用 "GC.Collect "执行GC时,尽可能多地释放内存。 这对于诸如容器上的工作者有很长的空闲时间,并且在等待时使用很少的内存的情况很有用,在这种情况下,你不想完全关闭,但想在等待时保持低的资源使用率。
https://blog.elmah.io/build-and-publish-visual-studio-extensions-with-github-actions/
关于如何使用GitHub Actions构建和发布Visual Studio扩展(生成VSIX包)的文章。
https://qiita.com/karuakun/items/c8439d0aadb2e798cf08
关于在Android上使用Termux、运行Ubuntu、安装.NET SDK和运行ASP.NET Core应用程序的文章。
https://zenn.dev/masakura/articles/b84642b5bd680f
关于如何使用开源静态安全代码检查工具Semgrep来检查C#代码的文章。
https://qiita.com/mxProject/items/838ef3e5e2856c66a29c
关于如何使用MagicOnion的流媒体发送和接收大型数据对象的文章。
https://washi.dev/blog/posts/confusing-decompilers-with-callvirt/
关于不同的类型如果在虚拟函数表中具有相同的索引,就可以在IL的CallVirt中调用,而反编译器不能很好地处理的文章。
文章比较了AWS Lambda中.NET 7 Native AOT和.NET 6运行时的冷启动时间。
https://chnasarre.medium.com/parsing-the-nettrace-stream-of-not-only-events-8b95c7f82ec4
关于.NET诊断协议的 "nettrace "流格式以及如何解析它的文章。
https://github.com/dotnet-presentations/dotNETConf/tree/main/2022/MainEvent/Technical
.NET会议2022年的幻灯片集。
https://qiita.com/osamus/items/5093cefe20e8f817bbef
一篇文章总结了使用一个名为BASS的音频处理库实现类似Spearna的可视化器的关键点。
https://spacekey.dev/memorypack-7
关于实现一个应用程序的文章,该程序使用MemoryPack在ASP.NET Core API服务器和使用Nuxt的Web前端之间进行通信处理。
https://steven-giesel.com/blogPost/34e0fd95-0b3f-40f2-ba2a-36d1d4eb5601
关于将在.NET 8中引入的FOH的集合类的文章。
它介绍了FOH的集合类与现有的IReadOnlyList<T>
和Immutable集合之间的区别,性能等。
描述从Visual Studio 2022 17.4安装中移除不支持的组件的能力的文章。
新的安装程序允许你一次性删除Visual Studio安装中不支持的组件,文章解释了如何做到这一点。
如果安装程序较新,这个删除功能可以对Visual Studio 2022的所有版本进行,甚至Visual Studio 2019和2017环境也可以通过安装2022安装程序来支持。
https://github.com/MichalStrehovsky/PublishAotCompressed
https://twitter.com/MStrehovsky/status/1595941448326602752
MSBuild的一个扩展包,在用Native AOT发布时,用UPX压缩可执行文件。
https://github.com/dhq-boiler/boilersE2E
一个用于Windows桌面应用程序的E2E测试的辅助程序库,包括Windows应用程序驱动程序的启动和关闭,带有超时的元素搜索等。
一个为开发者提供的命令行计算器,可以进行各种计算、转换和硬件内联的计算。
https://github.com/ForNeVeR/AvaloniaRider/
https://twitter.com/fvnever/status/1596592659581345793?s=12
用Rider支持Avalonia开发的插件。 提供了预览和模板。
https://github.com/lowleveldesign/windbg-ext-template
https://twitter.com/lowleveldesign/status/1596164757353922560?s=12
用WinDbg托管.NET在托管代码中实现扩展函数的模板。
一个汇编各种框架和产品的寿命终止日期的网站。
https://twitter.com/dotnetfdn/status/1595427955076784133?s=12&t=EDTXeykhwoV--mTr9sPPxw
用于ESP32-C3的.NET nanoFramework固件镜像已经发布,它说.NET在RISC-V上运行。
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或者在我的微信公众号私信。
格式如下:
https://github.com/InCerryGit/.NET-Weekly
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。由于已经达到200人,可以加我微信,我拉你进群: ls1075