客户端交互性

所有的WebDAV客户端分为三类—独立应用程序,文件浏览器扩展或文件系统实现,这些分类定义了WebDAV用户可用的功能性。表 C.1 “常用WebDAV客户端”给WebDAV常见软件进行了分类,并提供了的简短描述。

表 C.1. 常用WebDAV客户端

软件类型WindowsMacLinux描述
Adobe Photoshop独立的WebDAV应用程序X  图像编辑软件,允许直接从WebDAV的URL打开文件和修改。
Cadaver独立的WebDAV应用程序 XX命令行的WebDAV客户端,支持文件传输,目录树显示和锁定操作
DAV Explorer独立的WebDAV应用程序XXX浏览WebDAV共享的 Java GUI 工具
Macromedia Dreamweaver独立的WebDAV应用程序X  Web制作软件,可以直接读写WebDAV的URL
Microsoft Office独立的WebDAV应用程序X  Office上产套件,可以直接读写WebDAV的URL
Microsoft Web 文件夹文件浏览器WebDAV扩展X  Novell NetDrive
GNOME Nautilus文件浏览器WebDAV扩展  XGUI文件浏览器,可以对WebDAV共享执行目录树操作
KDE Konqueror文件浏览器WebDAV扩展  XGUI文件浏览器,可以对WebDAV共享执行目录树操作
Mac OS XWebDAV文件系统实现 X 内置支持加载WebDAV到本地功能的操作系统
驱动器映射程序,可以将Windows驱动器加载为远程的WebDAV共享WebDAV文件系统实现X  SRT WebDrive
文件传输软件,可以将Windows驱动器加载为远程的WebDAV共享WebDAV文件系统实现X  一个WebDAV应用就是一个内置WebDAV协议的程序,我们会覆盖大多数支持WebDAV的流行程序。
davfs2WebDAV文件系统实现  XLinux 文件系统驱动允许加载 WebDAV 共享

独立的 WebDAV 应用程序

WebDAV应用使用WebDAV协议与WebDAV服务器通讯,我们将会介绍一些支持WebDAV的流行程序。

Microsoft Office,Dreamweaver,Photoshop

在Windows下,有许多已知的应用程序支持WebDAV客户端功能,例如微软Office,[59]Adobe的Photoshop和Macromedia的Dreamweaver程序,他们可以直接打开和保存URL,并且在编辑文件时经常使用WebDAV的锁。

需要注意尽管这些程序也存在于Mac OS X,但是在这个平台上并不是直接支持WebDAV。实际上在Mac OS X,File->Open会离开对应的程序,因为OS X已经实现了底层的文件系统级WebDAV支持。

Cadaver,DAV 浏览器

Cadaver是一个简单的Unix命令行的WebDAV共享浏览程序,就像Subversion客户端,它使用neon的HTTP库,毫不奇怪,因为其作者就是neon的作者,Cadaver是一个自由软件(是用GPL许可证),可以通过http://www.webdav.org/cadaver/访问。

使用cadaver与命令行FTP程序类似,因此它在基本的WebDAV调试中非常有用,它可以用来在紧急情况下上传或下载文件,也可以用来验证属性,并拷贝、移动、锁定或解锁文件:

$ cadaver http://host/repos
dav:/repos/> ls
Listing collection `/repos/': succeeded.
Coll: > foobar                                 0  May 10 16:19
      > playwright.el                       2864  May  4 16:18
      > proofbypoem.txt                     1461  May  5 15:09
      > westcoast.jpg                      66737  May  5 15:09

dav:/repos/> put README
Uploading README to `/repos/README':
Progress: [=============================>] 100.0% of 357 bytes succeeded.

