哪种文件访问最好:Webdav还是FTP?

时间:2012-06-26 22:34:27

标签: ftp webdav

我必须开发一个Java应用程序,它必须读取网络上的一些文件,编辑它们并将它们放回去。

问题是我总是通过FTP协议(通过网络)进行文件操作。但是,我最近听说过基于HTTP的Webdav。

有没有人注意到它们之间的差异(就速度而言)?哪一个是最好的 ?如果FTP对它有好处,他们为什么“发明”Webdav?

6 个答案:

答案 0 :(得分:71)

WebDAV与FTP相比具有以下优势:

  1. 通过一个TCP连接工作,可以更轻松地将其配置为绕过防火墙,NAT和代理。在FTP中,数据通道可能会导致正确的NAT设置出现问题。

  2. 再次由于一个TCP连接(可以是持久的),在传输许多小文件时,WebDAV会比FTP快一点 - 不需要为每个文件建立数据连接。

  3. GZIP压缩是HTTP的标准,但不适用于FTP(是的,FTP Z在FTP中提供,但它没有在任何标准中定义)。

  4. HTTP具有广泛的身份验证方法选择,这些方法未在FTP中定义。例如。 NTLM和Kerberos身份验证在HTTP和FTP中很常见,除非您同时编写FTP的客户端和服务器端,否则很难获得对它们的适当支持。

  5. WebDAV支持部分传输,在FTP部分上传是不可能的(即,您不能覆盖文件中间的块)。

  6. 还有一件事要考虑(取决于您是否控制服务器) - SFTP(SSH文件传输协议,以任何方式与FTP无关)。 SFTP比WebDAV功能更丰富,SFTP是访问远程文件系统的协议,而WebDAV的设计考虑了抽象(WebDAV用于“文档”,而SFTP用于文件和目录)。 SFTP具有上面提到的WebDAV的所有好处,并且在管理员和开发人员中更受欢迎。

答案 1 :(得分:27)

回答问题 - Why did they "invent" Webdav

WebDAV代表Web Distributed Authoring and Versioning

互联网并不意味着通过网址(Uniform resource locator

消耗资源

但这就是它的结果。

因为HTTP在获取资源(GET)和(HEAD)方面具有强大的语义。 (POST)提供了语义操作数量的覆盖,而(DELETE)则被不信任所笼罩。 HTTP缺乏一些其他特性,如多资源操作。

简而言之,它是读取协议而不是写入协议。

您可以通过FTP和许多机制上传它来使您的资源(URL)可用于获取。

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下载/上传文件了;)

答案 2 :(得分:4)

由于 DAV 适用于 HTTP ,因此您可以获得FTP无法提供的所有HTTP优势。

例如:

  

强身份验证加密代理支持,以及   缓存

您可以通过 SSH 获得部分内容,但 HTTP基础架构的部署要比SSH更广泛。此外,SSH没有广泛的工具,开发库和HTTP所做的应用程序。

  

DAV传输(以及HTTP传输)也比FTP更有效。   您可以通过单个TCP连接管道多个传输,   而FTP需要为每个传输的文件建立新连接(另外   控制连接)。

Reference

答案 3 :(得分:3)

取决于你想做什么。 例如,用于获取文件列表的FTP上的开销是7个字节(LIST -a),而使用Webdav(PROPFIND + 207多个状态)则为370个字节。

对于发送某个文件,FTP上的开销低于Webdav上的开销,依此类推。

如果您需要发送/获取大量小文件,FTP将证明更快(使用多个连接进行正确的流水线操作和每个文件的TCP连接)。 如果你发送/接收大文件,两种技术都是一样的,开销可以忽略不计。

请参阅: http://www.philippheckel.com/files/syncany-heckel-thesis.pdf

答案 4 :(得分:2)

文件修改时间:

ftp和webdav如何处理文件修改时间似乎有所不同。

似乎有一个'命令'在ftp中保留那个时间(几个ftp客户端和服务器声称这样做),而webdav,如果我没记错的话,可以获得文件修改日期,但不能在上传时设置它。

owncloud客户端和一些专有的webdav客户端似乎有一个解决方法,但这只适用于他们的软件

取决于使用情况,这是支持ftp的强有力的论据。我不希望我的文件有他们的修改日期==上传日期。稍后下载,我无法通过日期告诉我有哪个版本的文件。

答案 5 :(得分:1)

Webdav在防火墙易于通过方面优于FTP(没有单独的控制/数据套接字)。速度应该与两个协议通过原始tcp套接字传输文件大致相同。