Есть ли недостатки в использовании FileStream непосредственно в веб-сервисе?

1

У меня небольшой рабочий веб-сервис 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() не работает.

Теги:
rest
wcf
filestream

1 ответ

1

В принципе нет недостатков, хотя есть некоторые ограничения, скажем, когда вы используете привязку базы данных сеанса, как описано в

Большие данные и потоковая передача

Что касается потока файлов, из-за вращательного характера жесткого диска, одновременный доступ может замедлить работу, если у вас нет RAID. Итак, вы можете рассмотреть некоторые решения кэширования, какую-то буферизацию?

  • 0
    Спасибо, что пролил некоторый свет на это. Возможно, я когда-нибудь настрою сеанс отладки, чтобы увидеть, когда файл действительно будет выпущен, то есть FileStream закрывается.
  • 0
    В том, как это включено в вашу ссылку ( msdn.microsoft.com/en-us/library/ms789010(v=vs.110).aspx ), они также используют простой FileStream - даже при потоковой передаче. Так что эта практика не может быть слишком плохой :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню