客户端交互性

Posted on Posted in 附录c

客户端交互性

所有的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 工具
Macromedia Dreamweaver 独立的WebDAV应用程序 X Web制作软件,可以直接读写WebDAV的URL
Microsoft Office 独立的WebDAV应用程序 X Office上产套件,可以直接读写WebDAV的URL
Microsoft Web 文件夹 文件浏览器WebDAV扩展 X Novell NetDrive
GNOME Nautilus 文件浏览器WebDAV扩展 X GUI文件浏览器,可以对WebDAV共享执行目录树操作
KDE Konqueror 文件浏览器WebDAV扩展 X GUI文件浏览器,可以对WebDAV共享执行目录树操作
Mac OS X WebDAV文件系统实现 X 内置支持加载WebDAV到本地功能的操作系统
驱动器映射程序,可以将Windows驱动器加载为远程的WebDAV共享 WebDAV文件系统实现 X SRT WebDrive
文件传输软件,可以将Windows驱动器加载为远程的WebDAV共享 WebDAV文件系统实现 X 一个WebDAV应用就是一个内置WebDAV协议的程序,我们会覆盖大多数支持WebDAV的流行程序。
davfs2 WebDAV文件系统实现 X Linux 文件系统驱动允许加载 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 menu的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

                         

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的锁定。