У меня небольшой рабочий веб-сервис REST, который доставляет файл. Есть ли недостаток в использовании FileStream напрямую или желательно (и почему) сначала записать файл в MemoryStream?
[OperationContract]
[WebGet]
public Stream GetFile(string filepath)
{
//...
Stream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read);
return stream;
}
Я думаю, могут ли быть случаи, когда для медленного соединения или по какой-либо причине это может вызвать проблемы?
//edit, как было предложено ниже: обтекание потока в блоке using() не работает.
В принципе нет недостатков, хотя есть некоторые ограничения, скажем, когда вы используете привязку базы данных сеанса, как описано в
Большие данные и потоковая передача
Что касается потока файлов, из-за вращательного характера жесткого диска, одновременный доступ может замедлить работу, если у вас нет RAID. Итак, вы можете рассмотреть некоторые решения кэширования, какую-то буферизацию?