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

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

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

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

114895 次浏览

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

WebDAV 比 FTP 有以下优点:

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

  2. 再次由于一个 TCP 连接,这可以是持久的,WebDAV 将有点快于 FTP 时传输许多小文件-没有必要为每个文件建立数据连接。

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

  4. HTTP 可以广泛地选择 FTP 中没有定义的身份验证方法。艾格。NTLM 和 Kerberos 身份验证在 HTTP 中很常见,而在 FTP 中,除非同时编写 FTP 的客户端和服务器端,否则很难获得适当的支持。

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

还有一件事要考虑(取决于你是否控制服务器)—— SFTP (SSH文件传输协议,与 fTP 无关)。SFTP 比 WebDAV 功能更丰富,SFTP 是访问远程文件系统的协议,而 WebDAV 的设计考虑到了抽象(WebDAV 用于“文档”,而 SFTP 用于文件和目录)。SFTP 具有上述 WebDAV 的所有优点,并且更受管理员和开发人员的欢迎。

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

WebDAV 代表 Web Distributed Authoring and Versioning

互联网并不是为了通过 URL (统一资源定位符)消耗资源而设计的

但事实就是这样。

因为 HTTP 对于获取资源(GET)和(HEAD)有很强的语义。(POST)为语义操作的数量提供了覆盖,而(DELETE)则笼罩在不信任之中。HTTP 缺少其他一些特性,比如多资源操作。

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

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

WebDAV 应该提供互联网缺失的故事: 通过相同的机制 HTTP 支持创作资源。它扩展了其语义,引入了新的 HTTP VERBS。

同时介绍了该机制不仅可以对资源进行读、写、修改和删除,而且可以对资源的元属性进行查询和修改。这并不是说你不能做到这一点,但它是通过后门机制。

所以你看,它带来了一些相同的机制,你期望在桌面上的文件操作互联网资源。

以下是一些类比:

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 的扩展,以支持 Internet 创作。但不确定我们是否达到了目的。

回答你的问题

您的应用程序是一个客户端,必须使用可用的机制——另一端是 FTP 或 WebDAV。如果 WebDAV 非常可用,您可以使用它。但是要习惯这种语义还需要一些时间。FTP 具有有限的语义,并且在简单性方面表现出色。如果你已经在使用它,不要改变它。

这样更快

这类似于回答,哪个是更快的 HTTP 或 FTP?

需要注意的是,如果这是一个问题,我们就不会通过 HTTP 下载/上传文件了;)

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

对于发送一些文件,FTP 的开销比 Webdav 低,等等。

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

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

由于 DAVHTTP上工作,因此您可以获得 FTP 所不能提供的 HTTP 的所有好处。

例如:

强身份验证 加密代理服务器支持高速缓存。

的确,您可以通过 SSH获得其中的一些内容,但是 HTTP 基础设施比 SSH 部署得更广泛。此外,SSH 没有 HTTP 所具有的工具、开发库和应用程序的广泛补充。

DAV 传输(好吧,HTTP 传输)也比 FTP 更有效。 您可以通过一个 TCP 连接管道多个传输, 而 FTP 需要一个新的连接为每个文件传输(加 控制连接)。

参考文献

文件修改时间:

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

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

Owcloud 客户端和一些专有的 webdav 客户端似乎有一个变通方案,但这只适用于他们的软件

根据用法的不同,这是支持 ftp 的有力论据。我不希望我的文件有他们的修改日期 = = 上传日期。在稍后下载之后,我将不能告诉按日期我有哪个版本的文件。