3. 客户端交互性

所有的 WebDAV 客户端分为三类 — 独立应用程序,文件浏览器扩展,或文件系统实现。这些分类清楚的定义了 WebDAV 用户可用的功能。表 C.1 “常用的 WebDAV 客户端” 将支持 WebDAV 的常见软件进行了分类,并提供了的简短描述。可以在后面的章节找到这些软件的详细信息。

表 C.1. 常用的 WebDAV 客户端

软件 类型 Windows Mac Linux 描述
Adobe Photoshop 独立的 WebDAV 应用程序 X     图像编辑软件,允许对 WebDAV 的 URL 直接读写
cadaver 独立的 WebDAV 应用程序   X X 命令行 WebDAV 客户端,支持文件传输,目录树显示和锁定操作
DAV Explorer 独立的 WebDAV 应用程序 X X X 浏览 WebDAV 共享的 Java GUI 工具
Adobe Dreamweaver 独立的 WebDAV 应用程序 X     Web 创作软件,可以直接读写 WebDAV 的 URL
Microsoft Office 独立的 WebDAV 应用程序 X     Office 产品套件,有几个组件可以直接读写 WebDAV 的 URL
Microsoft Web 文件夹 文件浏览器 WebDAV 扩展 X     GUI 文件浏览器程序,可以对 WebDAV 共享执行目录树操作
GNOME Nautilus 文件浏览器 WebDAV 扩展     X GUI 文件浏览器,可以对 WebDAV 共享执行目录树操作
KDE Konqueror 文件浏览器 WebDAV 扩展     X GUI 文件浏览器,可以对 WebDAV 共享执行目录树操作
Mac OS X WebDAV 文件系统实现   X   内置支持加载 WebDAV 共享的操作系统。
Novell NetDrive WebDAV 文件系统实现 X     为远程 WebDAV 共享分配 Windows 驱动器盘符的驱动映射程序
文件传输软件,可以将 Windows 驱动器加载为远程的 WebDAV 共享 WebDAV 文件系统实现 X     文件传输软件,也就是可以为加载的远程 WebDAV 共享赋予 Windows 驱动器盘符。
davfs2 WebDAV 文件系统实现     X 允许加载 WebDAV 共享的 Linux 文件系统驱动

3.1. 独立的 WebDAV 应用程序

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

3.1.1. Microsoft Office,Dreamweaver,Photoshop

On Windows, several well-known applications contain integrated WebDAV client functionality, such as Microsoft's Office,[66] Adobe's Photoshop and Dreamweaver programs. They're able to directly open and save to URLs, and tend to make heavy use of WebDAV locks when editing a file.

需要注意尽管这些程序也存在于 Mac OS X,但是在这个平台上并不是直接支持 WebDAV。实际上在 Mac OS X,File→Open 对话框完全不允许人们输入路径或 URL。这好像看起来 Macintosh 版本的应用程序不会支持 WebDAV 特性了,但实际上是因为 OS X 已经实现了底层的文件系统级的 WebDAV 支持。

3.1.2. 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 不支持 ACL。事实上,Cadaver 和 DAV Explorer 支持的一些有限的 DeltaV 命令也并不是很有用,因为它们不允许 MKACTIVITY 请求。但是这都不相干;我们假定这些客户端都是针对自动版本化版本库工作。

3.2. 文件浏览器的 WebDAV 扩展

一些流行的文件浏览器 GUI 程序支持 WebDAV 扩展,允许用户将 DAV 共享当作本地文件夹访问,在共享的项目上执行基本的树编辑操作。例如 Windows 浏览器可以以网络位置方式浏览 WebDAV 服务器。用户可以拖入和拖出文件,或者是改名, 复制或删除其中的文件。但是因为它只是文件浏览器的一个特性,所以 DAV 对普通应用不可见。所有的 DAV 交互必须通过浏览器界面。

3.2.1. Microsoft Web 文件夹

Microsoft 是 WebDAV 规范最早的支持者,从 Windows 98 开始提供客户端,被称作网络文件夹。这个客户端在 Windows NT 4.0 和 Windows 2000 上也存在。

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

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

Windows Vista's initial implementation of Web Folders seems to be almost the same as XP's, so it has the same sort of problems. With luck, Microsoft will remedy these issues in a Vista Service Pack.

However, there seem to be workarounds for both XP and Vista that allow Web Folders to work against Apache. Users have mostly reported success with these techniques, so we'll relay them here.

On Windows XP, you have two options. First, search Microsoft's web site for update KB907306, Software Update for Web Folders. This may fix all your problems. If it doesn't, it seems that the original pre-XP Web Folders implementation is still buried within the system. You can unearth it by going to Network Places and adding a new network place. When prompted, enter the URL of the repository, but include a port number in the URL. For example, you should enter http://host/repos as http://host:80/repos instead. Respond to any authentication prompts with your Subversion credentials.

On Windows Vista, the same KB907306 update may clear everything up. But there may still be other issues. Some users have reported that Vista considers all http:// connections insecure, and thus will always fail any authentication challenges from Apache unless the connection happens over https://. If you're unable to connect to the Subversion repository via SSL, you can tweak the system registry to turn off this behavior. Just change the value of the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel key from 1 to 2. A final warning: be sure to set up the Web Folder to point to the repository's root directory (/), rather than some subdirectory such as /trunk. Vista Web Folders seems to work only against repository roots.

In general, while these workarounds may function for you, you might get a better overall experience using a third-party WebDAV client such as WebDrive or NetDrive.

3.2.2. Nautilus,Konqueror

Nautilus 是 GNOME 桌面(http://www.gnome.org)的官方文件管理/浏览器,KDE 桌面(http://www.kde.org)的则是 Konqueror。两个应用程序都是浏览器级别的 WebDAV 客户端,对自动版本化的版本库工作良好。

在 GNOME 的 Nautilus 中,选择 File→Open location,在显示的对话框中输入 URL。版本库就会象其它文件系统一样显示。

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

3.3. WebDAV 的文件系统实现

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

3.3.1. WebDrive,NetDrive

WebDrive 和 NetDrive 都是优秀的商业产品,允许将 WebDAV 绑定到 Windows 的盘符。从而你可以同对真实硬盘一样操作这些 WebDAV 后端支持的共享。WebDrive 可以从 South River Technologies(http://www.southrivertech.com) 购买。Novell 的 NetDrive 可以在网络上免费下载,但用户还是需要有一个 NetWare 许可证。

3.3.2. Mac OS X

Apple 的 OS X 操作系统是集成的文件系统级的 WebDAV 客户端。通过 Finder,选择 Go→Connect 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

3.3.3. Linux davfs2

Linux davfs2 是一个 Linux 内核的文件系统模块,开发主页是 http://dav.sourceforge.net/。一旦安装 davfs2,你就可以使用通常的 Linux mount 命令装载 WebDAV 网络共享:

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


[66] 由于某些原因,Microsoft Access 不再支持 WebDAV,但是其它 Office 软件仍旧支持 WebDAV。