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察看。
浏览应用程序
没想过有一天dolphin也可以当邮件客户端吧……
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似乎会得到更好的性能。
P.S.
特意找出以前周杰伦的CD show下audiocd的功能:
7 FEEDBACKS