|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Люди добрые, поможите морской свинке, то бишь девушке-программистке :) Пытаюсь протащить крупные файлы между клиентом и WCF-сервисом, работающим под IIS. В сети есть хорошая статья про большинство подводных камней ( wcf-streaming-upload-files-over-http ), но, к сожалению, мой пример, реализованный в соответствии с таким шаблоном, работать не хочет. После добавления в веб.конфиг указанного параметра Код: plaintext 1. 2. 3.
Я так понимаю, что где-то на сервере осталось ограничение на максимальный размер принимаемого потока, но где еще, кроме веб.конфига? Смотрела еще и machine.config, но ничего похожего на 45 Кбайт не нашла. Помогите, пожалуйста :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2008, 15:37 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Привет морская черепаха! Помогаю. Нужно использовать transferMode="Streamed" , который не с каждым биндингом пойдёт. У меня реализовано с basicHttpBinding. Загружаю 2 файла 320 и 486 Кб. Сервис Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88.
Клиент Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124.
_____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 08:01 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Возможно есть ещё варианты загрузки больших файлов, типа Chunks. Благодарности не надо. Высылай фото со своим телефоном на мой email. _____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 08:11 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
buredВозможно есть ещё варианты загрузки больших файлов, типа Chunks. Собственно, streamed и переводит на chunked-передачу. Другое дело, что: - выбор как передавать (одним запросом или "цепочкой") делает отправляющая сторона (т.е. сервер не сможет заставить клиента выбрать способ передачи). Кстати, как в этом случае поступает WCF я не изучал - главное, что streamed решает проблему... - не все реализации http правильно поддерживают chunked-запросы (например, мы столкнулись с тем, что в WinHTTP есть только возможность принимать, но не отправлять в chunked). Ну это так, отвлеченные замечания, а вообще, да, нужно поробовать изменить transferMode. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 10:03 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Эх, ребята:) Если бы все было так просто... Со времени подачи запроса я и сама уже поразбиралась, и вот какие интересные моменты всплыли: 1) При отдельно стоящем WCF-сервисе стриминг идет отлично в обе стороны. 2) При попытке запихать сервис под IIS, существует такая описанная проблема: стриминг НА сервер работает. Стриминг С сервера - не работает. IIS упорно буфферизует поток и заставить его стриминговать - нереально... При передаче файликов метров по двести очень хорошо видно, как это всё лезет через память :) Вот что есть по этому поводу в сети: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2108291&SiteID=1 В самом последнем посте написано примерно так: У вас есть два варианта: 1. Забить на IIS и использовать WCF-сервис под своей виндослужбой. 2. Забить на WCF и использовать IIS с веб-сервисами. Попробовала я второй вариант, несильно меня порадовало, как он при сериализации все это дело пакует, и в результате было решено писать ftp-сервер и не мучиться. В любом случае, большое спасибо за ответы и за код! P.S. а фото высылать мне муж не разрешает :D ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 14:48 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pigЭх, ребята:) Если бы все было так просто... Со времени подачи запроса я и сама уже поразбиралась, и вот какие интересные моменты всплыли: 1) При отдельно стоящем WCF-сервисе стриминг идет отлично в обе стороны. 2) При попытке запихать сервис под IIS, существует такая описанная проблема: стриминг НА сервер работает. Стриминг С сервера - не работает. IIS упорно буфферизует поток и заставить его стриминговать - нереально... При передаче файликов метров по двести очень хорошо видно, как это всё лезет через память :) Вот что есть по этому поводу в сети: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2108291&SiteID=1 В самом последнем посте написано примерно так: У вас есть два варианта: 1. Забить на IIS и использовать WCF-сервис под своей виндослужбой. 2. Забить на WCF и использовать IIS с веб-сервисами. Попробовала я второй вариант, несильно меня порадовало, как он при сериализации все это дело пакует, и в результате было решено писать ftp-сервер и не мучиться. В любом случае, большое спасибо за ответы и за код! P.S. а фото высылать мне муж не разрешает :D ишь, не разрешает... пусть тогда муж своё фото ему вышлет ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 16:15 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pigи в результате было решено писать ftp-сервер и не мучиться. А вы осилите? Мне самому нужен, да вот только не потяну я это дело, а штука полезная ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 17:46 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Я, правда, не знаю как работает WCF, но разбиение файла на фрагменты не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 17:51 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Dmitdd[quot guinea-pig]и в результате было решено писать ftp-сервер и не мучиться. а что мешает вам использовать хэндлер, который будет отдавать файл методом TransmitFile или порциями, а на клиенте запрашивать файл с помощью HttpRequest? И второй хэндлер, который будет принимать файл, а клиент его частями отдавать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 17:56 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
>Dmitdd Это уже будет не вэб-сервис _____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 18:01 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Dmitdd , с нуля, может, и не осилю, а с шаблоном точно не пропаду) Если вам тоже нужно что-то подобное, загляните сюда (фтп-сервер на дотнете с исходниками): http://sourceforge.net/project/showfiles.php?group_id=107551 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 19:04 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Нашёл пример реализации chunking на WCF. Качал когда-то на netfx3.com, но сейчас не нашёл. В папке клиента удалены 2 файла image.bmp и echoed_file (без расширения), чтобы влезло на форум. _____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 05:57 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Какая-то вспомогательная байда ещё была. _____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 06:02 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
bured>Dmitdd Это уже будет не вэб-сервис _____________________________________________ Death to Videodrome, long live the New Flesh! Так FTP-сервер - это уже тоже не вэб-сервис. Я предложил более простую альтернативу ему, что поделаешь, если WCF не работает как надо bured,а когда вы спите? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 11:01 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pigЭх, ребята:) Если бы все было так просто... Со времени подачи запроса я и сама уже поразбиралась, и вот какие интересные моменты всплыли: Понятно. Печально... Сами мы использовали только вариант работы из службы. guinea-pig Вот что есть по этому поводу в сети: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2108291&SiteID=1 А вы не пробовали рекомендацию постом выше о включении chunked-кодирования на IIS? У меня самого сейчас нет под руками готового примера чтобы проверить, а делать нет времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 17:18 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Госпожа guinea-pig не предоставила подробной информации о: binding, maxBufferPoolSize, maxReceivedMessageSize, <readerQuotas... Думаю не всё так плохо. А на форумах MSDN ошибаются не реже, чем здесь. :) _____________________________________________ Death to Videodrome, long live the New Flesh! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 17:26 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Мне кажется, мы немного разошлись в смысле обсуждаемого:) Со стримингом в самом WCF - все нормально. Источник проблемы - именно IIS . А конкретно то, что ему нельзя нормально сказать использовать стриминг. Он не понимает и продолжает буфферизовать при отдаче. Мои конфигурационные файлы (под IIS, не при отдельно стоящем сервисе WCF): Клиентский app.config: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Серверный web.config: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
bostream.svc Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 18:25 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Насчет чанкинга посмотрю, хотя уже почти решили остановится на фтп-сервере. Честно говоря, к использованию IIS отношусь прохладно, особенно после прочтения таких милых замечаний о работе ASP.NET: Микрософт Теоретически максимальный размер загружаемого файла является достаточно большим. Однако из-за наблюдения за состоянием системы ASP.NET в ASP.NET невозможно загружать очень большие файлы. Рабочий процесс ASP.NET имеет виртуальное адресное пространство размером 2 гигабайта (ГБ). Однако рабочий процесс ASP.NET использует лишь немногим менее 1 ГБ из-за наблюдения за состоянием системы и фрагментации памяти. В процессе загрузки ASP.NET загружает файл целиком в память, прежде чем пользователь сможет сохранить файл на диск. Поэтому процесс может перезапуститься из-за атрибута memoryLimit тега processModel в файле Machine.config. Значение атрибута memoryLimit представляет долю в процентах физической памяти, которую рабочий процесс ASP.NET может использовать до автоматического перезапуска процесса. Перезапуск процесса предотвращает утечки памяти, которые могут привести к сбою ASP.NET или к тому, что процесс перестанет отвечать на запросы. Кроме того, на максимальный размер загружаемого файла влияют также и другие факторы. Такими факторами являются объем доступной памяти, объем свободного места на жестком диске, скорость процессора и текущий сетевой трафик. При регулярной загрузке файлов рекомендуется использовать файлы, максимальный размер которых находится в диапазоне от 10 до 20 мегабайт (МБ). Если файлы загружаются редко, максимальный размер файла можно установить равным 100 МБ. Примечание. В ASP.NET можно загружать файлы, размер которых превышает 100 МБ . Однако рекомендуется придерживаться максимальных размеров загружаемых файлов, приведенных в данной статье. Чтобы более точно определить размеры файлов, выполните нагрузочное тестирование на компьютерах, подобных тем, которые будут использоваться в рабочей среде. Мне казалось, что утечки памяти обычно предотвращают на стадии разработки, а не в процессе работы готового продукта :) Взято отсюда: http://support.microsoft.com/kb/323245/ru# ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2008, 18:38 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pigНасчет чанкинга посмотрю, хотя уже почти решили остановится на фтп-сервере. Не надо на нём останавливаться. Это же УУУУЖАС, этот самый фтп. Вот вам советовали: buredВозможно есть ещё варианты загрузки больших файлов, типа Chunks. Вот так и делайте. Я так сделал и файлы до 1Гб(дальше не тестировал, т.к. не надо в моём случае) передаются на сервер и наоборот на клиента без проблем. Есть ещё NeatUpload, он тоже бааальшие файлы без проблем передаёт. ФТП - ошибочный путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2008, 15:49 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
M234 ФТП - ошибочный путь. Стало интересно, чем именно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2008, 15:56 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pig M234 ФТП - ошибочный путь. Стало интересно, чем именно :) "Террористы снова захватили самолёт. Стабильности нет." (с)И так все знают. Ненадёжно. Скорость меньше. Геморроя больше. Полный кошмар если надо передавать очень много очень маленьких файлов.(оч. большие накладные расходы). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2008, 16:15 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
guinea-pigЛюди добрые, поможите морской свинке, то бишь девушке-программистке :)Помогите, пожалуйста :) Получилось таскать большие файлы через WCF & IIS? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 15:04 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Получилось? guinea-pigЛюди добрые, поможите морской свинке, то бишь девушке-программистке :)Помогите, пожалуйста :) Получилось таскать большие файлы через WCF & IIS? Перетащить-то получилось. Затырк к том что сообщение буферизуется (причём в обе стороны). Стандартными способами это никак не решается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2008, 17:45 |
|
WCF и Streaming больших файлов
|
|||
---|---|---|---|
#18+
Я не понимаю, зачем Вам тут IIS сдался? Активируйте web-сервис как службу Windows, там точно все работает как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2008, 18:04 |
|
|
start [/forum/topic.php?fid=19&msg=35132006&tid=1397611]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 288ms |
0 / 0 |