асинхронный стримминг при отдаче данных
От: MadHuman Россия  
Дата: 22.06.18 14:41
Оценка:
Всем привет!

Нужно организовать отдачу клиенту (браузеру) потенциально большого объёма данных, генерящихся на лету (например это могут быть данные в csv формате).
Сами данные формируются на лету и допустим есть IEnumerable<string> при переборе которого они и формируются.
Как лучше это сделать правильно?
По умолчанию, если писать Response.Write — то все данные будут идти в буфер и при большом их количестве мы либо влетим в OutOfMemoryException либо выжрем слишком много памяти — вообщем невариант.
Если в asp.net отключить беферизацию вывода, то при записе в Response данные сразу будут посылаться в сеть и мелкими кусочками? имеет ли смысл организовывать свою буферизацию (чтоб при достижении какого-то объема данных — они посылались клиенту)?
И как можно делать асинхронно? так как генерация и посылка данных могут занять достаточно много времени, то поток, обрабатывающий реквест, большую часть времени будет ждать сеть...

Кто решал подобную задачу, или имеет представление как можно, поделитесь знанием...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.