WEB客户端技术
Web客户端的主要作用之一就是用来发送HTTP请求并接收服务器响应。也就是说,只要能达成这一目的的任何工具或程序,都可作为Web的客户端来对待,而不能仅限于浏览器。比如我们可以使用CURL工具来处理HTTP请求和响应,也可以使用编程语言(只要能支持网络编程的程序设计语言均可,如JAVA, C#, C++, C, PHP等,并且不难,后续章节将具体介绍如何使用Java来处理HTTP协议)。也正因为如此,对Web系统的测试变得不再简单,我们不能单纯只是考虑在标准的网页浏览器中进行测试,还需要考虑到用户完全有可能绕开浏览器界面,而直接使用其它工具或者自己编写程序来完成请求的发送和响应的接收。这对Web系统的安全性提出了挑战,需要我们在设计系统时考虑到这些因素,因为服务器在处理请求时是不管请求的来源是否合法的,当然,它也没法管。这是网络体系结构的设计所决定的。
基于以上的分析,我们既然可以使用其它工具或者自己编写程序来处理HTTP请求和响应,那是不是就意味着我们可以开发出自己的浏览器来呢?理论上来说是这样的,因为处理HTTP请求和响应本身就是浏览器的重要工作之一。但是开发的一个浏览器的技术瓶颈并不在对协议本身的处理上,而在于对响应的解析和对Javascript脚本的解析处理,这牵涉到浏览器的另一大技术核心:渲染引擎。我们评价一个浏览器的好与坏,也主要是在对浏览器的渲染引擎进行评价。我们可以看到,每家厂商的浏览器的主要功能都差不多,但是处理速度却不一样,并且对标准的支持也不尽相同,其核心就在于渲染引擎的不一样。我们也许会经常听到浏览器厂商在做宣传时会写上“XXX浏览器搭载了最新版页面渲染引擎,速度大幅提升”之类的广告词,在原因也就在此。
网页浏览器的页面渲染引擎负责取得网页的内容(HTML、XML、图像等等)、整理排版(例如CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要页面渲染引擎。当前比较流行的页面渲染引擎有如下几种:
1、 Trident页面渲染引擎
IE浏览器所使用的内核,也是很多浏览器所使用的内核,通常被称为IE内核。基于Trident内核的浏览器非常多,这是因为Trident内核提供了丰富的调用接口。老的Trident内核(比如常说的IE6内核)一直是不遵循W3C标准的,但是由于它的市场份额最大,所以后果就是大量的网站只支持老的Trident内核,依据W3C标准写的网页在老的Trident内核下面又出现偏差。目前可供调用的最新版的Trident内核是IE9所用的内核,相较之前的版本对W3C标准的支持增强了很多。
Trident内核的浏览器:
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
世界之窗1、世界之窗2、世界之窗3;
360安全浏览器1、360安全浏览器2、360安全浏览器3、360安全浏览器4、360安全浏览器5;
傲游1、傲游2;搜狗浏览器1;腾讯TT;阿云浏览器(早期版本)、百度浏览器(早期版本)、瑞星安全浏览器、Slim Browser;
GreenBrowser、爱帆浏览器(12 之前版本)、115浏览器、155浏览器;
闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器;
2、 Gecko页面渲染引擎
Netscape6启用的内核,现在主要由Mozilla基金会进行维护,是开源的浏览器内核,目前最主流的Gecko内核浏览器是Mozilla Firefox,所以也常常称之为火狐内核。因为Firefox的出现,IE的霸主地位逐步被削弱,Chrome的出现则是加速了这个进程。非Trident内核的兴起正在改变着整个互联网,最直接的就是推动了编码的标准化,也使得微软在竞争压力下不得不改进IE。不过比较可惜的是,虽然是开源的,也开发了这么多年,基于Gecko的浏览器并不多见,除了一些简单的改动(坑爹的X浏览器)或者是重新编译(绫川ayakawa、tete009),深度定制或者增强型外壳的还比较少见。另外就是有一些其它软件借用了Gecko内核,比如音乐管理软件SongBird。
常见的Gecko内核的浏览器
Mozilla Firefox、Mozilla SeaMonkey
Epiphany(早期版本)、Flock(早期版本)、K-Meleon
3、 KHTML页面渲染引擎和WebKit框架
KHTML,是HTML页面渲染引擎之一,由KDE所开发。KHTML拥有速度快捷的优点,但对错误语法的容忍度则比Mozilla产品所使用的Gecko引擎小。苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用。 WebCore及WebKit引擎均是KHTML的衍生产品; WebKit是 Mac OS X v10.3及以上版本所包含的软件框架,WebKit是Mac OS X的Safari网页浏览器的基础。
使用KHTML页面渲染引擎的浏览器有:Safari,Konqueror, Google Chrome等。Google Chrome即将启用自己的渲染引擎Blink。
4、 Presto页面渲染引擎
Presto是一个由Opera Software开发的浏览器页面渲染引擎,应用于Opera 7.0~9.60版,它取代了旧版Opera中所使用的Elektra页面渲染引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。
使用Presto页面渲染引擎的浏览器有:Opera,任天堂DS浏览器。
5、 其它页面渲染引擎
使用Java软件平台的HotJava,Opera Mini,UCWEB。
使用Tasman渲染的Internet Explorer for Mac,SN for Mac OS X。
使用纯文字界面的Lynx,inks,w3m。
以上都是排版引擎,接下来说说JavaScript引擎。顾名思义,JavaScript引擎就是用来渲染JavaScript的。为什么要单独拿出来说呢?因为它涉及到跑分。经常看见很多文章在报道说哪个浏览器更快,其实大部分说的就是JavaScript的渲染速度,而不是页面的载入速度。在网速许可的情况下,其实各个浏览器的页面载入速度差别不大(Opera逊色一些)。那是不是说对比JavaScript的渲染速度其实没有意义?也不是这么说,因为现在JavaScript在页面中的比重会越来越大,越来越多的动态页面开始大量借助JavaScript,比如现在主流的SNS、邮箱、网页游戏,所以JavaScript的渲染速度也是一个很重要的指标。JavaScript的渲染速度越快,动态页面的展示也越快。Opera在JavaScript引擎的跑分上面一直都是很牛的,一般来说最新测试版之间PK,Opera基本都会夺冠。
1、 Chakra
查克拉,IE9启用的新的JavaScript引擎。
2、 SpiderMonkey/TraceMonkey/JaegerMonkey
SpiderMonkey应用在Mozilla Firefox 1.0-3.0,TraceMonkey应用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey应用在Mozilla Firefox 4.0及后续的版本。
3、 V8
应用于Chrome、傲游3。
4、 Nitro
应用于Safari 4及后续的版本。
5、 Linear A/Linear B/Futhark/Carakan
Linear A应用于Opera 4.0-6.1版本,Linear B应用于Opera 7.0~9.2版本,Futhark应用于Opera 9.5-10.2版本,Carakan应用于Opera 10.5及后续的版本。
6、 KJS
KHTML对应的JavaScript引擎。
可见,Web客户端是如此的丰富繁杂,这对Web系统测试提出了很大的挑战,特别是兼容性和可用性测试,当然还包含安全性测试。我们不单要熟悉每种渲染引擎和相应浏览器的特性,还需要了解它们之间的各种差异,便于设计出适合用户使用的兼容性好,安全性高的系统。
WEB服务器的发展趋势
目前,Web服务器的发展有三个主要趋势:
1、 从HTML到XML(Extensible Markup Language-可扩展标记语言)
HTML被称为“第一代Web语言”,如前面的介绍,HTML作为Web的开发语言,对Web应用的发展起到了关键性的作用。但是HTML有一个致命的缺点:只适合于人与计算机的交流,不适合计算机与计算机的交流。HTML通过大量的标记来定义文档内容的表现方式,它仅仅描述了应如何在Web浏览器页面上布置文字、图形,并没有对Internet的信息含义本身进行描述,而信息又是Web应用中最重要的内容。通过HTML表现出来的文字、图形内容很容易被人理解,但却不利于计算机程序去理解。另外,HTML的另一个问题就是它的标记集合是固定的,用户不能根据自己的需要增加标记;而且各种浏览器的规格不尽相同,要使我们用HTML做的网页能够被所有浏览器正常显示,我们只能够使用W3C(万维网协会)规定的标记来创建网页。
正如前面所说,Web服务器向Web浏览器提供的信息都是来自有一定结构的数据库,在数据库里,为了检索和管理的方便,信息按照它本身的意义(如姓名、年龄、工作单位等)被存放在相应的字段里,一旦这些数据被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,其原来的意义无法转移到HTML标记中来,用户也就无法按照信息本来的意义去阅读。并且,由于操作系统以及数据库的不同,不同的系统及应用层面之间要想互相理解对方的数据格式是相当困难的。这就需要一种新技术或标准能够将最初保存在数据库服务器中的原始数据结构在不同的系统层面共享。这种新技术就是XML。
使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML是SGML的一个应用实例。从结构上说,XML文档遵从SGML文档标准。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标准通用标记语言)发展而来,二者的不同在于:XML可以让我们根据要表现的文档,自由地定义标记来表现具有实际意义的文档内容,例如,我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,将文档的内容组织成丰富的完整的信息体系。总起来说,XML具有四大特点:便于存储的数据格式、可扩展性、高度结构化以及方便的网络传输,这些特点为我们创建开放、高效、可扩展、个性化的Web应用提供了一个崭新的起点。
2、 从有线到无线
电子商务正在从台式机向着更为广泛的无线设备发展,Cahners In-Stat市场分析家预测,世界范围内的无线用户的人数将会从2000年的2.71亿增加到2004年的13亿。Aberdeen集团的研究主任Darcy Fowkes认为,采用无线方式进行电子商务的优势并不仅仅在于方便,它还可以节约公司的财力,而且,移动办公能使工作更加高效。
然而,由于多种无线网络类型、标记语言、协议和无线设备并存的复杂情况,使得网络内容和数据转换成能够被无线设备所识别的格式并不容易。目前,许多企业都在致力于开发能够把应用程序以及互联网内容扩展到无线设备上的产品。
例如,IBM新版本的WebSphere Transcoding Publisher 3.5增加和改进了许多新的特性,可以将企业内部网上的数据翻译到多种无线设备上。该版本中新的特性包括对更多的无线设备、数据格式的支持,以及语言翻译功能。它基于Java架构,能把用HTML和XML等标记语言编写的应用程序和数据转换成WML、HDML(Handheld Device Markup Language)和iMode等无线设备所能识别的格式,这样,通过手持设备就可以访问互联网上的信息。
无线设备厂商Mobilize也推出了Mobilize Commerce产品,帮助企业进入无线网络。该软件可以通过无线连接的方式访问企业的内部系统,远程地实现订单发送,并进行确认。Mobilize Commerce可以充分利用XML对信息进行格式转换,以适合于无线设备,这些无线设备包括笔记本电脑、个人数字助理、无线电话、网络电话和双向寻呼等。
3、 从无声到有声
世界上现在有十亿个电话终端,有超过2亿的移动电话。而就人自身的交流习惯来看,人们也更愿意利用听和说的口头的方式进行交流。
目前,文本语音转换器(TTS,Text to Speech)的研究工作已经取得了很大的进步,实现了自动的语言分析理解,并允许TTS的使用者增加更多的韵律、音调在讲话中,使TTS系统的发声更接近人声。在自动语音识别系统(ASR)领域里,自动语音识别系统在从整个词的模仿匹配,向音素层次的识别系统方向发展。自动语音识别系统的词汇表由一个基于声音片断的字母表构成,而且这种词汇表是受不同语言限制的。基于这种方式,在一个宽广的声音行列里,讲话能被识别系统发现和挑拣出来,并加以识别。并且,在识别一个词的时候,每一个音素将从系统的输入中挑拣出来,拼接组合后与已经有的音素和词语模板进行比较,来产生需要的模板。音素的识别大大减轻了ASR对讲话者的依赖性,并且使得它非常容易去建立大型的和容易修改的语音识别字典,从而满足不同应用市场的需求。
Web语音发展的另一方面是VoiceXML(Voice Extensible Markup Language-语音可扩展标记语言)的进展。VoiceXML的主要目标是要将Web上已有的大量应用、丰富的内容,让交互式语音界面也能够全部享受。Web服务器处理一个来自客户端应用的请求,这一请求经过了VoiceXML解释程序和VoiceXML解释程序语境处理,作为响应,服务器产生出VoiceXML文件,在回复当中,要经过VoiceXML解释程序的处理。VoiceXML 1.0规范基于XML,为语音和电话应用的开发者、服务提供商和设备制造商提供了一个智能化的API。VoiceXML的标准化将简化Web上具有语音响应服务的个性化界面的创建,使人们能够通过语音和电话访问网站上的信息和服务,像今天通过CGI脚本一样检索中心数据库,访问企业内部网,制造新的语音访问设备。VoiceXML的执行平台上面加载了相应的软件和硬件,例如,ASR、TTS,从而实现语音的识别以及文本和语音之间的转化。2000年5月23日,W3C接受了语音可扩展标记语言VoiceXML 1.0作为实例。
目前,IBM、Nokia、Lucent、Motorola等著名厂商都已经开发出相应支持VoiceXML的产品,但现在的ASR和TTS系统大多还不能支持中文。