dav:/repos/> get proofbypoem.txt
Downloading `/repos/proofbypoem.txt' to proofbypoem.txt:
Progress: [=============================>] 100.0% of 1461 bytes succeeded.

DAV Explorer是另一个独立运行的WebDAV客户端,使用Java编写,有一个类Apache的许可证,网站是http://www.ics.uci.edu/~webdav/。DAV Explorer与cadaver功能差不多,优点可移植,并有一个用户友好的GUI程序。它也是最早的支持WebDAV访问控制协议(RFC 3744)的客户端之一。

当然,在这个情况下DAV Explorer的ACL支持没有任何用处,因为mod_dav_svn不支持它,事实上,Cadaver和DAV Explorer支持的一些有限的DeltaV命令也并不有效,因为他们不允许MKACTIVITY请求,但是这都不相干;我们假定这些客户端都是针对自动版本化版本库工作。

文件浏览器 WebDAV 扩展

一些流行的文件浏览器GUI程序支持WebDAV扩展,允许用户将DAV共享当作本地文件夹访问,例如Windows浏览器可以以“network place”方式浏览WebDAV服务器。用户可以拖入和拖出文件,或者是改名、拷贝或删除其中的文件。但是因为它只是文件浏览器的一个特性,DAV对普通应用不可见,所有的DAV交互必须通过浏览器界面。

Microsoft Web 文件夹

Microsoft是WebDAV规范最早的支持者,最早在Windows 98配置客户端,被称作“网络文件夹”,这个客户端在Windows NT4和2000上也存在。

最早的Webfolders客户端是浏览器的扩展,主要的浏览文件系统的GUI程序,工作良好。在Windows 98,如果“我的电脑”里没有网络文件夹,这个特性需要明确安装。在Windows 2000,只需要添加一个新的“网络位置”,输入URL,WebDAV共享就会弹出让你浏览。

伴随着Windows XP,Microsoft开始了另一种网络文件夹的实现,叫做“WebDAV mini-redirector”,这个新的实现是文件系统级的客户端,允许WebDAV转载到驱动器盘符上。不幸的是,这个实现充满难以相信的bug。客户端经常会尝试把http的URL(http://host/repos)转化为UNC共享符号(\\host\repos),它也经常使用Windows域认证来回应基本的HTTP认证,按照HOST\username发送用户名。这类互动性问题在网络上大量传播,使大量用户受挫。即使是ApacheWebDAV的作者Greg Stein也建议不要对Apache服务器使用XP的网络文件夹。

结果是原始的网络文件夹并没有在XP中死掉,只是要被埋葬了。还是有办法适用这个技术:

  1. 到网络位置。

  2. 添加一个新的网络位置。

  3. 当要求输入,输入版本库的URL,但URL中要包含端口号。例如http://host/repos的输入是http://host:80/repos

  4. 回应所有的认证请求。

有各种解决问题的方法,但好像没有一种能够在各版本和各级别的Windows XP中有效。在我们的测试里,只有上面这种策略在各种系统中有效。WebDAV社区一致认为避免使用新的网络文件夹实现,而使用旧的,如果你希望在Windows XP使用真实的文件系统级的客户端,请使用第三方的程序,例如WebDrive或NetDrive。

最后一个提示:如果你尝试使用XP的网络文件夹,确定你有Microsoft最新的版本,Microsoft在2005年1月发布了一个问题修正,在http://support.microsoft.com/?kbid=892211,特别的,这个发布是用来修正在访问DAV时发生无限递归的问题。

Nautilus,Konqueror

Nautilus是GNOME桌面(http://www.gnome.orghttp://www.kde.org

GNOME的Nautilus里,从File menu选择Open location,并且输入URL。版本库就会显示出来,就像其他文件系统。

KDE的Konqueror里你需要在地址栏使用webdav://模式来输入URL,如果你输入http://的URL,Konqueror会像普通的web浏览器。你会看到mod_dav_svn输出的普通HTML目录列表。通过输入webdav://host/repos代替http://host/repos,Konqueror就成为了一个WebDAV客户端,并且按照文件系统的方式显示版本库。

WebDAV文件系统实现

WebDAV文件系统实现被认为是最佳的WebDAV客户端,它通过低级的文件系统模块实现,通常在操作系统的核心。这意味着DAV共享像网络的其他文件系统一样装载,就像在Unix下面装载NFS,或者是在Windows下装载一个SMB共享。结果就是这种客户端为所有程序提供了对WebDAV得透明访问。

WebDrive,NetDrive

WebDrive和NetDrive都是完美的商业产品,允许将WebDAV绑定到Windows的盘符,当我们写作的时候,WebDrive可以从South River Technologies(http://www.southrivertech.com)购买。NetDrive由Netware装运,通过查找“netdrive.exe”就会找到。尽管它可以自由得到,用户还是需要一个Netware许可证。(如果着听起来有点奇怪,你并不孤单,看Novell网站的这个页面:http://www.novell.com/coolsolutions/qna/999.html

Mac OS X

Apple的OS X操作系统是集成的文件系统级的WebDAV客户端,通过Finder,选择Go menuConnect to Server条目,输入WebDAV的URL,会在桌面显示一个磁盘,就像其他装载的卷。你也可以从Darwin终端通过mount类型为webdav的文件系统实现。

$ mount -t webdav http://svn.example.com/repos/project /some/mountpoint
$

注意如果mod_dav_svn是1.2之前的版本,OS X不能按照可读写装载,而是会成为只读。这是因为,OS X坚持要读写共享支持锁定,而锁定文件出现在Subversion 1.2。

警告一句话:OS X的WebDAV客户端有时候对HTTP重定向很敏感,如果OS X不能装载版本库,你或许需要开启Apache服务器httpd.conf的BrowserMatch指示:

BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

Linux davfs2

Linux davfs2是一个Linux核心的文件系统模块,开发坐落在http://dav.sourceforge.net/。一旦安装,一个WebDAV网络共享可以使用mount命令装载:

$ mount.davfs http://host/repos /mnt/dav


[59] 在Windows下,有一些有名的集成WebDAV客户端功能的软件,例如Microsoft's Office、Adobe的Photoshop和Macromedia的Dreamweaver。它们都可以直接打开和保存URL,也可以在编辑时大量的使用WebDAV的锁定。