用途:面向 .NET 高性能网络 I/O,讲解 System.IO.Pipelines 的使用模式,解决传统 Stream 代码中缓冲区手动管理、部分读取、层间内存拷贝和缺乏背压等问题。
主要能力:PipeReader/PipeWriter 读写模式与背压管理;基于 ReadOnlySequence 的协议解析器实现;Kestrel 集成与自定义传输;缓冲区管理与 SequencePosition 书签。Pipe 内部使用缓冲池、流控与完成信号连接生产者与消费者。
必要用法:写入端先调用 GetMemory/GetSpan,写入后以准确字节数调用 Advance,再调用 FlushAsync 使数据对读取端可见并遵循背压;读取端每次 ReadAsync 后必须调用 AdvanceTo,分别传入已消费与已检查位置,已消费位置释放内存,已检查位置避免忙等;不得在 AdvanceTo 后访问 ReadResult.Buffer。背压通过 PipeOptions 的 pauseWriterThreshold、resumeWriterThreshold、minimumSegmentSize、useSynchronizationContext 配置,默认分别为 65536、32768、4096、false。协议解析可用长度前缀或分隔符方式,复杂解析建议用 SequenceReader<byte>。可通过 PipeReader.Create/PipeWriter.Create 适配现有 Stream,Kestrel 以 IDuplexPipe 暴露连接传输。
适用场景:自定义 TCP 服务器、WebSocket 处理器、命名管道协议、Kestrel 连接中间件等需要解析、背压或零拷贝切片的场景。
限制:简单流到流复制应使用 Stream.CopyToAsync;异步基础、基准测试与 Span 微优化、文件 I/O 不在本技能范围内,分别参见相关技能。资料未提供收费、价格、平台与效果信息。