哪个文件访问是最好的:Webdav或FTP?

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

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

有没有人注意到他们之间的差异(在速度方面)? 哪一个是最好的 ? 为什么他们“发明”Webdav如果FTP是好的?

WebDAV比FTP有以下优点:

  1. 通过一个TCP连接工作,configuration它绕过防火墙,NAT和代理更容易。 在FTP中,数据通道可能会导致正确的NAT设置问题。

  2. 同样由于一个TCP连接可以是持久的,所以当传输很多小文件时,WebDAV比FTP快一点 – 不需要为每个文件build立一个数据连接。

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

  4. HTTP有很多在FTP中没有定义的authentication方法。 例如。 NTLM和Kerberos身份validation在HTTP和FTP中很常见,除非您同时编写FTP的客户端和服务器端,否则很难获得适当的支持。

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

还有一件事要考虑(取决于你是否控制服务器) – SFTP(SSH文件传输协议,不以任何方式与FTP相关)。 SFTP比WebDAVfunction更丰富,SFTP是访问远程文件系统的协议,而WebDAV是devise抽象的(WebDAV用于“文件”,而SFTP用于文件和目录)。 SFTP具有上述WebDAV的所有优点,并且在pipe理员和开发人员中更受欢迎。

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

WebDAV代表Web Distributed Authoring and Versioning

互联网并不意味着通过网站消耗资源( 统一资源定位器 )

但那就是它变成了什么。

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

由于DAV是通过HTTP工作的 ,因此您可以获得FTP无法提供的所有HTTP优势。

例如:

强authenticationencryption代理支持caching

确实,你可以通过SSH获得一些,但是HTTP基础结构比SSH更广泛的部署。 而且,SSH没有HTTP所具有的丰富的工具,开发库和应用程序。

DAV传输(以及HTTP传输)也比FTP更高效。 您可以通过单个TCP连接传输多个传输,而FTP需要传输每个文件的新连接(加上控制连接)。

参考

Webdav比FTP容易传递防火墙(没有单独的控制/数据套接字)。 速度应该大致相同,因为这两个协议通过一个原始的TCP套接字传输文件。

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

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

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

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

文件修改时间:

ftp和webdav如何处理文件修改时间似乎是有区别的。

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

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

取决于使用情况,这是对ftp的支持。 我不希望我的文件修改date==上传date。 在稍后的下载之后,我不能通过date告诉我有哪个版本的文件。