Какой доступ к файлам лучше всего: Webdav или FTP?
Мне нужно разработать приложение Java, которое должно читать некоторые файлы в сети, редактировать их и возвращать.
Проблема в том, что я всегда делал (по сети) файловые операции по протоколу FTP. Но я недавно слышал о Webdav, который основан на HTTP.
Кто-нибудь заметил разницу (с точки зрения скорости) между ними? Какой из них лучше? Почему они "изобретали" Webdav, если FTP для этого хорош?
Ответы
Ответ 1
WebDAV имеет следующие преимущества перед FTP:
-
Работая через одно TCP-соединение, проще настроить его на обход брандмауэров, NAT и прокси. В FTP канал данных может вызвать проблемы с надлежащей настройкой NAT.
-
Снова из-за одного TCP-соединения, которое может быть постоянным, WebDAV будет немного быстрее FTP при передаче многих небольших файлов - не нужно делать подключение к данным для каждого файла.
-
Сжатие GZIP является стандартом для HTTP, но не для FTP (да, MODE Z предлагается по FTP, но он не определен ни в одном стандарте).
-
HTTP имеет широкий выбор методов аутентификации, которые не определены в FTP. Например. Проверка подлинности NTLM и Kerberos является обычным явлением в HTTP и на FTP, поэтому трудно получить надлежащую поддержку для них, если вы не пишете как клиентские, так и серверные стороны FTP.
-
WebDAV поддерживает частичные передачи, а частичная загрузка FTP невозможен (т.е. вы не можете перезаписать блок в середине файла).
Есть еще одна вещь, которую следует учитывать (в зависимости от того, управляете ли вы сервером) - SFTP (SSH File Transfer Protocol, никак не связанный с FTP). SFTP более функциональный, чем WebDAV, а SFTP - протокол для доступа к удаленным файловым системам, в то время как WebDAV был разработан с учетом абстракции (WebDAV был для "документов", а SFTP - для файлов и каталогов). SFTP имеет все преимущества, упомянутые выше для WebDAV, и более популярен среди администраторов и разработчиков.
Ответ 2
Отвечай за вопрос - Why did they "invent" Webdav
WebDAV означает Web Distributed Authoring and Versioning
.
Интернет просто не предназначен для потребления ресурсов через URL-адреса (Единый локатор ресурсов)
Но так оно и стало.
Поскольку HTTP имеет сильную семантику для извлечения ресурсов (GET) и (HEAD). (POST) предоставил покрытие для количества семантических операций, в то время как (DELETE) был окутан недоверием. HTTP не хватало некоторых других качеств, таких как многоресурсные операции.
В двух словах, это был протокол чтения, а не протокол записи.
Вы обойдетесь, чтобы ваши ресурсы (URL-адреса) были доступны для загрузки, загрузив его, хотя FTP и множество механизмов.
WebDAV должен был предоставить отсутствующую историю Интернета: поддержка создания ресурса с помощью одного и того же механизма HTTP. Он расширил семантику, внедрил новую версию HTTP VERBS.
Он также внедрил механизм не только чтения, записи, изменения и удаления ресурса (uris), но и запроса на мета-свойства ресурса и его модификацию. Дело не в том, что вы не могли этого сделать раньше, но это было сделано через механизм задней двери.
Итак, вы видите, это привело к некоторым из тех же механизмов, которые вы ожидаете от операций с файлами на рабочем столе с интернет-ресурсами.
Ниже приведены некоторые из аналогий:
MKCOL ----- make collection ----- similar to make folder
PROPGET ---- get properties (meta?) --- same as get info or extended attributes on mac
PROPPATCH --- modify properties
COPY ---- cp
MOVE ---- mv
Надеюсь, я установил некоторые из благородных целей WebDAV как расширение HTTP для поддержки интернет-авторинга. Не уверен, что мы достигли этого, хотя.
Для вашего вопроса
Ваше приложение является клиентом, и вам нужно будет решить, какой механизм доступен - FTP или WebDAV с другой стороны. Если WebDAV доступен, вы можете его использовать. Но для семантики потребуется некоторое время. FTP имеет ограниченную семантику и превосходит в простоте. Если вы уже используете его, не меняйте его.
Что быстрее
Это похоже на ответ, который быстрее HTTP или FTP?
С уважением, если бы это была такая проблема, мы бы не загружали/загружали файлы через HTTP;)
Ответ 3
Так как DAV работает над HTTP, вы получаете все преимущества HTTP, которые FTP не может предоставить.
Например:
надежная аутентификация, шифрование, поддержка прокси и кэширование.
Верно, что вы можете получить часть этого через SSH, но инфраструктура HTTP гораздо более широко используется, чем SSH. Кроме того, SSH не имеет широкого набора инструментов, библиотек разработки и приложений, которые выполняет HTTP.
Передачи DAV (ну, передачи HTTP) также более эффективны, чем FTP. Вы можете конвейерно выполнять несколько передач через одно TCP-соединение, тогда как FTP требует нового подключения для каждого переданного файла (плюс контрольное соединение).
Ссылка
Ответ 4
Webdav имеет преимущества перед FTP в отношении простой передачи брандмауэров (без отдельных сокетов управления/данных). Скорость должна быть примерно такой же, как обе протоколы передают файл по необработанному сокету tcp.
Ответ 5
Зависит от того, что вы хотите сделать.
Например, накладные расходы на FTP для получения списка файлов составляют 7 байт (LIST -a), а 370 байт - с помощью Webdav (PROPFIND + 207 Multi Status).
Для отправки некоторого файла накладные расходы ниже по FTP, чем на Webdav и т.д.
Если вам нужно отправить/извлечь большое количество небольших файлов, FTP будет быстрее (с использованием нескольких соединений для правильной конвейерной обработки и TCP-соединения для каждого файла).
Если вы отправляете/получаете большие файлы, то они одинаковы по обеим технологиям, накладные расходы будут незначительными.
Пожалуйста, смотрите:
http://www.philippheckel.com/files/syncany-heckel-thesis.pdf
Ответ 6
время изменения файла:
похоже, есть разница в том, как ftp и webdav имеют дело с временем изменения файла.
Кажется, в ftp есть "команда", чтобы сохранить это время (для этого требуются несколько клиентов и серверов ftp), тогда как webdav, если я правильно помню, могу получить дату изменения файла, но не могу установить его при загрузке.
owncloud client и некоторые propriatary клиенты webdav, похоже, имеют обходное решение, но это работает только в их программном обеспечении.
в зависимости от использования, то есть сильный аргумент в пользу ftp. Я не хочу, чтобы у моих файлов была дата их модификации == дата загрузки. После более поздней загрузки я не смог бы сообщить по дате, какая версия файла у меня есть.