KIO是KDE當中用於處理各種協定的一個模組。可以用於訪問各種協議,例如http,ftp等等各種協議。對於開發者來說,這是一個很方便的技術,可以使得開發者不用關注於協議和檔處理。
Gnome也有類似的技術,gio,和kio不同的是,它是基於gvfs的。和KIO相比,似乎gio的性能要更好一些。這也是由於設計上的一些原因導致的。
gvfs採用FUSE,因此支援的協定都是能夠很好映射到檔案系統上的協議,例如ftp,smb,所有的內容都會被掛載到.gvfs下麵。KIO則 是為每個協定提供一個slave進程,通過IPC來訪問,一方面提供了更好的擴展性,例如支援各種無法映射到POSIX的協定,但是另一方面也帶來了一些 性能問題。
不過在相反的一方面,也能實現一些自訂的檔訪問。例如對於cd的訪問就是很有意思的一個kio。
如果各位有cd的話,用dolphin打開cd,就會發現cd當中的音軌變成了各種格式的檔,例如mp3,ogg,wav等等。(以前用過,不過 現在手頭沒有cd,就不做展示了),直接利用dolphin就可以進行轉碼的的操作。又比如,kde可以直接流覽svn的版本庫(需要安裝 kdesvn)。
於是我順便察看了一下我檔案系統裡面的kio模組,偶然還發現幾個很有意思的東西。man/info(這個其實是被khelpcenter使用的),用於 流覽系統的man,settings,和systemsettings一樣的分類流覽。applications,流覽系統安裝的程式。 imap/pop3,可以用dolphin直接流覽imap/pop3協議的郵件。具體系統當中支援的kio可以通過khelpcenter察看。
KIO的存在其實極大豐富了KDE程式的網路通訊協定上和檔訪問的功能,不過和採用FUSE的gvfs相比較而言,我更喜歡gvfs,它提供的是和 POSIX檔一樣的介面,現在其他不支援kio的程式如果想訪問kio的檔的話,基本就是採用在tmp下面創建對應的暫存檔案再訪問的形式,和真正的 檔案系統相比,相容和擴展性就差一些了。之前也關注過兩個類似的專案,kio-giobridge,和kio-fuse,但是似乎都已經停止了開發。希望 將來能夠在支援POSIX的協議上採用類似VFS的方式提高一些性能。對於開發者而言,KIO則提供了極其強大的靈活性。例如imap的kio,開發一個 支援imap的郵件用戶端就可以將其轉化為imap協議上的檔操作了。konqueror的書簽也可以通過kio管理,這樣也可以很容易的實現一個統一 的書簽管理介面(interface)。
一個小tip:
想必大家如果用linux的話,可能經常會使用sftp進行檔案傳輸,如果用創建網路資料夾的嚮導的話,dolphin總是優先創建fish協定而不是sftp協定的連結,關於這兩個協議的差別,請參考wikipedia(fish,sftp)。用sftp似乎會得到更好的性能。
http://ikde.org/%E6%8A%80%E6%9C%AF/%E9% ... %BC%89kio/