该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.2.2服务端/客户端模型
下一个需要介绍的就是X是一个基于网络的窗口系统。程序并不需要在真正支持显示的计算机上运行。一方面程序可以在一些本地工作站上运行,另一方面程序可以在远程计算机上运行并通过网络传送请求和键盘,鼠标响应。
就这一点来说,目前X联盟和其他厂商只支持TCP/IP协议和DECnet。只一点很有可能在不久的将来被改变。
控制着所有显示设备的程序被称作“服务端”(server)。首先,在这里使用“服务端”这个词有点令人困惑。当你坐在电脑前,你会认为服务端是在网络上的另一台计算机(就像文件服务器和打印服务器),而不是一个在本地运行且控制着你的显示设备的程序。需要记住的是,你的显示设备可以被网络上的其他系统所访问,对于它们来说,在你的计算机上运行的代码才真正控制着你的显示设备。
服务端的工作就是协调在本地或远程计算机上运行的用户程序(“客户端”或“应用”)和本地系统的资源。一个服务端应该完成以下几个内容:
1. 允许多个客户端进行访问。
2. 解释客户端通过网络发来的信息。
3. 通过网络向客户端发送用户的输入信息。
4. 完成二维绘图——图形的绘制是由服务端,而不是客户端,完成
5. 存储复杂的数据结构,比如窗口,指针,字体和“图形上下文”,既可以用资源ID进行查询并可以被不同的客户端共享的资源。在服务端存储这些数据可以减少客户端存储的数据量和在网络上传送的数据量。
因为X具有的网络透明性,客户端程序可以在被主机上的服务端允许的情况下访问网络上任何一个显示设备。在一个网络环境中,用户在同一显示设备上同时显示不同计算机上运行的几个程序是很常见的。
实际使用中,用户可以坐在计算机前可以使用本地的服务端来显示本地的程序的窗口,也可以显示远程计算机上运行的程序,这要求远程客户端有访问本地服务端的权限。网络上所有的用户都处在一个相似的情况下:尽管他们可以运行任何一台计算机上的程序,尽管他们都更倾向于在本地运行程序。这种使用网络的方式被称作分布式计算。分布式计算可以解决系统负载不均的问题。当一台主机上负载过大时,这台计算机上的用户可以在别的主机上运行一些程序来分担计算量。