Kestrel: transporte do Libuv marcado como obsoleto
As versões anteriores do ASP.NET Core usavam o Libuv como um detalhe de implementação que definia como a entrada e a saída assíncronas eram executadas. No ASP.NET Core 2.0, um transporte alternativo baseado em Socket foi desenvolvido. No ASP.NET Core 2.1, o Kestrel passou a usar o transporte baseado em Socket
por padrão. O suporte ao Libuv foi mantido por motivos de compatibilidade.
Neste ponto, o uso do transporte baseado em Socket
é muito mais comum do que o transporte do Libuv. Consequentemente, o suporte do Libuv foi marcado como obsoleto no .NET 5 e será totalmente removido no .NET 6.0.
Nessa alteração, o suporte ao Libuv para novas plataformas de sistema operacional (como o Windows Arm64) não será adicionado no período do .NET 5.
Para discussão sobre problemas de bloqueio que exigem o uso do transporte do Libuv, confira o problema do GitHub em dotnet/aspnetcore#23409.
Versão introduzida
5.0 versão prévia 8
Comportamento antigo
As APIs do Libuv não estão marcadas como obsoletas.
Novo comportamento
As APIs do Libuv estão marcadas como obsoletas.
Motivo da alteração
O transporte baseado em Socket
é o padrão. Não há nenhuma razão convincente para continuar usando o transporte do Libuv.
Ação recomendada
Descontinue o uso do pacote Libuv e dos métodos de extensão.
APIs afetadas
- 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