В ASP.NET есть три варианта (насколько мне известно) записи непосредственно в буфер ответа.
Учитывая следующие данные:
var str = "Hello World";
var bytes = Encoding.UTF8.GetBytes(str);
Мы можем записать в буфер ответа, используя:
// method 1
await HttpResponse.WriteAsync(str);
// method 2
await HttpResponse.Body.WriteAsync(bytes);
// method 3
await HttpResponse.BodyWriter.WriteAsync(bytes);
Каковы различия между ними, если таковые имеются?





Ну, HttpResponse.WriteAsync на самом деле метод расширения,
а текущая реализация использует нижний писатель тела. Таким образом, это эквивалентно использованию BodyWriter.WriteAsync. Он также заранее выполняет некоторую дополнительную работу, например, запускает ответ, если вы еще не позвонили StartAsync.
Итак, у нас остается Body.WriteAsync. Body — это поток, в отличие от BodyWriter, который является конвейером. Как в документации говорится:
Трубопроводы рекомендуется размещать над ручьями. Потоки проще использовать для некоторых простых операций, но конвейеры имеют преимущество в производительности и их проще использовать в большинстве сценариев.
Поскольку потоки были первыми, они до сих пор поддерживаются. Но они хотят, чтобы вы использовали конвейеры. Однако потоки проще использовать, особенно для простых сценариев.
Итак, ваш выбор.