X Window研究笔记(3)

原创 2007年09月13日 21:27:00
X Window研究笔记(3)

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

3.客户/服务器架构

C/S架构是X Window最基本的架构,X Window的主体包括作为服务器运行的X Server,和中间的传输协议X Protocol,和客户封装X Protocol的函数库Xlib。应用程序通过Xlib把参数打包成X Protocol的格式,通过socket把请求发送给X Server,X Server执行请求之后再把返回值从原路返回给应用程序。

与传统的C/S架构不同的是,X Server并不是单纯的接受请求然后响应请求,它还可以主动主报事件,这通常是输入设备产生的事件。当然为了避免不必要的事件传输的开销,客户端可以决定接受哪些事件,过滤掉哪些事件。

 xwindowcs

X Window作为C/S 架构来设计,其理由是很充分的:

串行化共享资源。窗口资源是整个系统共享的,多个应用程序都要操作这些共享资源。为了有效的管理这些资源,至少要满足三点要求才行,其一是这些资源要在全局共享的,其二是要求对这些资源串行化访问,其三是要求输入设备等事件要能主动上报给应用程序,这些要求都正是C/S模型所擅长的。

远程显示。客户端在一台机器上运行,而服务器在另一个台机器上运行,这在VNC和RemoteDesktop之类的技术出现之前,这种特性为远程管理提供了非常方便的手段。客户端在远程机器上运行,而服务器XServer在本地远行,这就可以让远程的程序显示到本地机上。当然,这与传统的客户/服务器的物理位置正好反过来了。

语言与无关性。这又是C/S模型的另外一个好处,Unix下的编程语言可谓百花其放,X Window不可能为某单一语言而设计。而对于C/S模型,只要服务器端和客户端共享同样的X Protocol,两者完全可以用不同的语言开发。

从理论上说,客户端是可以不依赖于任何其它库,直接打包所有请求参数,解包所有的响应数据,就可以开发出基于X Window的应用程序。然而,这些打包解包操作比较繁琐,容易出错,也没有必要每个人都这样去做,Xlib封装了所有这些操作,简化了X程序的开发工作。由于大多数的toolkit都是C/C++写的,所以Xlib采用了C语言开发。

毫无疑问,基于Xlib可以写出在X Window上运行的GUI程序。在前面提到的X Window提供的服务中,我们可以看出,X Window提供的是非常底层的服务,就窗口而言,X Window根本不知道按钮、菜单、单选框、复选框、列表框、甚至不知道窗口管理器的存在,它唯一知道的就是窗口,这些都是非常低级的操作。

为了简化X应用程序的开发,不同组织开发了众多的 X toolkit,在这些toolkit中,都实现了一些常用的组件,以及一些公共函数。X Window的发布包带了好几种toolkit。X Window的规范中并没有规定GUI程序看起来是什么样子的,结果不同的组织开发出来的X toolkit百花齐放,形成不同的视感(look and feel),

现在可以用一种toolkit表现不同的视感了,用来模拟其它toolkit,让来自不同阵营的用户都感到舒服。这造就了大多数toolkit都能做到,让描述风格的配置文件独立于应用程序,这是一个非常有意义的进步。

GTK+和QT是目前最流行的X tool kit,GTK+用C开发的,QT是用C++开发的,从功能、风格和易用性来看,两者各有千秋,难分伯仲。

窗口管理程序的功能比较特殊,其实它不过是一个普通X Window的客户端应用程序,后面我们会对它作比较详细的介绍。

(待续)

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

第二十四章、 X Window 配置介绍

在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗! 为何称之为系统呢?这是因为 X 窗口系统又分为 X server 与 X client ,既然是...
  • mybluetiankong
  • mybluetiankong
  • 2014年03月04日 07:45
  • 3053

数理统计学习笔记——总体与样本

数理统计是研究大量随机现象规律性的
  • libaqiangdeliba
  • libaqiangdeliba
  • 2014年09月28日 10:29
  • 1138

Window 窗口层次关系

相信在Window 下面编程的很多兄弟们都不是很清楚Window 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。下面就说说Window...
  • Qsir
  • Qsir
  • 2017年05月16日 13:30
  • 144

X Window编程基础 1

理解 Xwindow 很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是一个...
  • lindyl
  • lindyl
  • 2014年03月01日 09:55
  • 1793

探究X Window System运行原理与启动过程

探究X Window System运行原理与启动过程         第一次在Debian下装XFree86,startx启动了twm,装了gnome 后startx启动了gnome环境,为什么...
  • pojkopj
  • pojkopj
  • 2013年11月15日 17:10
  • 830

大数据学习笔记·研究现状

什么是大数据如果逐字逐句来看两家公司对大数据的定义,你们会发现这两个定义非常相似,其中都提到了大量、高速和多样化的信息;关注发现、分析、洞见和决策制定。我想在某种意义上,在这个高度竞争的社会,创新意味...
  • xiang_freedom
  • xiang_freedom
  • 2016年04月22日 19:29
  • 3961

Linux下的图形界面——X Window的安装

X Window即X Windows图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽...
  • Wentasy
  • Wentasy
  • 2013年08月04日 09:48
  • 4123

Linux启动、关闭x-window

若需要关闭x-window可以在vi /etc/inittab将启动level改成3,若需要界面就改为5在已经没有界面的shell中要启动x-window,可以使用startx命令来启动这是因为Lin...
  • kida_yuan
  • kida_yuan
  • 2016年05月13日 09:12
  • 1322

Python笔记之入门(基础篇)

Python 3笔记之入门Python简单介绍  Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其...
  • zhangyifei521
  • zhangyifei521
  • 2016年05月15日 15:31
  • 5211

经典论文阅读笔记——Feature篇(上)

心血来潮在CSDN开通了博客,那就时不时写点东西吧。。 先写点部分Feature Extraction方面经典论文的阅读笔记,按论文发表的时间顺序 至于具体的原理就不过多记录了,写起来真的很麻烦,...
  • cfanchk
  • cfanchk
  • 2015年12月30日 15:40
  • 557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:X Window研究笔记(3)
举报原因:
原因补充:

(最多只允许输入30个字)