我必须开发一个Java应用程序,该应用程序必须读取网络上的一些文件,对其进行编辑并将其放回去。
问题是我总是通过FTP协议(通过网络)进行文件操作。但是,最近我听说了基于HTTP的Webdav。
有没有人注意到他们之间的差异(在速度方面)?哪一个是最好的 ?如果FTP可以做到这一点,为什么他们会“发明” Webdav?
我必须开发一个Java应用程序,该应用程序必须读取网络上的一些文件,对其进行编辑并将其放回去。
问题是我总是通过FTP协议(通过网络)进行文件操作。但是,最近我听说了基于HTTP的Webdav。
有没有人注意到他们之间的差异(在速度方面)?哪一个是最好的 ?如果FTP可以做到这一点,为什么他们会“发明” Webdav?
Answers:
与FTP相比,WebDAV具有以下优点:
通过一个TCP连接工作,将其配置为绕过防火墙,NAT和代理更为容易。在FTP中,数据通道可能导致正确的NAT设置出现问题。
同样,由于一个TCP连接可以持久,因此在传输许多小文件时,WebDAV将比FTP快一点-无需为每个文件建立数据连接。
GZIP压缩是HTTP的标准,但不是FTP的标准(是的,FTP中提供了MODE Z,但在任何标准中均未定义)。
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
。
互联网并非旨在通过url(统一资源定位器)消耗资源。
但这就是事实。
因为HTTP具有用于获取资源(GET)和(HEAD)的强大语义。(POST)提供了语义操作数的覆盖范围,而(DELETE)被不信任所笼罩。HTTP缺乏其他一些特性,例如多资源操作。
简而言之,它是读协议,而不是写协议。
您将通过通过FTP和多种机制上载资源(URL)来获取资源(URL)。
WebDAV应该提供Internet缺少的故事:通过相同的机制HTTP支持创作资源。它扩展了其语义,引入了新的HTTP VERBS。
它还引入了不仅可以读取,写入,修改和删除资源(URI)的机制,还可以查询资源的元属性并对其进行修改。不是您以前做不到,而是通过后门机制完成的。
因此,您看到了它为Internet资源带来了一些您希望在桌面上的文件操作中使用的相同机制。
以下是一些类推:
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