Posts
879
Practical notes on AI assistants, software architecture, and developer tooling.
Posts
879
Tags
517
Featured
0
依赖倒置原则提醒我们,业务逻辑不该直接绑在数据库、日志、外部 API 这类具体实现上。本文用 C# 和 .NET 10 示例说明如何引入接口、构造函数注入和 DI 容器,让代码更容易替换、测试和维护。
Continue reading
很多 .NET API 的容量判断只看 CPU 和内存,容易错过连接池、队列、p95 延迟和写入背压这些更早暴露的问题。本文整理一套可复测的容量规划流程,并用原文实验项目说明如何跑 k6 压测、观察 429 与队列滞后。
备忘录模式是 GoF 行为型模式中专门解决状态保存与恢复的那一个。本文从三个角色(Originator / Memento / Caretaker)拆解,覆盖基础实现、撤销重做、序列化快照和嵌套类封装,附带完整 C# 代码。
中介者模式用起来不难,难的是用久了不烂。本文整理 6 条 C# 落地实践:接口隔离、按域拆分、避开上帝中介者、强类型通知、错误处理和测试策略,帮你在项目增长时守住可维护性。
单一职责原则(SRP)是 SOLID 的起点。本文从 Actor 视角重新解读 SRP,结合反例拆解和重构代码演示,讲清楚为什么一个类只应该为一个角色而变,以及如何在 .NET 10 的日常开发中落地。
真实业务流程大多跨多个步骤:下单、扣库存、收款、发通知,每个环节都可能失败或超时。Dapr Workflow 让你用普通 C# 代码编排这些步骤,Dapr 负责把每一步持久化到状态存储中——进程崩溃后重启,工作流会从断点继续执行,不会重复扣款。本文带你从零搭建一个订单处理工作流,并用 .NET Aspire 统一管理 Dapr sidecar、Valkey 状态存储和 Diagrid Dev Dashboard。
来自 Mattrx(110k MAU 的营销分析 SaaS)真实生产环境:10 个 async/await 错误如何造成线程池饥饿、死锁和延迟飙升。每个错误都包含可直接编译的错误代码、修复后的正确写法、dotnet-counters 诊断信号,以及修复后的量化指标——吞吐量从 1,200 RPS 提升到 4,500 RPS,p95 延迟从 8.2 秒降至 1.4 秒,两周工作零新基础设施。
大部分迭代器模式教程只演示玩具级别的集合遍历。本文从一个真实生产场景出发——遍历数千条数据库记录而不一次性加载到内存——带你从零构建同步与异步两个版本的分页迭代器,集成仓储模式与依赖注入,并配有完整的 xUnit 测试。看完可以直接用在自己的数据访问层里。
SOLID 不是背五个缩写,而是用来控制 C# 代码腐化的设计工具。本文结合 Dev Leader 的 .NET 10 参考文章,拆解 SRP、OCP、LSP、ISP、DIP 各自解决的问题、典型坏味道和落地边界。