Лучшая практика / конфигурация WCF для потоковой загрузки - PullRequest
3 голосов
/ 08 марта 2012

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

Я исключил полную буферизацию файлов из-за использования памяти, которое может повлиять на сервер.

Какую привязку лучше всего использовать в WCF для безопасной потоковой загрузки? wsHttpBinding, basicHttpBinding, netTcpBinding и т. д.

и если это не слишком большая проблема, не могли бы вы написать несколько строк, говорящих о том, почему ваш ответ соответствует функциональности правильно? (поэтому я учусь на ответе)

Спасибо

ry4n

(в настоящее время работает над Vs2008)

Кроме того, в каком формате лучше всего будет возвращать информацию для использования на Android?

Обновление * Больше информации: Размеры файлов: от 1 МБ до 1 ГБ, несколько загрузок одновременно.

Какие конфигурации WCF мне следует использовать для достижения этой функциональности?

1 Ответ

1 голос
/ 26 июня 2012

Режим не в потоке : Большинство людей, знакомых с WCF, скажут NetTcp с TransferMode.Streamed, однако с этим возникают серьезные проблемы с производительностью. Потоковая передача позволит вам разместить больше одновременных загрузок, поскольку она не будет перегружать память сервера, но WCF имеет размер фрагментов потока, не поддерживающий переопределение, это замедляет загрузку, файл размером более 100 МБ будет значительно медленнее, чем любые другие методы.

Я предлагаю реализовать метод чанковки, такой как

byte[] GetBytes(int chunkNumber);

На стороне клиента вы можете сшивать куски при загрузке. Для обеспечения совместимости используйте HttpBinding, поскольку все, что вы передаете, - это байты, которые не повлекут за собой чрезмерных накладных расходов по сравнению с привязкой NetTcp.

...