论坛首页 Web前端技术论坛

我来谈一谈 WebDAV

浏览 85510 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-08-01  
WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值。基于 WebDAV 可以实现一个功能强大的内容管理系统或者配置管理系统。
我这里不想详细介绍 WebDAV 的协议,感兴趣的可以在这里找到相关的资料:
http://www.webdav.org
其中首先应该看的是这份 WebDAV FAQ:
http://www.webdav.org/other/faq.html

WebDAV 本身是一个类似于 HTTP 的通信协议(IETF RFC 2518)。它与 HTTP  类似,需要实现服务器和客户端两部分软件。目前 WebDAV 已经有了大量相关的软件实现。
在这里是一些与 WebDAV 相关的软件项目:
http://www.webdav.org/projects/

在这些项目中,我们最感兴趣的当然是那些用 Java 实现的开源项目,Slide 是其中最重要的一个项目。Slide 是 Jakarta 项目的一个子项目(又是 Apache 山头的),提供了一套 WebDAV 的服务器端和客户端的开发库和 API,目前已经出到了 2.0 版。
http://jakarta.apache.org/slide/
在这里下载最新的 Slide 2.0 的 Binary 包。
http://jakarta.apache.org/site/binindex.cgi
Slide 分成服务器端和客户端两部分:
服务器端:
http://apache.linuxforum.net/dist/jakarta/slide/binaries/jakarta-slide-server-bin-2.0.zip
客户端:
http://apache.linuxforum.net/dist/jakarta/slide/binaries/jakarta-slide-webdavclient-bin-2.0.zip

我先讲讲服务器端如何配置:
解压缩,假设在 D:\tmp\jakarta-slide-server-2.0 下,你会在
D:\tmp\jakarta-slide-server-2.0\slide\webapp\
下找到两个 war 文件:
slide.war:Slide 服务器端配置,用 Servlet 实现。
slide-doc.war:Slide 文档。

把这两个 war 文件 copy 到你的 Web Container(Tomcat、Jetty、Resin、etc.) 的部署目录(一般是 webapps 目录)下,然后重新启动 Web Container。

在我现在写的这个文档中服务器端的配置就是这么简单。

再讲讲在客户端如何配置。
WebDAV 有非常多的客户端,用 Slide 客户端的库可以非常容易地写出一个 WebDAV 客户端程序。感兴趣的可以看看这篇文档:
http://www.onjava.com/lpt/a/4387

我主要讲讲如何用 Windows 2000/XP 自带的 Web Folder 功能来访问 Web 文件夹。
Windows 2000/XP 安装后已经具备访问基于 WebDAV 协议的 Web 文件夹的功能,而且可以把 Web 文件夹映射为一个本地文件夹,支持拖放、拷贝/粘贴等等功能,使用起来非常方便。
在 Windows 2000/XP 中添加 Web 文件夹的方法是:
打开“网上邻居”,添加网上邻居,在“请键入网上邻居的位置”中输入 Web 文件夹的 URL,例如我刚才用 Slide 配置好的 WebDAV 服务器在:
http://localhost:8000/slide/
然后按照向导的提示继续做就可以了,非常的简单。
配置好了以后你就可以把这个 Web 文件夹当作本地文件夹一样使用了。拖几个文件进去试试吧。关于上述 Web Folder 的配置可以参考这些文档:
http://chapters.marssociety.org/webdav/
(几个闲着没事孜孜不倦地研究人类如何移民火星的酷哥写的文档)
还有 M$ 网站上的相关文档:
http://www.microsoft.com/windowsxp/home/using/productdoc/en/default.asp?url=/windowsxp/home/using/productdoc/en/using_webfolders_for_file_transfer.asp

M$ 的很多产品都内置有 WebDAV 的支持。例如:Office 2000、IE 5/6、Exchange Server、Frontpage。我配置好 WebDAV 服务器后,当我访问这个 URL
http://localhost:8000/slide/files/23.doc
时,Word 2000 可以识别出 Web 服务器支持 WebDAV 协议。于是 Word 2000 可以直接编辑服务器上的这个文档,编辑完后可以直接保存在 Web 服务器上。这个是不是比你习惯的 download->modify->upload 要方便的多?

WebDAV 还有很多话题,比如 WebDAV 完全可以取代 FTP。WebDAV 至少在以下几个方面对 FTP 具有压倒性优势:
1、FTP 需要申请操作系统帐号。WebDAV 不需要申请任何操作系统帐号,它使用一套自己定义的安全完善的身份验证机制。
2、FTP 的所有数据(包括登录信息)全部使用明文传送,加密必须要自己来实现,例如:可以手工用 GPG 来做这件事,但是毕竟还是不方便。用 WebDAV 就可以使用 HTTPS 来传输数据,加密解密的操作完全是在低层自动完成的。
3、FTP 传输数据的传输效率比较低,每传送一个文件需要打开一个新的 TCP 连接,而 WebDAV 传输所有文件只需要一个 TCP 连接。
4、FTP 不象 HTTP 那样容易穿越防火墙,在广域网的应用范围比 HTTP 要小的多。而 WebDAV 因为是基于 HTTP 的,所以具有 HTTP 的所有优点。
5、FTP 客户端工具没有 WebDAV 客户端工具使用方便。你刚才已经看到 WebDAV 服务器配置好后,通过 Windows 2000/XP 的 Web Folder 方式访问 Web 文件夹就和访问本地文件夹没有多少区别。如果应用程序支持 WebDAV 协议(例如 Word 2000),就可以直接打开 Web 文件夹中的文件并且编辑,然后直接保存在原先的 Web 文件夹中。这个用起来简直就和 Samba 完全一样。你知道哪一个 FTP 客户端使用起来有这么方便吗?

