Posts
798
Practical notes on AI assistants, software architecture, and developer tooling.
Posts
798
Tags
451
Featured
0
从 .NET 6 到 .NET 10,LINQ 陆续增加了 15 个方法——Chunk、MinBy、CountBy、AggregateBy、Index、LeftJoin 等,这篇文章逐一介绍它们解决了什么问题,以及如何在实际代码中替换掉过去的样板写法。
Continue reading
从 .NET 6 到 .NET 10,LINQ 陆续增加了 15 个方法——Chunk、MinBy、CountBy、AggregateBy、Index、LeftJoin 等,这篇文章逐一介绍它们解决了什么问题,以及如何在实际代码中替换掉过去的样板写法。
已有 PostgreSQL?不用再部署 Pinecone 或 Qdrant。pgvector 是一个 PostgreSQL 扩展,让你直接在现有数据库里存储向量并做语义搜索。本文带你用 .NET Aspire、Dapper 和 Microsoft.Extensions.AI 跑通完整流程:启用扩展、创建向量列、生成 embedding、用余弦距离做相似性查询。
几乎每个 .NET 项目都有同一个隐患:DateTime.Now 散落在服务、验证器和业务规则里。表面无害,实际上让时间相关逻辑无法正确测试。本文介绍两种解决方案——自定义 IDateTimeProvider 接口和 .NET 8 内置的 TimeProvider——让时间成为可注入的依赖,配合 FakeTimeProvider 轻松测试订阅到期、试用结束等真实场景。
架构规则写在文档里,六个月后就会被违反。本文介绍用 ArchUnitNET 把层依赖、命名规范、类共位、可见性和第三方库边界这 5 类约定写成自动化测试,让 CI 来守护你的架构意图,而不是靠 Code Review 碰运气。
每次新模型发布,大家都在问哪个更聪明、更快。但在 VS Code 里,模型只是其中一层。真正决定你体验的是 coding harness——负责组装上下文、暴露工具、驱动 agent 循环的系统层。这篇文章来自 VS Code 团队,解释了这套机制是怎么工作的,不同模型为何需要不同配置,以及他们如何用 VSC-Bench 在模型上线前做产品级评测。
SignalR 横向扩展后,每个实例只知道自己的连接,消息很容易发不到目标客户端。本文用 Redis backplane 串起多实例消息路由,并讲清楚 sticky sessions、ChannelPrefix、Redis 故障丢消息和 Azure SignalR Service 的取舍。
架构演进应跟随可测量的痛点,而非流行趋势。本文通过 Northwind Pay 的真实故事,详解 .NET 系统从单体经模块化单体到选择性微服务的完整路线图,包括边界设计、Outbox 模式、CQRS 读写分离和迁移路线图。
全面讲解 C# LINQ 的各类连接操作——从 Join 内连接、GroupJoin 分组连接,到 .NET 10 新增的 LeftJoin 与 RightJoin,再到 Zip 位置配对。每种操作对应 SQL 场景,含完整代码示例。
LINQ 聚合操作覆盖从计数、求和到自定义折叠的完整场景。本文结合 Order/Product/SalesData 领域模型,演示所有聚合操作符的用法,重点解析 Count vs Any 性能陷阱、.NET 6 新增的 MinBy/MaxBy 如何单次遍历直接拿到元素,以及 Aggregate 如何在一次遍历中同时计算多个统计值。
LINQ 的八个集合操作方法让去重、合并、取交集、取差集变得简洁可读。本文结合 Product/Employee 领域模型,完整演示四个经典操作及 .NET 6 新增的 DistinctBy、UnionBy、IntersectBy、ExceptBy,重点对比新旧写法差异,帮你彻底告别 IEqualityComparer 样板代码。
.NET 11 对 System.Diagnostics.Process 进行多年来最大的一次更新,新增一行代码捕获进程输出的高层 API,彻底解决管道死锁问题,同时带来句柄继承控制、进程生命周期管理、NativeAOT 体积缩减以及最高 98 倍的性能提升。