Я сам неравнодушен к варианту Flash / Silverlight (обычно Silverlight, так как он прекрасно интегрируется с .NET.) Оба варианта обеспечивают стабильный и быстрый механизм загрузки файлов, который не вешает страницу, над которой вы работаете, позволяя пользователь может выполнять другие задачи во время загрузки (при условии, что эти задачи не переносят их на другую страницу).
Действительно отличный пример сервиса загрузки на основе Flash, который позволяет одновременно загружать несколько файлов, находится на странице отклонений загрузки DeviantArt.com. Вы можете выбрать файл для загрузки, который затем будет передан в фоновом режиме любым способом, который работает для вашего браузера (в некоторых случаях, я думаю, что создается скрытый iframe, который отправляет запрос файла, если Flash недоступен), и вы получаете значок файла с индикатором асинхронного хода выполнения для каждого загружаемого файла.
Одним из дополнительных преимуществ Flash / Silverlight является то, что вы можете взаимодействовать с файлом на стороне клиента перед его отправкой, что позволяет выполнять такие действия, как проверка того, что данные не являются вредоносными программами, сценариями и т. Д. Это может быть очень сложно или невозможно с классической загрузкой файлов и javascript из-за ограничений разрешений, которые обычно присутствуют в веб-браузерах в эти дни (по уважительной причине.)
Я бы сказал, что для вашего приложения Silverlight будет лучшим вариантом для взаимодействия с вашими веб-сервисами (я предполагаю, что классические сервисы ASMX, но если они WCF, Silverlight также имеет отличную поддержку WCF).