关于 WebDAV 更多的话题,以后慢慢再说吧。

Just for fun!
   发表时间:2004-08-01  
谢谢dlee!这么好的工具我一定要try一下!
再次感谢孜孜不倦为“人民”服务的dlee同志!
热心而技术高超的人总归是值得尊敬的!
0 请登录后投票
   发表时间:2004-08-03  
除了网上邻居以外,在 IE 中也可以直接打开 Web 文件夹。运行 IE,“文件->打开”,选中“以 Web 文件夹方式打开”。然后输入
http://localhost:8000/slide/
这样 IE 就直接打开了这个 Web 文件夹,你可以随便拖几个文件进去试试。如果是 Word 文件可以直接用 Word 打开并编辑,然后可以直接保存在 Web Server 上。这和上面在网上邻居中打开的效果是完全一样的。
你可以写 JS 来直接打开 Web 文件夹中的文件,例如:
<script language="javascript">
<!--
var word = new ActiveXObject("Word.Application");

word.Visible = true;
word.Documents.Open("http://localhost:8000/slide/files/23.doc");
//word.Quit();
-->
</script>

这里只是打开 Word 文件的例子,你当然还可以写出打开其它类型文件的例子。前提是这类文件的应用程序支持 WebDAV 协议并且提供了相应的控件可以被 JS 调用。
Word 打开这个文件后可以直接编辑,然后可以直接保存在 Web Server 上面,省去了你 download->modify->upload 的步骤,用起来是不是更方便?

缺省情况下,WebDAV 服务器在客户端第一次打开一个文件时会为这个文件加一个排他的写锁,以后所有客户端打开这个文件都是只读的。只有在第一个客户端保存文件后才会释放这个锁,然后其他客户端才能修改这个文件。

Slide 可以把文件保存在文件系统中,也可以把文件保存在数据库中。Slide 提供了 API 使你可以写 plugin 将文件保存在其它类型的存储系统中。
Slide 使用基于角色的权限控制,角色的权限可以继承。这些内容聊起来就多了,感兴趣的可以看 Slide 的配置文档。文档中还有与版本控制有关的内容。
http://jakarta.apache.org/slide/config_file.html
0 请登录后投票
   发表时间:2004-08-03  
说到webdav,我是在了解Subversion时候知道的,Subversion是一个打算替代CVS的版本控制工具,主力开发者Karl Fogel是“Open Source Development with CVS ”一书的作者。

我觉得webdav最大的好处就是用“本地文件系统”的形式让用户使用其它形式存放的信息,属于一种“静悄悄”的技术,用户察觉不到却好处多多。

这个协议最开始的目的好像主要是协同写作,目前在内容管理方面的应用比较多。
0 请登录后投票
   发表时间:2004-08-04  
flyisland 写道
说到webdav,我是在了解Subversion时候知道的,Subversion是一个打算替代CVS的版本控制工具,主力开发者Karl Fogel是“Open Source Development with CVS ”一书的作者。

我觉得webdav最大的好处就是用“本地文件系统”的形式让用户使用其它形式存放的信息,属于一种“静悄悄”的技术,用户察觉不到却好处多多。

这个协议最开始的目的好像主要是协同写作,目前在内容管理方面的应用比较多。


感谢楼主对Slide和webDAV的研究应用和详细介绍。非常有价值的第一手经验。

to flyisland.
多谢你的关于subversion的信息。很有兴趣。
另外,“内容管理方面的应用”有成熟的运用吗?
webDAV能够代替内容管理系统的现有的在线编辑器吗?

楼主dlee举例说明,用户能够直接编辑Word文档。
那么,是不是也有这样的可能?可以用Dream Weaver, Front Page直接编辑远程站点上的HTML文档,而且可以直接在HTML编辑器里面支持图文混排了。
0 请登录后投票
   发表时间:2004-08-04  
buaawhl 写道
感谢楼主对Slide和webDAV的研究应用和详细介绍。非常有价值的第一手经验。

to flyisland.
多谢你的关于subversion的信息。很有兴趣。
另外,“内容管理方面的应用”有成熟的运用吗?
webDAV能够代替内容管理系统的现有的在线编辑器吗?

楼主dlee举例说明,用户能够直接编辑Word文档。
那么,是不是也有这样的可能?可以用Dream Weaver, Front Page直接编辑远程站点上的HTML文档,而且可以直接在HTML编辑器里面支持图文混排了。


你可以自己查查像DOCUMENTUM,Filenet这些数一数二的内容管理系统都是支持WebDav协议的。

至于在线编辑,这不是代替布代替的问题。某些情况下,在线编辑方便,因为始终在同一应用中;某些情况下,在线编辑很难实现,比如在线编辑一个Word文档。

在www.webdav.org上面列举了更多的软件和应用,建议你先到上面详细看看。
0 请登录后投票
   发表时间:2004-08-04  
实际上我是在看zope的时候关注WebDAV的。
而现在dlee因为需要在线编辑word文档不得不动用这个工具。
好东西值得推荐。
0 请登录后投票
   发表时间:2004-08-04  
个人觉得webdav是通过http协议提供类似文件系统的操作。

有一天也许webdav访问的数据可能是存放在数据库里的,如果愿意,自己当然也可以实现。

去年研究了一下数据透明访问,将各种访问协议邦定在同一的文件系统上,提供类似操作本地文件的操作。

这个Apache上有一项目,可以透明读取ftp,http等的数据。
0 请登录后投票
   发表时间:2005-11-21  
请问,slide如何支持中文文件名?
0 请登录后投票
   发表时间:2006-05-15  
dlee, 我们试了一下slide,但是发现它的只读问题很难解决。
slide网站上的那几个方法(改注册表、改文件夹选项、打补丁)都搞不定,请问有啥高招?谢谢!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics