#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