早期版本的 ASP.NET Core 使用 Libuv 作为如何执行异步输入和输出的实现详细信息。 在 ASP.NET Core 2.0 中,开发了一种基于 Socket 的替代传输。 在 ASP.NET Core 2.1 中,Kestrel 默认切换到使用 Socket基于的传输。 出于兼容性原因,维护了 Libuv 支持。
此时使用Socket传输比使用Libuv传输更为常见。 因此,Libuv 支持在 .NET 5 中标记为已过时,将在 .NET 6.0 中完全删除。
作为此更改的一部分,在 .NET 5 时间范围内不会添加对新操作系统平台(如 Windows Arm64)的 Libuv 支持。
讨论需要使用 Libuv 传输的阻塞问题,请参阅 GitHub 上的 dotnet/aspnetcore#23409 问题。
已引入的版本
5.0 预览版 8
旧行为
Libuv API 未标记为已过时。
新行为
Libuv API 标记为已过时。
更改原因
基于 Socket 的传输是默认设置。 不必继续使用 Libuv 传输。
建议的措施
停止使用 Libuv 包 和扩展方法。
受影响的 API
- WebHostBuilderLibuvExtensions
- WebHostBuilderLibuvExtensions.UseLibuv
- Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions
- Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.ThreadCount
- Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.NoDelay
- Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxWriteBufferSize
- Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxReadBufferSize
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.Backlog