生产项目里接入 RabbitMQ 最烦的是每次发消息前都要写一长串 ExchangeDeclare + QueueDeclare + QueueBind 模板代码。本文从 SwitchData 项目源码中拆解一套声明式封装:用 [RabbitMqQueue] 特性标注消息模型类,用 ConcurrentDictionary 做拓扑缓存和反射缓存,用 SemaphoreSlim 做异步锁延迟创建单例连接,用泛型 SendMessageAsync<T> 让调用方只需要传消息对象本身。附带死信队列自动声明、延迟消息插件支持、手动 ACK/NACK 异常兜底、AutomaticRecoveryEnabled 自动重连等生产级能力,整个客户端不到 400 行却把 RabbitMQ.Client 裸 API 包装成了'一行代码发消息'的干净调用。
标签: #异步编程
本文从真实项目代码出发,带你从零实现一个完整的 C# Telnet 协议客户端。我们会拆开 Telnet 协议的每一个字节——IAC 转义、DO/DONT/WILL/WONT 协商、SB/SE 子协商、终端类型(VT100)握手、窗口大小声明——然后用一个有限状态机把它们串起来,最后用 SemaphoreSlim 保证异步读写的线程安全。完整代码来自生产环境,已稳定跑了一年多。
手写 ORM 或数据库抽象层时,缓存是性能关键。本文从 SwitchData 项目提取一套生产级缓存方案:用 record struct 做零 GC 组合键,ConcurrentDictionary 做线程安全容器,CacheKey 包含 ConnectionString 防止串库,命中缓存时必须 Clone 可变对象(DbParameter、DataTable、List)避免被业务代码污染。四句话总结一套可直接抄过去的 ORM 缓存基础设施。
Telnet 协议解析器是状态机设计模式的经典应用场景。本文从协议原理出发,用逐字节扫描 + 8 状态 FSM 的方式,完整实现 Telnet 四向握手协商(DO/DONT/WILL/WONT)、TerminalType/WindowSize 子协商、业务数据 IAC 转义还原,并与上层 Socket TelnetClient 配合实现零依赖、高性能的生产级 Telnet 协议栈。
从 SwitchData 项目的 NeTaskHangfireScheduler + JobWorkerService 出发,拆解一套完整的 Hangfire 数据库驱动定时任务体系:独立 Worker 进程架构、SQL Server 持久化配置、动态 Cron AddOrUpdate/RemoveIfExists、后台服务 SyncJobsAsync 自动同步、SlidingInvisibilityTimeout 幽灵任务防护、DisableGlobalLocks 多实例部署安全,以及 Dashboard 鉴权加固实战。
在 .NET 异步编程中,CancellationToken 让操作可以被外部打断,但如何同时响应业务取消和网络超时?本文从生产级 TelnetClient 入手,深入讲解 CancellationTokenSource.CreateLinkedTokenSource 组合超时和 IAsyncDisposable 异步资源管理两个高频但常被忽略的高级模式,附完整实战代码。
本文基于 SwitchData 项目中真实的 Telnet 客户端实现,深入剖析 Telnet 协议的 IAC 转义、DO/DONT/WILL/WONT 四向协商、子协商等核心机制,以及如何用状态机、异步 Socket、SemaphoreSlim 并发控制和 Decoder.Convert 连续解码来构建一个生产级 TelnetClient。
Telnet 协议看似简单,实际涉及完整的状态机、自动协商、子协商、VT100 终端控制序列、NUL 空字符、UTF-8 跨包解码等一堆细节。本文基于 SwitchData 项目中从零实现的 TelnetClient + TelnetProtocolParser + OrdpClient 四层架构,逐层拆解实现原理,并附带华为/中兴设备实战踩坑总结。
AsyncLocal<T> 是 .NET 异步编程中被低估的基础设施。本文通过 SwitchData 项目的完整实战,展示如何用 AsyncLocal 在请求管道中自动传递用户上下文,解释它与 ThreadLocal、ExecutionContext 的关系,并总结常见坑点与最佳实践。
本文基于 SwitchData 项目中的 JobWorkerService 实现,讲解如何组合使用 BackgroundService、PeriodicTimer 与 IAsyncEnumerable,构建一个可取消、可释放、资源友好的后台定时任务同步服务。
1 / 2
下一页