三个结构相似的对外接口共用一条"生成脚本→下发→轮询结果"链路。本文以真实代码为例,讲清长轮询的工程细节:校验前置避免错误混进循环、总超时/固定间隔/连续失败阈值三要素、Task.Delay(Timeout.Infinite)+CancelAfter 实现间隔不漂移的可取消等待,以及 when 异常过滤器如何区分"到点唤醒"与"外部取消"。
标签: #异步编程
本文从 SwitchData 项目源码出发,手把手拆解一个生产可用的 C# Telnet 客户端。核心亮点:Telnet 协议状态机解析器(逐字节处理 IAC/DO/WILL/SB/SE 协商)、SemaphoreSlim 双锁全双工设计、复用 Encoder 解决 UTF-8 多字节截断、IAsyncDisposable 异步资源管理。附带实战踩坑:登录残留清除、VT100 控制序列过滤、ORDP 网关并发限流。
接口审计日志选中间件还是 ActionFilter?中间件拿不到绑定后的参数和返回值,IAsyncActionFilter 正好卡在两者之间。本文基于真实项目代码,拆解 DisplayAttribute 生成双语操作名、入参敏感字段脱敏、出参反射递归截断、fire-and-forget 异步落库四大实现要点,并总结未观察异常、白名单跳过等踩坑细节。
从控制器出口到上游读取,完整拆解 ASP.NET Core SSE 流式接口的落地实现:IAsyncEnumerable 的异步迭代器契约、ResponseHeadersRead 让流式真正生效、Content-Type 嗅探与降级、阶段推进式 JSON 行解析,以及取消传播、资源释放与落库时机,最后附 11 条踩坑清单。
在 C# 里调用 Python、Shell、Java 脚本看似简单,落地却总踩同一个坑:大输出死锁、脚本卡死没有超时、子进程变孤儿。本文从真实的 ScriptHelper 实现出发,讲清 BeginOutputReadLine 防死锁的原理、CancellationTokenSource 控制超时的写法、Kill(true) 终止进程树的必要性,以及中文输出乱码与退出码读取时机的处理细节。
生产项目里接入 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 鉴权加固实战。
1 / 3
下一页