Подтвердить что ты не робот

Надежный и быстрый способ передачи больших файлов через Интернет

Я работаю с настройкой, включающей множество клиентских ПК и некоторых серверных машин. Мне нужно организовать надежный и быстрый способ передачи файлов между этими ПК, который будет инициирован приложениями С#, работающими на обоих. Любой клиент может отправлять/получать данные с любого сервера. Возможные варианты:

  • FTP - используйте FtpWebRequest или SOSFTP для загрузки файлов на FTP-сервер. Сервер проверяет наличие новых файлов в своей файловой системе и выполняет необходимые действия.

  • SCP - Безопасная передача файлов. Используется так же, как FTP, но повышает безопасность между машинами. Вероятно, медленнее FTP.

  • DropBox/Box.Net. Используйте онлайн-решение облачной памяти с библиотекой, такой как SharpBox. Может быть бесплатным/платным. Может быть менее безопасным, учитывая, что у указанной стороны есть ваши файлы.

  • UDP - используйте библиотеку, такую ​​как EME или GoAnywhere для передачи данных с ПК на ПК непосредственно через UDP. Вероятно, быстрее, но, вероятно, более ненадежным, поскольку использует пользовательскую технологию.

Что вы рекомендуете?

4b9b3361

Ответ 1

У меня есть супер-предвзятое мнение, исходящее от компании, которая делает программное обеспечение для передачи файлов, поэтому я помещаю отказ от ответственности и центр, чтобы взять все, что я говорю, с солью.; -)

Если вы делитесь очень большими файлами с несколькими конечными точками, вам хорошо обслуживается одна из двух вещей:

  • Решение MFT (управляемая передача файлов)
  • Продукт или API, который использует протокол на основе протокола UDP

1 - Решения MFT обычно используют перенос на основе TCP (например, FTP) в качестве транспортного механизма, но обычно включают дополнительные механизмы надежности, не найденные в чистом TCP. Они также будут включать инструменты для планирования и организации передач между многими конечными точками. Насколько я знаю, нет никаких значительных решений MFT, которые доступны бесплатно или дешевле, но существует множество решений MFT корпоративного уровня там, где ожидаются затраты.

2 - В течение нескольких лет некоторые компании создали собственные механизмы контроля и надежности в протоколах, построенных поверх UDP. Создавая этот настраиваемый уровень, UDP (который не имеет собственной надежности) фактически становится БОЛЕЕ надежным и может иметь больше возможностей, чем перенос на основе TCP, когда он когда-либо имеет, в то время как на него не оказывают неблагоприятного влияния потери и задержки пакетов (читайте так: обычно много более высокая скорость передачи). Этот протокол не обязательно не зависит от MFT (он будет по своей природе иметь некоторые характеристики MFT, а поставщики могут испечь его в MFT-решении), но потенциально может использоваться для его необработанного протокола (через API) и без всех атрибутов пользовательского интерфейса традиционного "Решение MFT".

Там есть протоколы передачи файлов с открытым исходным кодом на основе UDP, такие как Tsunami или UDT. Они не особенно хорошо укомплектованы или богаты функциональностью (некоторые из моих уклонений!), И, насколько я знаю, ни одна из них не имеет родной библиотеки С#. Однако в том же примечании ни одно коммерческое предложение, о котором я знаю, не имеет собственной библиотеки С#, хотя доступны обертки.


Если виды перечислений, которые вы описываете, будут регулярной и постоянной частью повседневной деятельности организации, мне трудно рекомендовать что-либо помимо того, о чем я упоминал выше. И чтобы сделать это "правильно" (или, по крайней мере, без нетривиального проекта разработки), вам, вероятно, понадобится коммерческое решение.

Ответ 2

Мне было интересно, что здесь упоминается GoAnywhere. Он считается решением MFT. Я использовал MFT несколько лет и нашел, что это очень эффективно в том, что вы здесь описываете, не имея необходимости писать код С#. Это не бесплатно, но я думаю, что это стоит того.

Он позволяет вам автоматизировать и запланировать различные протоколы передачи, такие как FTP, SFTP, FTPS, PGP, HTTPS, а также через сетевые подключения к нескольким общим компьютерам и серверам. MFT также позволяет мне работать над форматированием изменений, если мне нужно массировать данные для работы с различными приложениями. Запускайте запросы, чтобы извлекать только нужные мне данные из разных источников данных. Он также регистрирует все транзакции, чтобы я мог проверить, что он отправил файлы, и может быть настроен на оповещение меня по электронной почте, если есть какие-либо ошибки. Я нашел, что это идеальный инструмент для всех моих требований к передаче данных.

Я НЕ являюсь сотрудником любых программных компаний MFT, но очень счастливым клиентом, который любит продукт. Это намного облегчило мою трудовую жизнь. Там отличный пример того, как он помогает ИТ-специалисту здесь, http://blog.linomasoftware.com/2012/01/24/managed-file-transfer-changed-my-life/

Ответ 3

Вы можете использовать streaming функцию WCF

Ответ 4

Как я понимаю, что вы написали, данные передаются каждому клиенту в качестве сервера. Так почему бы не рассмотреть использование протокола torrent. Вот библиотека с открытым исходным кодом. http://www.mono-project.com/MonoTorrent