.NET周刊【10月第1期 2023-10-01】
国内文章
.NET应用如何防止被反编译
https://www.cnblogs.com/Can-daydayup/p/17736700.html
本文主要讲述了如何防止.NET应用被反编译。虽然无法完全防止反编译,但可以通过混淆代码、加密敏感数据、动态生成代码、使用代码混合技术和代码签名等方法增加反编译的难度。文章还介绍了ConfuserEx,这是一款.NET代码混淆工具,支持多种混淆技术,包括控制流混淆、字符串加密、资源加密等。使用ConfuserEx工具可以对.NET Fx的.dll文件和.exe文件进行混淆,增加反编译的难度,提高代码的安全性。
.NET开发工作效率提升利器 - CodeGeeX AI编程助手
https://www.cnblogs.com/Can-daydayup/p/17724111.html
本文介绍了CodeGeeX,一款基于大模型的全能的智能编程助手。CodeGeeX可以实现代码的生成与补全、自动添加注释、代码翻译以及智能问答等功能,帮助开发者显著提高工作效率。CodeGeeX2是其第二代模型,性能更优,支持多种主流编程语言和IDE。CodeGeeX的优势包括无需特殊网络即可使用,对个人用户完全免费,对中文支持友好,有详细的中文官方文档。此外,CodeGeeX还有VS Code插件,免费且易于安装。
模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案
https://www.cnblogs.com/Dotnet9-com/p/17731551.html
本文首发于Dotnet9,作者是沙漠尽头的狼。文章设计了一个案例,教读者如何应用前两篇文章中的技能,并介绍了一种支持多个版本的库的兼容性解决方案。文章中,作者回答了读者关于Lib.Harmony库的疑问,并设计了一个小动画游戏,发布到NuGet上,引导读者一步步解决游戏中的问题。文章的目的是通过实际操作,让读者理解这个工具的正经用途。
C#/.NET/.NET Core优秀项目和框架2023年9月简报
https://www.cnblogs.com/Can-daydayup/p/17739048.html
本文介绍了公众号“追逐时光者”定期推广和分享的C#/.NET/.NET Core优秀项目和框架。其中包括DncZeus,一个基于.NET 7 + Vue.js的通用后台管理系统框架;JIEJIE.NET和Obfuscar,两个.NET程序集混淆工具,用于保护.NET应用程序的版权和知识产权;ConfuserEx,一个功能强大的.NET代码混淆工具;以及Common.Utility,一个收集和整理了许多常用的C#帮助类和工具类库的项目。这些项目和框架都是开源的,源码地址在文章中有提供。
记一次 .NET某新能源MES系统 非托管泄露
https://www.cnblogs.com/huangxincheng/p/17727400.html
本文主要讲述了作者帮助朋友分析程序内存泄露问题的过程。首先,作者使用WinDbg工具对用户态内存段进行分组处理,发现可能存在托管内存泄露。然后,通过观察托管堆内存,发现托管堆的内存使用量并不大,推测可能存在非托管内存泄露。最后,作者提出可以通过监控VirtualAlloc,HeapAlloc分配来找出问题,但由于只有一个dump,所以作者建议可以查看clr的私有堆,也就是loader堆,以期找到新的线索。
使用 OpenTelemetry 构建 .NET 应用可观测性(3):.NET SDK 概览
https://www.cnblogs.com/eventhorizon/p/17729014.html
本文主要介绍了OpenTelemetry .NET SDK的设计和使用,包括其核心组件如Logging, Metrics, Tracing等,以及如何在ASP.NET Core应用程序中使用。文章还提到了三个与OpenTelemetry相关的GitHub仓库:opentelemetry-dotnet(OTel SDK的核心库),opentelemetry-dotnet-contrib(第三方贡献的Instrumentation和Exporter),和opentelemetry-dotnet-instrumentation(无侵入的Instrumentation)。此外,文章还详细介绍了如何使用OTel SDK,包括安装依赖,使用Resource标识应用程序的元数据,以及通过ActivitySource实现的Tracing模块。
《HelloGitHub》第 90 期
https://www.cnblogs.com/xueweihan/p/17733161.html
"HelloGitHub"是一个分享GitHub上有趣、入门级的开源项目的平台。它提供了实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言如Python、Java、Go、C/C++、Swift等。这里有适用于macOS的虚拟音频驱动BlackHole,用4个函数实现的C语言编译器c4,超好用的Windows优化器optimizer,免费开源的屏幕实时翻译工具Translumo,类似SQLite的分析型数据库duckdb,神似Vim的代码编辑器kakoune,简单好用的Web应用防火墙SafeLine,自己动手制作的触感智能旋钮smartknob等多个项目。
EarthChat SignalR原理讲解
https://www.cnblogs.com/hejiale010426/p/17729734.html
SignalR是Microsoft开发的库,用于ASP.NET开发人员实现实时web功能,如实时聊天、通知、实时数据更新等。SignalR提供了抽象层的连接、连接管理、组播、扩展性和跨平台等特点。SignalR核心为.NET Core重新设计和实现的SignalR版本,提供了更好的性能和跨平台支持。MessagePack是一种快速而紧凑的二进制序列化格式,SignalR为MessagePack格式提供内置支持。横向扩展是一种增加系统容量的方法,通过在现有的硬件集群中添加更多的机器或节点来实现。SignalR通过一种称为“后端”或“后台”存储的机制实现横向扩展。
记一次 .NET 某拍摄监控软件 卡死分析
https://www.cnblogs.com/huangxincheng/p/17729749.html
本文主要讲述了如何使用WinDbg分析监控软件卡死的问题。首先,通过查看主线程的调用栈,发现程序在等待临界区锁。然后,通过提取RtlEnterCriticalSection方法中的参数,找到了持有锁的线程。最后,通过查看持有线程的线程栈,分析出它在等待某个对象。这种分析方法可以帮助我们找出导致软件卡死的原因,从而解决问题。
Abp vNext 依赖注入
https://www.cnblogs.com/WangJunZzz/p/17729743.html
本文介绍了ABP的依赖注入系统,基于Microsoft的依赖注入扩展库开发,支持dotnet自带的注入方式。每个模块都定义自己的服务并在自己的模块类中通过依赖注入进行注册。同时,介绍了Autofac,一种常用的依赖注入框架,提供了动态代理和属性注入等高级特性。还介绍了如何集成Autofac,以及如何使用依赖注入,包括构造函数注入、属性注入和IServiceProvider。此外,还提到了一些特定类型会默认注册到依赖注入,以及在需要使用自定义工厂方法或singleton实例时,如何向IServiceCollection手动注册服务。
WPF中以MVVM方式,实现RTSP视频播放
https://www.cnblogs.com/maoleigepu/p/17727894.html
本文主要讨论了在上位机开发中如何使用视频播放。作者首先提到了两种常见的解决方案:使用厂家提供的sdk和前端控件,或者开启相机onvif协议,通过rtsp视频流进行播放。然后,作者详细介绍了如何使用开源项目Flyleaf进行视频播放。Flyleaf是一个基于FFmpeg/DirectX的媒体播放器.NET库,适用于WinUI 3/ WPF/WinForms。作者详细介绍了如何在App.xaml和App.xaml.cs中配置ffmpeg的dll文件地址,并提供了相关代码示例。最后,作者提到了使用CommunityToolKit.MVVM作为MVVM框架。
开源.NetCore通用工具库Xmtool使用连载 - 扩展动态对象篇
https://www.cnblogs.com/bcbr/p/17731652.html
本文介绍了Xmtool工具库中的扩展动态对象类库,这是工具库中最重要的设计之一。扩展动态对象允许开发人员像使用Javascript一样,无需预定义就可以直接赋值使用数据对象,大大简化了定义过程。此外,扩展动态对象还提供了丰富的方法,如TrySetValue、TryGetValue、GetValue、GetValueByPath等,用于对动态对象进行更多的判断和控制,满足各种应用场景的需求。
Abp vNext 模块加载机制
https://www.cnblogs.com/WangJunZzz/p/17728392.html
本文主要介绍了应用程序的生命周期和加载流程。生命周期包括添加依赖注入或其他配置前、中、后,初始化所有模块前、中、后,以及应用关闭执行等阶段。加载流程包括进入Startup,查看AddApplication源码,进入AbpApplicationWithExternalServiceProvider,查看AbpApplicationBase构造函数,以及查看加载模块逻辑等步骤。在加载模块逻辑中,会扫描模块并按照模块的依赖性重新排序。在ConfigureServicesAsync方法中,会依次执行每个模块的PreConfigureServices,ConfigureServices,PostConfigureServices。
C#开源且免费的Windows桌面快速预览神器 - QuickLook
https://www.cnblogs.com/Can-daydayup/p/17732473.html
本文推荐了一款由C#开源且免费的Windows桌面快速预览工具:QuickLook。QuickLook提供了一种快速预览文件内容的方式,用户可以在不打开文件的情况下,直接在文件资源管理器中快速查看文件的内容。只需选中文件,在文件资源管理器中按下空格键即可快速预览文件。它支持多种文件格式,包括文本文档、图片、音频、视频等。此外,QuickLook还有许多亮点特性,如支持大量文件类型、Fluent设计、触摸屏友好、HiDPI支持、在打开和保存文件对话框中预览、与第三方文件管理器兼容、易于通过插件扩展、严格的GPL许可证等。
【23种设计模式】外观模式(十)
https://www.cnblogs.com/wml-it/p/17730188.html
"外观模式"是一种软件设计模式,它通过提供一个统一的接口来隐藏系统的复杂性,使得子系统更易于使用。在软件系统中,完成一个功能可能需要调用多个接口,这增加了开发难度和维护复杂度。外观模式通过封装这些接口,提供一个简单的外观,使得使用者只需调用一个接口就能完成任务。外观模式包括外观角色和子系统角色。外观角色将所有请求委派给相应的子系统处理,而子系统角色处理由外观角色传来的请求。外观模式的优点是简化了接口,实现了子系统与客户之间的松耦合关系。缺点是如果增加新的子系统可能需要修改外观类或客户端的源代码,违背了"开闭原则"。
[WPF]浅析依赖属性(DependencyProperty)
https://www.cnblogs.com/czwy/p/17734460.html
本文主要介绍了WPF中的依赖属性,它可以节省内存开销,支持多属性值,并具有属性变化通知、限制、验证等功能。依赖属性的使用需要继承自DependecyObject,声明一个静态只读的DependencyProperty类型变量,并使用依赖属性的实例化包装属性读写依赖属性。依赖属性的存取值机制涉及到三个关键类型:DependencyProperty、DependencyObject、EffectiveValueEntry。其中,DependencyProperty是单例,存储了依赖属性的默认值和回调;DependencyObject是依赖属性的宿主对象,用于存储修改过值的依赖属性;EffectiveValueEntry存储依赖属性真实数值的对象,可以实现多属性值。
Blazor前后端框架Known-V1.2.16
https://www.cnblogs.com/known/p/17734850.html
"Known"是一个基于C#和Blazor开发的前后端分离快速开发框架,具有跨平台、开箱即用的特点,一处代码可以在多处运行。它包含模块、字典、组织、角色、用户、日志、消息、工作流、定时任务等功能,代码简洁易扩展,使开发更简单、更快捷。在2023年9月28日的更新中,Known增加了系统管理模块列表查看链接、用户管理更换部门功能,修复了多个问题,并优化了运维人员字段配置。此外,还添加了获取用户信息接口,支持Server端呈现模式部署,并对多个组件进行了增强和优化。
CAP项目集成带身份和证书验证的MongoDB
https://www.cnblogs.com/edisonchou/p/cap_with_authenticated_mongodb_practice.html
本文由Edison分享了如何在ASP.NET 6中使用带身份验证和SSL根证书验证的MongoDB的CAP事件总线。CAP是一个开源的事件总线项目,提供了多种存储方式,包括MongoDB。文章详细介绍了如何安装和集成CAP.MongoDB组件,并提供了相关代码示例。同时,文章还提到了CAP的Options选项,以及如何准确构造Mongo连接字符串。最后,文章假设了一个针对MongoDB的配置项格式,并提供了相关代码示例。
Biwen.QuickApi代码生成器功能上线
https://www.cnblogs.com/vipwan/p/biwen-quickapi-gen.html
本文介绍了Biwen.QuickApi,这是一个使用REPR风格编写的minimalApi。最近,作者实现了一个代码生成器版本的Biwen.QuickApi,以解决代码中反射和动态带来的性能问题。Biwen.QuickApi的原理是反射查找所有标记[QuickApi]特征的Api,然后批量注册服务和批量映射路由。如果使用代码生成器,那么原来可能性能堪忧的代码就都变成了强类型引用,从而提高了性能。最后,作者提供了代码生成器的实现代码,并欢迎大家交流。
主题
.NET 8 中的调试增强功能 - .NET 博客
https://devblogs.microsoft.com/dotnet/debugging-enhancements-in-dotnet-8/
Polly v8 正式发布
https://www.thepollyproject.org/2023/09/28/polly-v8-officially-released/
CoreWCF v1.4 和 v1.5 预览版 1 发布 · 问题 #15 · CoreWCF/公告
https://github.com/CoreWCF/announcements/issues/15
发布诊断版本 - v7.0.447801 · dotnet/diagnostics
https://github.com/dotnet/diagnostics/releases/tag/v7.0.447801
.NET Framework 2023 年 9 月累积更新预览 - .NET 博客
https://devblogs.microsoft.com/dotnet/dotnet-framework-september-2023-cumulative-update-preview/
先睹为快:Visual Studio“茶与技术”迷你系列 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/visual-studio-tea-technology-miniseries/
文章、幻灯片等
CI/CD 释放:使用 Jenkins 和 Docker 优化 .NET Web 应用程序交付
关于EF和SQLDB的加密 - Qiita
https://qiita.com/gsrh/items/cd77acbc2af350b3ee03
导入GitLab CI/CD自动进行C#/WPFapurike的Tesuto和insutorara的构建部署
https://zenn.dev/hacarus_blog/articles/3-gitlab-ci-for-c-application
处理 .NET 序列化中的未知枚举以进行 API 集成
https://gaevoy.com/2023/09/26/dotnet-serialization-unknown-enums-handling-api.html
服务器使用 .NET 7 发送事件
https://blog.devgenius.io/server-sent-events-with-net-7-4f06499a7762
[C#]控制DI容器的范围 - Qiita
https://qiita.com/jun1s/items/a4ebf7e897dc3cb1fea9
ASP.NET Core SignalR× 用Redis冗余Hub - Qiita
https://qiita.com/takasan/items/c9f245d0be24111e0cc1
防止 .NET 类库中的重大更改
https://medium.com/workleap/preventing-writing-changes-in-net-class-libraries-e61ae93b1b46
.NET 的便利 - .NET 博客
https://devblogs.microsoft.com/dotnet/the-convenience-of-dotnet/
分析单元使分配消失 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/a-unit-of-profiling-makes-the-allocations-go-away/
Rider 启动 2023.3 版本的抢先体验计划! | .NET 工具博客
https://blog.jetbrains.com/dotnet/2023/09/25/rider-2023-3-eap1/
【Windows/C#】更改akusesutokun的特权 - Qiita
https://qiita.com/mitsu_at3/items/8e5fa9cdbd61a315cb32
ReSharper 2023.3 抢先体验计划开始! | .NET 工具博客
https://blog.jetbrains.com/dotnet/2023/09/25/rsrp-2023-3-eap1/
如何修改 ASP.NET Core 中间件中的响应标头
https://blog.elmah.io/how-to-modify-response-headers-in-asp-net-core-middleware/
在 C# 中访问私有成员而不进行反射 - Gérald Barré
https://www.meziantou.net/accessing-private-members-without-reflection-in-csharp.htm
.NET 迁移战壕的故事 - 我们的第一个控制器
https://www.jimmybogard.com/tales-from-the-net-migration-trenches-our-first-controller/
功能标志 101:.NET 开发人员指南
https://www.code4it.dev/blog/feature-flags-dotnet/
通过 Nuke Build 上的代码构建 .NET 解决方案
https://medium.com/@alex.ozr/building-net-solutions-through-code-on-nuke-build-de40be06b091
在 .NET 中使用 Coverlet 进行测试覆盖率分析
https://victormagalhaes-dev.medium.com/test-coverage-analysis-with-coverlet-in-net-2e38df3c6ed7
.NET 迁移战壕的故事 - 迁移初始业务逻辑
https://www.jimmybogard.com/tales-from-the-net-migration-trenches-migration-business-logic/
网站、文档等
推文
https://x.com/mhmd_azeez/status/1706713404415549906?s=12
https://x.com/egorbo/status/1706316706316996947?s=12
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周刊-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
- 10~50字左右的标题
- 对应文章或项目网址访问链接
- 200字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
.NET性能优化交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
- 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
- .NET框架底层原理的实现,如垃圾回收器、JIT等等
- 如何编写高性能的.NET代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。
如果提示已经达到200人,可以加我微信,我拉你进群: ls1075
另外也创建了QQ群,群号: 687779078,欢迎大家加入。
抽奖送书活动预热!!!
感谢大家对我公众号的支持与陪伴!为庆祝公众号一周年,抽奖送出一些书籍,请大家关注公众号后续推文!
.NET周刊【10月第1期 2023-10-01】的更多相关文章
- .NET周报【10月第2期 2022-10-17】
主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...
- .NET周报【10月第3期 2022-10-25】
国内文章 聊一聊被 .NET程序员 遗忘的 COM 组件 https://www.cnblogs.com/huangxincheng/p/16799234.html 将Windows编程中经典的COM ...
- .NET周报【10月第1期 2022-10-11】
本周精选 继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型 https://github.com/dotnet/runtimelab/ ...
- 【10月新版】Aspose.Pdf 10月新版V17.10发布 | 附下载
2019独角兽企业重金招聘Python工程师标准>>> Aspose.Pdf for .NET 17.10 更新 功能和改进 核心 概述 类别 PDFNET-38067 支持DICO ...
- CCRD_TOC_2007年10月_总第11期
中信国健临床通讯 2007年10月, 总第11期 目 录 1. Etanercept可以缓解反应性和未分化关节炎患者的疼痛和滑膜炎症 Flagg SD, et al Arthritis Rheu ...
- 重大升级!SEER见证人,您的节点需要在10月28日前更新
SEER的区块链底层目前还处于不断完善中.一些新的完善更新会为区块链的基础设施--节点软件添加新的功能.理事会将会就是否接受新的节点版本进行共识投票,如果提案投票通过,将要求所有见证人在指定时间前将节 ...
- .NET周报 【2月第1期 2023-02-04】
国内文章 .NET 入门到高级路线 https://www.cnblogs.com/hejiale010426/archive/2023/02/01/17083913.html 笔者介绍了.NET入门 ...
- [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
正文 该项目从2011年10月开始开发,知道现在已经有整整5年了.MongoDB也从一开始的大红大紫到现在趋于平淡. MongoCola这个工具在一开始定位的时候只是一个Windows版本的工具,期间 ...
- 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
ActiveReports公开课全方位报表解决方案,满足商业报表五大需求 [开课时间]10月20日[主讲老师]葡萄城报表产品经理[开课形式]网络在线公开课[活动费用]前50名免费 适合人群:报表开发人 ...
- JavaScript图表FusionCharts免费在线公开课,由印度原厂技术工程师主讲,10月13日发车
FusionCharts公开课达人还你做 轻松晋升图表大师 [开课时间]10月13日 14:30[主讲老师]印度原厂技术工程师[开课形式]网络在线公开课[活动费用]前50名免费 现在就可以报名哦 报 ...
随机推荐
- 第一章 : Linux入门
1. 概述 2. Linux 和 Windows 区别 3. Centos 下载地址 网易镜像:http://mirrors.163.com/centos/7/isos ...
- EnhancingDecisionTreeswithGeographicInformationSystemsa
目录 引言 在计算机科学领域,地理信息系统和( geographical information systems, GIS)已经成为了一个非常受欢迎的工具.GIS 可以用来处理和存储大量的地理数据,支 ...
- .NET周报 【6月第4期 2023-06-25】
国内文章 如何在long-running task中调用async方法 https://www.cnblogs.com/eventhorizon/p/17497359.html long-runnin ...
- 【后端面经-Java】AQS详解
目录 1. AQS是什么? 2. AQS核心思想 2.1 基本框架 2.1.1 资源state 2.1.2 CLH双向队列 2.2 AQS模板 3. 源码分析 3.1 acquire(int) 3.1 ...
- JS逆向实战19——通杀webpack逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 aHR0cHM6Ly ...
- JAVA获取字符串内的括号对;获取括号对的内容;按指定规则返回括号对位置;
先看结果:处理字符串 "这个是一条测试用的字符串[ ( 5 ( 4( 3 [(1) (2)] ))(7))][(6)]" 结果 解决思路:参考正则表达式里面出入站部分 代码实现如下 ...
- JavaScript中this的绑定
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path s ...
- 介绍一个简易的MAUI安卓打包工具
介绍一个简易的MAUI安卓打包工具 它可以帮助进行MAUI安卓的打包. 虽然也是用MAUI写的,但是只考虑了Windows版本,mac还不太会. 没什么高级的功能,甚至很简陋,它能做的,只是节省你从M ...
- Java面试题全集(二)
1. ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素时,会复制⼀个新的数组,写操作在新数组上进⾏,读操作在原数组上进⾏ 2. ...
- 【NestJS系列】核心概念:Providers提供者
前言 Providers是Nest中的一个基本概念,许多Nest中定义的类都可以被视为一个Provider,比如:service.repository.factory.helper等,它们都可以通过c ...