Лучший способ переместить файлы различных размеров в медленной сети с помощью .net

StackOverflow https://stackoverflow.com/questions/2539459

Вопрос

Я строю удаленный клиент/сервер .NET, который будет передавать тысячи файлов различных размеров (от нескольких байтов до сотен MB), и я бы хотел отзыв о лучшем методе для достижения этого. Насколько я вижу, есть пара вариантов:

  • Сериализуйте весь файл в мой удаленный объект и передавайте вообще одновременно, независимо от размера. Это, вероятно, было бы самым быстрым, но сбой во время передачи требует, чтобы весь файл был переведен в переводол, без возможности возобновить.
  • Если размер файла больше, чем что-то маленькое (например, 4 КБ), разбейте его на куски 4 КБ и удалите их, повторно собрав на сервере. В дополнение к сложности этого, это медленнее из-за продолжающихся поездки в оба конца и подтверждения, хотя неудача какой-либо единой части не тратит много времени.
  • Включая что -то вроде FTP или SFTP -сервера с моим приложением - клиент уведомит сервер, который начинает использовать удаленное, загрузите файл, а затем используйте удаленное, чтобы уведомить об завершении. Я хотел бы сдержать все в моем приложении, вместо того, чтобы требовать отдельной службы FTP, но я открыт для этой опции, если это необходимо.
  • Используйте какой -то вид указанного TCP -соединения или WPF или какой -то другой метод передачи, который создан для обработки сбоев или способен выполнять какую -то контрольную точку/резюме.
  • Какие -нибудь другие мне не хватает?

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

Спасибо за ваш отзыв - я добавлю щедрость, чтобы получить некоторые рекомендации по поводу того, как люди выполнят это.

Это было полезно?

Решение

Биты (фон интеллектуальная служба передачи) является хорошим решением. Он имеет многолетний опыт встроенного в

Некоторые отправные точки

Другие советы

function identical(array) {
    for(var i = 0; i < array.length - 1; i++) {
        if(array[i] !== array[i+1]) {
            return false;
        }
    }
    return true;
}
.

Это то, для чего представлен сам TCP и настраивается в течение десятилетий или жестких испытаний. Удабление создано для небольших вызовов RPC, а не больших передачи файлов. Вы должны просто использовать гнездо TCP для передачи данных и позволить протоколам нижнего уровня беспокоиться о задержке, окнах передачи, MTU и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top