所有的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 | Java 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擴展 | X | GUI file explorer able to perform tree operations on a WebDAV share | ||
| KDE Konqueror | 文件瀏覽器WebDAV擴展 | X | GUI file explorer able to perform tree operations on a WebDAV share | ||
| 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的流行程序。
在Windows下,有許多已知的應用程序支持WebDAV客戶端功能,例如微軟Office,[59]Adobe的Photoshop和Macromedia的Dreamweaver程序,他們可以直接打開和保存URL,並且在編輯文件時經常使用WebDAV的鎖。
需要注意儘管這些程序也存在於Mac OS X,但是在這個平台上並不是直接支持WebDAV。實際上在Mac OS X,會離開對應的程序,因為OS X已經實現了底層的文件系統級WebDAV支持。
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請求,但是這都不相干;我們假定這些客戶端都是針對自動版本化版本庫工作。
一些流行的文件瀏覽器GUI程序支持WebDAV擴展,允許用戶將DAV共享當作本地文件夾訪問,例如Windows瀏覽器可以以「network place」方式瀏覽WebDAV伺服器。用戶可以拖入和拖出文件,或者是改名、拷貝或刪除其中的文件。但是因為它只是文件瀏覽器的一個特性,DAV對普通應用不可見,所有的DAV交互必須通過瀏覽器界面。
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中死掉,只是要被埋葬了。還是有辦法適用這個技術:
到網路位置。
新增一個新的網路位置。
當要求輸入,輸入版本庫的URL,但URL中要包含埠號號。例如http://host/repos的輸入是http://host:80/repos。
回應所有的認證請求。
有各種解決問題的方法,但好像沒有一種能夠在各版本和各級別的Windows XP中有效。在我們的測試裡,只有上面這種策略在各種系統中有效。WebDAV社群一致認為避免使用新的網路文件夾實現,而使用舊的,如果你希望在Windows XP使用真實的文件系統級的客戶端,請使用第三方的程序,例如WebDrive或NetDrive。
最後一個提示:如果你嘗試使用XP的網路文件夾,確定你有Microsoft最新的版本,Microsoft在2005年1月發佈了一個問題修正,在http://support.microsoft.com/?kbid=892211,特別的,這個發佈是用來修正在訪問DAV時發生無限遞歸的問題。
Nautilus是GNOME桌面(http://www.gnome.org)http://www.kde.org)
GNOME的Nautilus裡,從選擇,並且輸入URL。版本庫就會顯示出來,就像其他文件系統。
KDE的Konqueror裡你需要在地址欄使用webdav://模式來輸入URL,如果你輸入http://的URL,Konqueror會像普通的web瀏覽器。你會看到mod_dav_svn輸出的普通HTML目錄列表。通過輸入webdav://host/repos代替http://host/repos,Konqueror就成為了一個WebDAV客戶端,並且按照文件系統的方式顯示版本庫。
WebDAV文件系統實現被認為是最佳的WebDAV客戶端,它通過低級的文件系統模塊實現,通常在操作系統的核心。這意味著DAV共享像網路的其他文件系統一樣裝載,就像在Unix下面裝載NFS,或者是在Windows下裝載一個SMB共享。結果就是這種客戶端為所有程序提供了對WebDAV得透明訪問。
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)
Apple的OS X操作系統是集成的文件系統級的WebDAV客戶端,通過Finder,選擇的條目,輸入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
[59] 在Windows下,有一些有名的集成WebDAV客戶端功能的軟體,例如Microsoft's Office、Adobe的Photoshop和Macromedia的Dreamweaver。它們都可以直接打開和保存URL,也可以在編輯時大量的使用WebDAV的鎖定。