Pipe——高性能IO
System.IO.Pipelines 是一个新的库,旨在简化在.NET中执行高性能IO的过程。它是一个依赖.NET Standard的库, 适用于所有.NET实现 。 Pipelines诞生于.NET Core团队,为使Kestrel成为业界最快的Web服务器之一。最初从作为Kestrel内部的实现细节发展成为可重用的API,它在.Net Core 2.1中作为可用于所有.NET开发人员的最高级BCL API(System.IO.Pipelines)提供。 它解决了什么问题? 为了正确解析Stream或Socket中的数据,代码有固定的样板,并且有许多极端情况,为了处理他们,不得不编写难以维护的复杂代码。 实现高性能和正确性,同时也难以处理这种复杂性。Pipelines旨在解决这种复杂性。 有多复杂? 让我们从一个简单的问题开始吧。我们想编写一个TCP服务器,它接收来自客户端的用行分隔的消息(由 \n 分隔)。(译者注:即一行为一条消息) 使用NetworkStream的TCP服务器 在Pipelines之前用.NET编写的典型代码如下所示: async Task ProcessLinesAsync(NetworkStream stream) { var buffer = new byte[1024]; await stream.ReadAsync(buffer, 0,