客戶端交互性

所有的WebDAV客戶端分為三類—獨立應用程序,文件瀏覽器擴展或文件系統實現,這些分類定義了WebDAV用戶可用的功能性。表 C.1 「常用WebDAV客戶端」給WebDAV常見軟體進行了分類,並提供了的簡短描述。

表 C.1. 常用WebDAV客戶端

軟體類型WindowsMacLinux描述
Adobe Photoshop獨立的WebDAV應用程序X  圖像編輯軟體,允許直接從WebDAV的URL打開文件和修改。
Cadaver獨立的WebDAV應用程序 XX指令列的WebDAV客戶端,支持文件傳輸,目錄樹顯示和鎖定操作
DAV Explorer獨立的WebDAV應用程序XXXJava GUI tool for exploring WebDAV shares
Macromedia Dreamweaver獨立的WebDAV應用程序X  Web製作軟體,可以直接讀寫WebDAV的URL
Microsoft Office獨立的WebDAV應用程序X  Office上產套件,可以直接讀寫WebDAV的URL
Microsoft Web 文件夾文件瀏覽器WebDAV擴展X  Novell NetDrive
GNOME Nautilus文件瀏覽器WebDAV擴展  XGUI file explorer able to perform tree operations on a WebDAV share
KDE Konqueror文件瀏覽器WebDAV擴展  XGUI file explorer able to perform tree operations on a WebDAV share
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.org)http://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的鎖定。