Служба данных Restful WCF для обновления и загрузки больших файлов?

#asp.net-mvc #wcf #sql-server-2008 #filestream #wcf-data-services

#asp.net-mvc #wcf #sql-server-2008 #filestream #wcf-data-services

Вопрос:

Я подумываю о написании службы restful, которая способна загружать и транслировать большие видеофайлы (ГБ) (в будущем это могут быть не только видео, но и большие документы.

Я исследовал до сих пор, и что действительно имеет смысл для меня, так это использовать off:

Службы данных WCF и их реализация IDataServiceStreamProvider и на серверной части я хочу перенести большие файлы в SQL SERVER 2008, используя новый SQL Type FILESTREAM .Похоже, мне также пришлось использовать какой-то Win 32 API для доступа к файловой системе SafeFileHandle handle = SqlNativeClient.OpenSqlFilestream

Поскольку службам данных WCF нравится играть с Entity Framework или Linq-To-SQL, кто может быть реализацией потоковой передачи и поддерживается ли тип Filestream SQL Server?

это план, но я не знаю, как собрать его воедино… Я думал о разделении больших файлов на фрагменты и о возможности возобновления и отмены.

Для загрузки: я не уверен, что нужно использовать элемент управления загрузкой silverlight или какой-либо другой отличный инструмент ajax.

Кто-нибудь может указать мне правильное направление здесь … или вы думаете, что это правильный путь? Мысли, ссылки? было бы здорово…

Ответ №1:

Я сделал кое-что, из-за чего отправлял огромные файлы данных. Я использовал эти два примера, чтобы помочь написать свой код

http://msdn.microsoft.com/en-us/library/ms751463.aspx

http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx

Это очень важный номер, который нужно знать 2147483647

Ответ №2:

silverfighter: Только на IIS6 я не смог настроить службы данных WCF для отправки потока размером более 30 МБ по сети. Я полагаю, что она не предназначена для больших потоковых транзакций. Просто попробуйте загрузить файл размером 27 МБ и проследите за соответствующим процессом w3wp, вы будете удивлены объемом потребляемой памяти.

Решением было создать приложение-службу WCF, размещенное в собственном процессе w3wp и отвечающее только за загрузку через WCF. я рекомендую вам использовать следующий проект http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

Надеюсь, что вышесказанное может помочь.

Ответ №3:

Не связано с вопросом, но связано с ответом @Houssam Hamdan :

Ограничение в 30 МБ связано не со службами данных WCF, а с ограничением IIS, которое можно изменить с помощью файла конфигурации и настроек IIS и перехвата некоторых исключений, создаваемых IIS