我要开发具有读取网络上的一些文件,编辑它们,将它们放回Java应用程序。
问题是,我总是这样(通过网络)通过FTP协议文件操作。 但是,我最近听说这是基于HTTP的有关WebDAV。
没有人注意到有什么差别(在速度方面),它们之间? 哪一个是最好的 ? 为什么他们“发明” webdav的,如果FTP是好是什么?
我要开发具有读取网络上的一些文件,编辑它们,将它们放回Java应用程序。
问题是,我总是这样(通过网络)通过FTP协议文件操作。 但是,我最近听说这是基于HTTP的有关WebDAV。
没有人注意到有什么差别(在速度方面),它们之间? 哪一个是最好的 ? 为什么他们“发明” webdav的,如果FTP是好是什么?
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文件传输协议,不以任何方式与FTP)。 SFTP是功能更丰富比WebDAV和SFTP是访问远程文件系统的协议,而WebDAV的设计与抽象记(WebDAV的是为“文件”,而SFTP是文件和目录)。 SFTP对WebDAV的上述所有好处,既管理员和开发人员中更受欢迎。
回答的问题- Why did they "invent" Webdav
WebDAV的代表Web Distributed Authoring and Versioning
。
互联网只是并不意味着通过网址资源的消耗( 统一资源定位器 )
但是,这是它成为了。
由于HTTP具有较强的语义获取资源(GET)和(HEAD)。 (POST),而(DELETE)的不信任笼罩着语义操作的数量设置的覆盖面。 HTTP缺少一些其他品质如多资源操作。
在简单地说,它是阅读协议,而不是写协议。
你会去周围,使您的资源(URL)的可供上传FTP虽然和许多许多机制获取。
WebDAV的是应该提供互联网失踪的故事:通过相同的机制HTTP用于创作资源支持。 它扩大了它的语义,引入了新的HTTP动词。
它还引入的机制,不仅读,写,修改和删除资源(URI的),但也使对资源的元属性查询和修改。 这并不是说你不能做之前,但它是通过后门机制来完成。
所以你看,它带来了一些您在文件操作期望在桌面互联网资源相同的机制。
以下是一些类比:
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,你得到的HTTP FTP无法提供的所有好处。
例如:
强大的认证 , 加密 , 代理支持和高速缓存 。
这是事实,你可以通过SSH弄点这个,但HTTP基础设施比SSH更广泛地部署。 此外,SSH不具备的工具,开发库,以及HTTP应用不广泛的补充。
DAV传送(以及,HTTP传输)也比FTP更有效。 您可以通过一个单一的TCP连接管线多次转移,而FTP需要传输的每个文件(加上控制连接)一个新的连接。
参考
取决于你想要做什么。 例如,对于获取的文件列表FTP上的开销是7个字节(LIST -a),而它的370个字节使用WebDAV(PROPFIND + 207种多状态)。
对于发送一些文件,开销比WebDAV的FTP上的低,依此类推。
如果您需要发送/获取了大量的小文件,FTP将证明更快(正确流水线使用多个连接,并且每个文件的TCP连接)。 如果你发送/接收大文件,这两个技术的同时,开销可以忽略不计。
请参阅: http://www.philippheckel.com/files/syncany-heckel-thesis.pdf
文件修改时间:
似乎有一个差异如何FTP和WebDAV处理文件的修改时间。
它似乎还有在FTP以保留时间(几个FTP客户端和服务器要求这样做)一个“命令”,而WebDAV的,如果我没记错的话,可以得到文件的修改日期,但不能把它放在上传。
owncloud客户端和一些propriatary WebDAV客户端似乎有一种变通方法,但只能在他们的软件
根据使用情况,这是有利于FTP的杨卫国说法。 我不希望我的文件有自己的修改日期==上传日期。 后来下载之后,我将无法按日期,我有该文件的版本告诉。
WebDAV的具有关于防火墙容易通过(没有单独的控制/数据插座)通过FTP优点。 因为这两个协议在原始TCP套接字传输文件速度应该大致相同。