День 1514. #ЧтоНовенького
Новинки ASP.NET Core 8 Превью 2. Продолжение
Начало
3. Новый интерфейс IResettable в ObjectPool
Microsoft.Extensions.ObjectPool обеспечивает поддержку объединения экземпляров объектов в памяти. Приложения могут использовать пул объектов, если выделение или инициализация значений требуют больших затрат.
В превью 2 упрощено использование пула объектов путём добавления интерфейса IResettable. Повторно используемые типы часто необходимо возвращать в состояние по умолчанию между использованиями. Типы IResettable автоматически сбрасываются при возврате в пул объектов.
public class ReusableBuffer : IResettable
{
public byte[] Data { get; }
= new byte[1024 * 1024]; // 1 MB
public bool TryReset()
{
Array.Clear(Data);
return true;
}
}
var bufferPool = ObjectPool.Create<ReusableBuffer>();
var buffer = bufferPool.Get();
try
{
await ProcessDataAsync(buffer.Data);
}
finally
{
// Данные автоматически сбрасываются
bufferPool.Return(buffer);
}
4. Повышение производительности передачи по именованным каналам
В превью 1 была добавлена поддержка использования именованных каналов в Kestrel. Именованные каналы — это популярная технология для построения межпроцессного взаимодействия (IPC) между приложениями Windows. Теперь вы можете создать сервер IPC, используя .NET, Kestrel и именованные каналы.
var builder =
WebApplication.CreateBuilder(args);
builder.WebHost
.ConfigureKestrel(opts =>
{
opts.ListenNamedPipe("MyPipeName");
});
Подробнее про межпроцессное взаимодействие с помощью gRPC в документации.
В превью 2 улучшена производительность соединения именованного канала. Теперь принимаются параллельные соединения и повторно используются экземпляры NamedPipeServerStream.
Источник: https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-2/