国内文章
记一次商业级 .NET 保护壳完整脱壳实战
这篇文章详细描述了一个商业级.NET程序集的逆向工程实战过程,重点分析了多个保护层的破解方法。内容包括PE段加密、嵌入式原生DLL提取、JIT Hook方法体加密、字符串混淆等技术细节。文章深入探讨了各种保护机制的原理,并提供了解密脚本的具体实现,最终成功还原了被保护的程序集。该实战分享适合对.NET逆向工程感兴趣的技术人员,具有较高的技术深度和实用性,同时对保护机制的分析也展现了原创性和前沿性。整体结构清晰,语言可读性强,适时而富有价值。
ConcurrentNativeQueue<T>:一个使用 .NET 实现的零 GC 压力的无锁 MPSC 原生队列
本文介绍了ConcurrentNativeQueue<T>,一个无锁的多生产者单消费者队列,旨在避免GC停顿对性能的影响。尽管.NET提供了ConcurrentQueue<T>和Channel<T>,但在一些敏感场景下,它们可能成为性能瓶颈。比如在游戏主循环和高频交易中,GC停顿会导致延迟。ConcurrentNativeQueue<T>通过使用完全的非托管内存和无锁操作,提供高吞吐量和低延迟。它的核心原理基于原子操作和纯读检测,确保了在多线程环境中的高效性。设计特别适用于对GC完全敏感的应用场景。整体架构和核心技术部分给出详细的实现思路,以便于开发者理解并进行适当应用。
基于NativeAOT的 OpenClaw.NET 深度刨析
本文探讨自主智能体架构的演变,聚焦OpenClaw.NET的构建,原生JavaScript架构存在内存膨胀、冷启动延迟和安全漏洞等局限。OpenClaw.NET以C#从零构建,优化了内存使用和启动速度,通过NativeAOT技术和Microsoft.Extensions.AI抽象库实现解耦,增强了安全性和插件支持。文章将剖析其架构决策、优化机制及安全模型,意在为AI编排系统提供实践参考。
.NET 11 Preview 2 架构演进、技术深度解析
.NET 11的预览版(Preview 2)于2026年3月发布,它的支持生命周期为18个月,预计于2028年结束。此版本重构了运行时和硬件加速,加入了代理式人工智能技术,并优化了ASP.NET Core等组件。Runtime Async (V2)是此次更新的亮点,降低了内存分配峰值,显著提升了性能。它让异步操作成为一等运行时概念,实现了更好的内存布局。CoreCLR的引入标志着在WebAssembly生态中的重大转变,旨在统一服务端和浏览器的执行引擎。这些变化为企业级基础设施带来了显著的优势,改进了可观测性与调试体验。
Satori GC:同时做到高吞吐、低延时和低内存占用
这篇文章探讨了Satori GC的设计思路,聚焦于高吞吐、低延时和低内存占用之间的矛盾。文章分析了GC的基本职责,包括对象存活检查、内存回收和对象移动。它介绍了分代回收的概念,通过分代限制回收工作,以提高效率。Satori GC旨在在现实约束下,自适应地优化回收方式,并解读了Page和Region的概念作为核心抽象。强调了元数据和局部回收的管理,目的在于提升GC性能。整体内容深入,适合对内存管理有兴趣的技术人员。
记一次 .NET 某低代码开发框架 内存暴涨分析
文章讨论了内存暴涨问题的分析过程,案例来自一位朋友的请求,涉及 .NET 程序的内存管理。首先,通过 !address -summary 命令获得内存分布情况,发现大部分内存集中在 Unk 区域。接着,使用 !dumpheap -stat 命令分析堆内存状态,发现存在大量的弱引用对象,总计数达到约6087万。此种现象可能指向托管层的内存泄漏问题,需进一步调查。文章对分析工具使用的描述清晰,实用性强,具有一定的原创性和时效性。整体结构逻辑性强,易于理解。
ASP.NET Core 认证鉴权实战:JWT、Policy 与权限边界怎么落地
这篇文章聚焦于ASP.NET Core中的JWT认证和Policy授权,分析常见的安全隐患。文章指出,仅进行身份校验无法保证权限,必须在认证之后进行更深入的授权判断。角色与权限的关系模型被探讨,强调角色只能粗略分组,而详细操作应由权限声明决定。另外,文章阐述了资源级授权的重要性,指出未校验资源归属将导致越权问题。最后提供具体的代码示例,讲解如何配置JWT认证和基于权限声明的授权策略。整体内容实用且深入,对开发者有指导意义。
C# + ViewFaceCore 快速实现高精度人脸识别
本文介绍基于C#开发的WFFace人脸识别系统,系统实现了人脸检测、性别识别和年龄预测等功能。采用WinForm框架和ViewFaceCore开源库,使用SkiaSharp进行图像处理。项目模块化设计,确保核心算法与界面分离,支持JPG、PNG等格式的图像加载与保存,功能使用了异步处理机制,使处理速度提高40%。此外,系统强调资源管理,及时释放Bitmap对象,避免内存泄漏,界面设计符合Windows规范,保证兼容性。文件操作功能完备,支持特征数据的持久化与目录管理。
.NET 开发 MCP 服务器完全指南:打造智能数据库查询助手
MCP(模型上下文协议)是一种由Anthropic推出的开源协议,旨在提高AI助手与数据库的交互能力。它如同USB-C接口,使得不同AI助手能够统一调用外部工具。MCP具有三大核心能力,即工具(可调用函数)、资源(可读取数据源)和提示模板(预定义提示)。.NET开发者可以选择MCP服务器,享受官方C# SDK、强大的依赖注入、与Entity Framework Core的无缝结合等优势。环境准备方面,开发者需安装.NET SDK 8.0+、合适的IDE及数据库,并通过NuGet包进行安装。MCP为提升AI助手的智能化水平提供了新的可能性。
MCP C# SDK v1.0 正式发布
本文探讨了模型上下文协议(MCP)在企业级软件系统中集成大型语言模型的核心价值。MCP C# SDK v1.0 的发布标志着在.NET 平台上技术的成熟。SDK 采用分层 NuGet 包设计,确保灵活性和模块化,最小化依赖和安全风险。它支持多种托管模型,并通过工厂模式简化了客户端实例化。Native AOT 支持增强了性能,避免了运行时动态生成代码。整体分析揭示了该 SDK 对企业系统集成的重要影响,特别是在分散执行和授权机制方面。此报告强调新技术推动软件生态的战略变革。
C# 扩展方法只会写 this 吗?C# 14 新语法直接把扩展方法玩出了花
本文讨论了.NET 10的新扩展方法语法,强调了其简化和增强了扩展功能。传统的扩展方法需要重复写参数,而新语法通过extension关键字允许集中声明,支持实例方法、属性、静态方法等多种成员类型。文章展示了传统写法与新语法的对比,指出新语法的优势,如对静态扩展及泛型的良好支持。作者记录了实际代码示例,以帮助其他开发者理解这一更新的实用性。
Maomi.MQ 功能强大的 .NET RabbitMQ 消息队列通讯模型框架来了
本文介绍了 Maomi.MQ.RabbitMQ 的使用方法,包括其功能和快速配置过程。该框架基于 RabbitMQ,通俗易懂,简化消息传输流程。它支持多种消费者模式和消息序列化选项,提供高性能和强一致性的保障。通过灵活配置,可以自动创建队列并支持动态路由。开发者可快速上手,无需复杂步骤,减少开发时间。此外,框架支持与 MediatR 和 FastEndpoints 的结合,增强功能并降低代码侵入性。
.NET命名之谜:它与C#纠缠20年的关系揭秘
本文介绍了微软.NET框架的命名历程及其与C#语言的关系。最初代号为NGWS的项目,因互联网的兴起最终命名为.NET。文章解析了命名背后的市场考量及与竞争对手的关系,强调了这种命名带来的混乱,以及后续限制使用.NET前缀的必要性。同时探讨了C#的诞生过程,从COOL到C#的演变,以及它如何与.NET框架紧密结合,从编译原理等技术角度深入分析两者的共生关系。
.NET源码生成器使用SyntaxTree生成代码及简化语法
SyntaxTree是由Roslyn编译器生成的源代码树形结构,主要包含根节点和多个子节点。它的作用包括分析源代码是否满足生成器规则及直接生成代码,确保语法正确。生成语法树的方式使用SyntaxFactory类,可以避免生成过多字符串碎片,提高开发和调试效率。文章简化了部分功能,通过引导读者使用SyntaxTree替代传统字符串拼接方法来生成代码。文章还提供了命名空间声明和预定义类型的示例。
.NET Win32磁盘动态卷触发“函数不正确”问题排查
文章讨论了在处理Win32磁盘管理时遇到的异常问题。具体出现了DEVICEIOCONTROL.IOCTL_STORAGE_GET_DEVICE_NUMBER失败的情况,提示函数不正确。文章分析了问题的表象,认为可能与权限或句柄打开方式有关。代码逻辑先枚举系统卷,再通过卷句柄反查磁盘号,涉及到处理设备的打开和错误管理。这种问题常见于动态卷或跨区扩展卷,给开发者提供了有价值的排错思路。
奶奶都能看懂的 C# —— 手把手 LINQ
本文详细介绍了 C# 中的 LINQ,包括其基本概念、使用前提和查询方法。LINQ 旨在对集合进行高效查询和处理,要求集合实现 IEnumerable 接口。文章展示了如何通过简洁的使用语法快速进行数据查询,包括 Take 和 Last 方法的用法,以及声明式查询的实现。通过具体示例,读者可以理解 LINQ 的强大功能,并鼓励读者自己尝试代码。整体内容清晰易懂,适合初学者和进阶者学习。
.NET 10 打造 OpenClaw Windows Node
本文探讨了人工智能系统在用户交互中的最新进展,特别是微软的开源项目openclaw-windows-node。该项目结合了C#和Windows UI框架,旨在解决命令行智能体的不足,实现更深层次的操作系统集成。文章详细分析了该项目的架构、状态感知机制和安全策略。通过利用先进的开发工具,该项目在提升用户体验和内存管理上展现了创新性和实用性,为未来的环境智能操作系统奠定了基础。
从 IApplicationBuilder 到 RequestDelegate:ASP.NET Core 请求管线的性能与可观测性实战
这篇文章探讨了ASP.NET Core请求管线中的性能优化原因。文章指出,中间件顺序、日志记录和异常处理等因素会增加请求的固定开销,导致接口性能不稳定。作者以真实案例为基础,详细解析了请求管线的执行方式及常见错误,并提供了优化建议。通过合理配置中间件顺序和减少高成本操作,可以有效降低系统开销,提高吞吐量。文章清晰明了,直接针对实际问题,强调可观测性与性能之间的权衡。
利用Windows Powershell原生功能生成TOTP令牌
TOTP(基于时间的一次性密码)是一种常见的二次认证方法,通过密钥和当前时间戳计算生成一次性令牌。虽然Windows提供多种安全功能,但不支持原生TOTP认证器,导致用户需依赖第三方应用。文章介绍如何利用Windows注册表和PowerShell实现TOTP令牌生成,借助HMAC和DPAPI安全存储密钥,简化操作流程。实现步骤包括解析otpauth URL、Base32解码、加密存储密钥以及生成TOTP令牌的完整代码示例。
MAUI 嵌入式 Web 架构实战(七) 构建设备实时通信与控制系统
文章介绍了MAUI嵌入式Web架构的实现,重点讨论WebSocket的优势。WebSocket提供双向通信和长连接,适合实时日志和设备控制。文章详细阐述了如何在PicoServer中集成WebSocket,并通过代码示例展示了其实现过程。系统架构也进行了相应更新,分为REST API和WebSocket两部分,以提升实时性和用户体验。操作简单,内容清晰,适合技术开发者学习和实施。
【译】Visual Studio Dev Essentials:面向每位开发者的免费实用工具
Visual Studio Dev Essentials 是一个免费的开发者工具包,专为各种开发者设计,任何持有微软账户的人都可以使用。它提供了丰富的工具、云服务、软件下载和培训资源,促进了开发者的学习和实践。Dev Essentials 包含 Visual Studio Community、VS Code、Azure 免费账户及其他软件,还提供 Pluralsight 等学习内容,帮助开发者提升技能。这个项目适合新手、学生及爱好者,令他们能够自由探索技术。使用者可以在一个没有预算压力的环境中实验和学习。
MAF快速入门(19)给Agent Skill添加脚本执行能力
本文介绍了MAF开发多智能体工作流,重点讲解了Agent Skill的集成和脚本执行能力。文章区分了工具与技能,强调知识指导行为。通过一个IT助手Agent示例,展示了如何创建系统运维Skill及其可执行脚本的使用。具体流程包括基础检查、针对性诊断和分析报告,结合告警阈值提供系统健康检查方案。内容清晰易懂,适合开发者学习与应用。
Microsoft Agent Framework:基于 DelegatingAIAgent 与 ChatClientAgent 的核心架构和协同范式
此文探讨了生成式人工智能的架构演进,尤其是多智能体系统的发展。Microsoft Agent Framework的推出标志着企业AI应用开发的成熟。文中详细分析了ChatClientAgent和DelegatingAIAgent这两种核心类型及其协作机制,强调其对企业级AI应用的重要性。同时,回顾了Semantic Kernel和AutoGen的局限性,指出Agent Framework在抽象能力和架构设计方面的优势。通过整合各项技术,它提升了系统的可扩展性和复杂状态管理能力。整体而言,文章清晰地描述了AI技术的深刻变革,为相关开发提供了重要参考。
.NET 10 打造 OpenClaw Windows Node
该文章分析了人工智能系统如何从云端孤立变为深度集成的架构,重点介绍了微软专家和开发者共同开发的开源项目OpenClaw。该项目旨在解决Windows环境中AI智能体的交互问题,以C#语言和Windows UI框架构建,涵盖了多个技术和设计理念。文章详细探讨了项目的底层代码架构、状态感知机制及安全策略等,展示了其在操作系统级的创新设计和应用潜力,为未来环境智能技术奠定基础。
BMAD方法 v6 与 GitHub Copilot 在应用开发中的协同
在人工智能技术深入软件工程的背景下,行业正经历转型。大语言模型(LLM)应用使用非结构化的“氛围编码”模式,尽管提高了编码速度,却伴随系统性风险加剧,代码缺陷密度增加。为应对这一挑战,提出了规范驱动开发(SDD)方法论,强调规范的机器可读性和自动可验证性。BMAD-METHOD v6 框架结合 GitHub Copilot,促进.NET 应用开发中的协同,改进了需求分析和架构设计流程。BMAD v6 的新架构通过“步骤文件”和即时上下文加载机制,优化了开发过程中的上下文管理,解决了大量模型的固有问题。
EF Core 写入链路深拆:从 ChangeTracker 到 SQL Batch 的性能诊断与优化
这篇文章分析了实体变更到数据库写入过程中的性能问题。通过真实案例,指出订单系统在高峰期的性能瓶颈。文章强调应用层在处理大量数据时,频繁触发变更检测和逐条 SaveChanges 导致 SQL 碎片化,增加了 CPU 开销。解决方案包括优化批处理和合理配置 AcceptAllChanges。提供示例代码帮助开发者理解如何有效设置 DbContext,优化性能。文章内容技术深度足够,实用性强,结构清晰,具独创性,时效性良好,且可读性高。
终于等来了!OpenCowork 原生支持Mac啦,AI协作工具党狂喜
OpenCowork现在原生支持Mac,解决了安装过程中遇到的兼容性和依赖问题。该工具允许用户集成多种AI模型,并能自定义工具脚本,提升了AI协作效率。新增的智能澄清功能能主动询问用户需求,避免产生不必要的结果。该工具完全开源、不收费,基于Electron开发,轻量且易于使用。用户可通过直接下载安装包或自行构建来体验最新版本。开发团队认真对待用户反馈,持续迭代功能,值得推荐。
EF Core 并发冲突实战:乐观锁、RowVersion 与 DbUpdateConcurrencyException 怎么处理
本文讨论了EF Core中的并发冲突问题,特别是乐观锁的配置与处理。文章通过电商秒杀活动的实例,阐明了并发请求导致的库存失误以及丢失更新的现象。作者详细解析了EF Core的并发控制模型,指出在写入时通过令牌值检测并发冲突。提供了两种配置方式:推荐使用[Timestamp]/IsRowVersion(),与[ConcurrencyCheck]的字段级令牌。通过代码示例和DbUpdateConcurrencyException的结构,作者展示了如何有效处理并发异常。整体内容紧凑且信息量大。
Hagicode 多 AI 提供者切换与互操作实现方案
该文章探讨了hagicode项目如何实现多个AI提供者的无缝切换和互操作。重点在于核心架构设计与技术挑战,包括接口差异统一、流式响应处理及会话生命周期管理。文章介绍了使用提供者模式和工厂模式进行设计,通过IAIProvider接口和AIProviderFactory获得动态实例。关键组件如ClaudeCodeCliProvider和CodexCliProvider均采用C#实现。最终,文章为开发者提供了实践中的注意事项和架构方案。
C# 中 Excel 转 DataTable 的技术实现
在企业级 .NET 开发中,Excel 文件与 DataTable 的互转是一项常见技术需求。本文介绍如何使用 Free Spire.XLS 类库在 .NET 环境下高效实现 Excel 到 DataTable 的转换。通过 NuGet 安装相应类库后,文中提供了详细代码示例,展示加载 Excel 文件、选择工作表及调用方法完成转换的全流程。代码示例验证数据的成功转换并输出结果。还介绍了高级用法,可自定义转换范围和参数。这些内容对开发者有实际价值,清晰完整,易于实现。
Maomi.Core | 一个好用的模块化和自动服务注册框架
Maomi.Core是一个简洁的模块化和自动服务注册包,适用于控制台、Web和WPF项目。它基于ASP.NET Core,允许开发者在不同项目中创建模块类,自动加载和初始化模块。通过依赖注入,开发者可以轻松管理服务和配置。文章提供了具体的实现示例,包括创建模块和服务的步骤,旨在简化代码复杂度。文档链接和项目地址也一并提供,便于用户快速入手及执行。整体内容结构清晰,适合初学者。
HagiCode 平台的多 AI Provider 架构实践
本文介绍了HagiCode平台在Orleans Grain架构下,如何通过统一的IAIProvider接口集成不同AI工具iflow和OpenCode的技术方案。为了解决多种工具接入的复杂性,作者设计了统一接口,提供一致的调用方式。文中详细讨论了iflow基于WebSocket实现,与OpenCode用HTTP API的差异,展示了消息发送、响应流式处理及健康检查等方法。通过实际经验,HagiCode为用户提供灵活AI工具选择,简化了代码维护和扩展。整体架构设计清晰且实用。
.NET源码生成器之SyntaxTree踩坑
文章讨论了C#中的不可变性和类型系统的陷阱。首先,讲解了节点不可变的问题,介绍了如何通过变量接收添加参数后的结果。不可变集合也被提及,强调SyntaxTree中的集合初始化和添加操作无效。此外,提供了使用List保存临时结果的示例,最后组装SyntaxTree。文章还分析了预定义类型的使用,提醒SyntaxToken的限制和潜在异常。这些内容对深入理解C#编程具有一定的参考价值。
基于Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData构建向量搜索
本文讨论如何使用Microsoft.Extensions.AI和Microsoft.Extensions.VectorData构建向量搜索。首先,读者创建一个.NET控制台应用,生成嵌入内容并填充向量存储。然后,通过用户提示生成嵌入内容,并查询向量存储以显示相关结果。文中详细介绍了所需的NuGet包及其功能,包括OpenAI AI抽象、向量存储的CRUD操作、内存中向量存储类和配置实现。此外,定义了CloudServiceWiki类及其属性,并展示了如何创建云服务知识库的数据集合。
国际周报
国际周报未更新
今日人物
费南多·荷西·柯巴托(西班牙语:Fernando José Corbató,1926年7月1日—2019年7月12日),又译为费尔南多·考巴托,昵称为科比·柯巴托(Corby Corbató),生于加利福尼亚州奥克兰,美国计算机科学家,发展了分时操作系统,为1990年图灵奖得主。他曾领导了CTSS与Multics计划。