《Java编程思想第4版[中文版](PDF格式)》第33章


甚至还有一种“Internet 综合症”的说法,对许多人狂热的上网行为提出了质疑。我们在这里有必要作一些 
深入的探讨,但在这之前,必须理解客户机/服务器系统的概念,这是充斥着许多令人迷惑的问题的又一个 
计算领域。
1。 客户机/服务器计算
客户机/服务器系统的基本思想是我们能在一个统一的地方集中存放信息资源。一般将数据集中保存在某个 
37 
…………………………………………………………Page 39……………………………………………………………
数据库中,根据其他人或者机器的请求将信息投递给对方。客户机/服务器概述的一个关键在于信息是“集 
中存放”的。所以我们能方便地更改信息,然后将修改过的信息发放给信息的消费者。将各种元素集中到一 
起,信息仓库、用于投递信息的软件以及信息及软件所在的那台机器,它们联合起来便叫作“服务器” 
(Server)。而对那些驻留在远程机器上的软件,它们需要与服务器通信,取回信息,进行适当的处理,然 
后在远程机器上显示出来,这些就叫作“客户” (Client)。
这样看来,客户机/服务器的基本概念并不复杂。这里要注意的一个主要问题是单个服务器需要同时向多个 
客户提供服务。在这一机制中,通常少不了一套数据库管理系统,使设计人员能将数据布局封装到表格中, 
以获得最优的使用。除此以外,系统经常允许客户将新信息插入一个服务器。这意味着必须确保客户的新数 
据不会与其他客户的新数据冲突,或者说需要保证那些数据在加入数据库的时候不会丢失(用数据库的术语 
来说,这叫作“事务处理”)。客户软件发生了改变之后,它们必须在客户机器上构建、调试以及安装。所 
有这些会使问题变得比我们一般想象的复杂得多。另外,对多种类型的计算机和操作系统的支持也是一个大 
问题。最后,性能的问题显得尤为重要:可能会有数百个客户同时向服务器发出请求。所以任何微小的延误 
都是不能忽视的。为尽可能缓解潜伏的问题,程序员需要谨慎地分散任务的处理负担。一般可以考虑让客户 
机负担部分处理任务,但有时亦可分派给服务器所在地的其他机器,那些机器亦叫作“中间件”(中间件也 
用于改进对系统的维护)。
所以在具体实现的时候,其他人发布信息这样一个简单的概念可能变得异常复杂。有时甚至会使人产生完全 
无从着手的感觉。客户机/服务器的概念在这时就可以大显身手了。事实上,大约有一半的程序设计活动都 
可以采用客户机/服务器的结构。这种系统可负责从处理订单及信用卡交易,一直到发布各类数据的方方面 
面的任务——股票市场、科学研究、政府运作等等。在过去,我们一般为单独的问题采取单独的解决方案; 
每次都要设计一套新方案。这些方案无论创建还是使用都比较困难,用户每次都要学习和适应新界面。客户 
机/服务器问题需要从根本上加以变革!
2。 Web 是一个巨大的服务器
Web 实际就是一套规模巨大的客户机/服务器系统。但它的情况要复杂一些,因为所有服务器和客户都同时 
存在于单个网络上面。但我们没必要了解更进一步的细节,因为唯一要关心的就是一次建立同一个服务器的 
连接,并同它打交道(即使可能要在全世界的范围内搜索正确的服务器)。
最开始的时候,这是一个简单的单向操作过程。我们向一个服务器发出请求,它向我们回传一个文件,由于 
本机的浏览器软件(亦即“客户”或“客户程序”)负责解释和格式化,并在我们面前的屏幕上正确地显示 
出来。但人们不久就不满足于只从一个服务器传递网页。他们希望获得完全的客户机/服务器能力,使客户 
(程序)也能反馈一些信息到服务器。比如希望对服务器上的数据库进行检索,向服务器添加新信息,或者 
下一份订单等等(这也提供了比以前的系统更高的安全要求)。在Web 的发展过程中,我们可以很清晰地看 
出这些令人心喜的变化。
Web 浏览器的发展终于迈出了重要的一步:某个信息可在任何类型的计算机上显示出来,毋需任何改动。然 
而,浏览器仍然显得很原始,在用户迅速增多的要求面前显得有些力不从心。它们的交互能力不够强,而且 
对服务器和因特网都造成了一定程度的干扰。这是由于每次采取一些要求编程的操作时,必须将信息反馈回 
服务器,在服务器那一端进行处理。所以完全可能需要等待数秒乃至数分钟的时间才会发现自己刚才拼错了 
一个单词。由于浏览器只是一个纯粹的查看程序,所以连最简单的计算任务都不能进行(当然在另一方面, 
它也显得非常安全,因为不能在本机上面执行任何程序,避开了程序错误或者病毒的骚扰)。
为解决这个问题,人们采取了许多不同的方法。最开始的时候,人们对图形标准进行了改进,使浏览器能显 
示更好的动画和视频。为解决剩下的问题,唯一的办法就是在客户端(浏览器)内运行程序。这就叫作“客 
户端编程”,它是对传统的“服务器端编程”的一个非常重要的拓展。
1。11。2 客户端编程(注释⑧)
Web 最初采用的“服务器-浏览器”方案可提供交互式内容,但这种交互能力完全由服务器提供,为服务器 
和因特网带来了不小的负担。服务器一般为客户浏览器产生静态网页,由后者简单地解释并显示出来。基本 
HTML 语言提供了简单的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,另外还有一个 
按钮,只能由程序规定重新设置表单中的数据,以便回传给服务器。用户提交的信息通过所有Web 服务器均 
能支持的“通用网关接口”(CGI)回传到服务器。包含在提交数据中的文字指示CGI 该如何操作。最常见的 
行动是运行位于服务器的一个程序。那个程序一般保存在一个名为“cgi…bin”的目录中(按下Web 页内的一 
个按钮时,请注意一下浏览器顶部的地址窗,经常都能发现“cgi…bin”的字样)。大多数语言都可用来编制 
这些程序,但其中最常见的是 Perl 。这是由于Perl 是专为文字的处理及解释而设计的,所以能在任何服务 
器上安装和使用,无论采用的处理器或操作系统是什么。
38 
…………………………………………………………Page 40……………………………………………………………
⑧:本节内容改编自某位作者的一篇文章。那篇文章最早出现在位于 mainspring。 的Mainspring 
上。本节的采用已征得了对方的同意。
今天的许多 Web 站点都严格地建立在CGI 的基础上,事实上几乎所有事情都可用 CGI 做到。唯一的问题就是 
响应时间。CGI 程序的响应取决于需要传送多少数据,以及服务器和因特网两方面的负担有多重(而且CGI 
程序的启动比较慢)。Web 的早期设计者并未预料到当初绰绰有余的带宽很快就变得不够用,这正是大量应 
用充斥网上造成的结果。例如,此时任何形式的动态图形显示都几乎不能连贯地显示,因为此时必须创建一 
个GIF 文件,再将图形的每种变化从服务器传递给客户。而且大家应该对输入表单上的数据校验有着深刻的 
体会。原来的方法是我们按下网页上的提交按钮(Submit);数据回传给服务器;服务器启动一个CGI 程 
序,检查用户输入是否有错;格式化一个 HTML 页,通知可能遇到的错误,并将这个页回传给我们;随后必须 
回到原先那个表单页,再输入一遍。这种方法不仅速度非常慢,也显得非常繁琐。
解决的办法就是客户端的程序设计。运行 Web 浏览器的大多数机器都拥有足够强的能力,可进行其他大量工 
作。与此同时,原始的静态HTML 方法仍然可以采用,它会一直等到服务器送回下一个页。客户端编程意味着 
Web 浏览器可获得更充分的利用,并可有?
小说推荐
返回首页返回目录