VNC V/S Exceed

现在经常在unix和windows两个平台来回折腾,
laptop 用的是windows, 工作server用的是 unix,
所以干活的时候基本是从windows连到unix,常见的方式有 VNC 和Exceed.

以前我基本是在 windows 上启动本地的X server,然后 telnet 上unix启动KDE,CDE之类窗口管理软件并且设定display指向 windows 地址.这样unix的窗口系统就会绘制在windows上,和windows的窗口系统融合在一起.
我觉得在windows本地绘制一个KDE之类的窗口系统用起来比较方便,不过如果不需要那只启动 xterm 之类就可以了.
这类安装在windows上的server软件很多,Exceed最为出色, 其次还有xwin等等.

后来换了工作环境,新的公司里一般用 VNC ,这类操作原理和Exceed完全不同,
X提供了图形界面的绘制和程序分离的server-client方式,这也是unix阵营引以为傲并抨击windows的窗口系统设计拙劣的武器.
然而vnc绕过了或者说放弃了这个方式, 采用了类似于windows远程桌面的方式,
完全在 unix上绘制窗口,然后通过 vnc 协议发送给windows上的vnc viewer.
从unix的忠实fans来看,这相当于放弃优越的X方式,投降给了windows,所以很多人从心底里不喜欢这种方式.

当然我并不是个unix极端主义者,不过起初我也并不喜欢vnc.
主要是因为vnc有这样一些缺点:

1. 窗口模式
vnc 只能提供一个单一的窗口,所有的X窗口都绘制在里面,不能够单独显示在任务栏上和windows窗口统一管理.
而 Exceed 等软件支持多窗口,每个unix窗口都可以像windows窗口一样管理,使用起来比较方便.
不过 vnc 要提供多窗口模式并不是难事,不知道作者将来有没有这个计划.

2. 绘制效率
从实现原理上讲, vnc 的实现比单纯用X server多了一步, 而且传送的是图象信息,所以无法从本地渲染,绘制效率要低一些,
反映在使用上就是窗口刷新和鼠标键盘响应较慢,这在带宽有限的情况下会让用户很不耐烦(当然,好处是可以提高你的耐性!).

3. 字体问题
很多人希望在unix上使用windows的字体,一个可能是习惯问题,二来可能windows字体确实比较美观一些(至少我觉得是吧).
vnc 的绘制在unix上,所以所有的字体都是unix本地的, 要支持额外字体需要在 unix 上另外安装, 我花了不少时间安装字体但总不太理想.
而Exceed可以支持直接使用windows上的字体进行绘制.

注:编辑器之类对于字体要求较高的程序可以使用putty, 通过telnet或者ssh等方式连接到服务器, 这时可以通过putty的功能采用本地字体,缺点是只能使用shell界面。不过我一直用的是VIM, 所以命令行界面对我而言没什么问题。

另外我用的 vimvnc 里面字体会模糊,像被腐蚀过,很淡,一开始我怀疑是 vim 的问题,
后来对比Exceed才发现是 vnc 显示的问题.

注:不过最近发现这是vnc的一个小bug, 换了版本就好了。

基于上面的原因,我还是继续用Exceed. 不过渐渐的,也体会到vnc的一些好处.

1. 安装问题
vnc客户端只有一个exe文件,不用安装,直接运行就可以了.而Exceed最新版有好几百M.
另外Exceed是商业软件, vnc 则是开源的,所以对于公司来说当然喜欢用 vnc.

2. 稳定性
vnc客户端可以随时关掉,因为其X server 在unix端,关vnc client没有影响.
下次再开vnc client, 所有窗口都还保持上次的状态.
而Exceed方式,一旦关掉窗口,也会关掉unix程序.
这样你如果windows机器关闭所有的unix程序都会关闭.

有的时候你要跑一个长时间的任务,这时vnc的优势就体现出来了.
当然,你也可以用Exceed,不过得一直开着你的客户机,不过windows能撑几天呢?
一旦死机全都玩完儿啊:<

而Exceed的X server有个别情况会崩溃,而且是全部窗口一起崩溃,
当你在一堆波形窗口中追踪某个信号很久结果X server突然挂掉真是欲哭无泪阿.
我是经历过好几次,痛定思痛,痛何如哉…

对于工作而言,稳定性至关重要,所以对于长时间的或者需要长期保留窗口状态,比如观察波形这些应用
我还是乖乖的用 vnc. 其他的时候,字体看着舒服,反应迅速就行了,当然是用Exceed了.

3. 带宽问题
这一点我一直没有考虑到,有次在公司里和Micheal 谈论Exceed 和VNC的问题时,我们都觉的VNC太慢, Exceed很快,
旁边的Vesy 提到说Exceed很占带宽,所以公司才用VNC的。我细想了下确实很有道理, Exceed所用的X协议是多年前设计的,而且没有使用多复杂的压缩技术,所以流量是比较大的,而且完全没有优化的余地,因为只有遵守X协议才能连接。而 VNC的服务端客户端是配对的,完全可以最大化地优化流量。

最后, 我还是希望vnc能尽快地支持多窗口模式,这样就比较完美了.毕竟是开源软件嘛,还是要无条件支持的:)

vnc
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.