好书推荐 征服RIA:基于JavaScript的Web客户端开发

    征服RIA:基于JavaScript的Web客户端开发

征服RIA:基于JavaScript的Web客户端开发

    全书共分为5篇。JavaScript基础篇:介绍JavaScript的语法和基础应用。如果不打算深究JavaScript幕后机制的话,运用本篇的知识便能胜任一般的JavaScript开发了。JavaScript高级篇:揭示JavaScript的运行机理和高级应用,如面向对象编程、函数式编程和元编程。Ajax篇:Ajax是上帝赐予JavaScript的礼物。凭借着Ajax,JavaScript拥有了异步调度服务端业务逻辑的能力。本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和。NET开发的程序员安排了适合他们的DWR、Atlas框架。Ext篇,增值篇等内容。

前言

  RIA是什么 

  RIA是Rich Internet Application的缩写,意为富互联网应用,引申为富客户端应用。那么,RIA意味着什么呢?在回答这个问题之前,我们不妨先回顾一下从大型主机时代开始,应用软件系统发展至今所走过的历程:

  图中的两个坐标轴,分别代表Rich和Reach,即应用软件的界面表现力和应用软件所能影响到的人群。

  1.主机时代,界面表现力和用户数量无疑是最低的。少量的用户使用哑终端操作计算机。

  2.随着计算机制造成本的降低,尤其是个人计算机的普及,使得软件行业出现了一种新的部署结构:客户机负责提供丰富的用户界面、承担业务逻辑,在服务器上集中存储数据。这一阶段被称为C/S(Client/Server)时代。

  3.C/S结构最大的问题是部署和维护成本极高,一旦用户界面或者业务逻辑发生变化,便需要更新分布在每一台客户机上的软件。因此,B/S(Browser/Server)结构应运而生。在B/S结构中,客户端程序统一运行在Web浏览器中,用户界面由服务器程序渲染生成,客户端程序只负责展现。部署成本的降低,使得应用软件的用户数量激增:互联网能达到的地方,都可能出现你的用户。

  4.B/S结构至今被人褒贬不一。首先,客户机的计算能力几乎被废弃了,这是一种浪费;其次,用户界面的表现能力受制于Web浏览器,比起C/S结构发生了倒退。那么,能否创造一种在应用软件的界面表现力和部署成本之间双赢的局面呢?这就是所谓的RIA。

  富客户端应用也称胖客户端应用,是相对于B/S时代的瘦客户端应用而言的。在RIA时代,一个运行于Web浏览器中的客户端应用,要上升为富客户端应用,应该具备三个条件:

  不输给桌面应用的、具有丰富效果的复杂用户界面。

  有能力调度服务端的业务逻辑,自行组装所需要的用户界面,而不是一味地由服务端渲染生成用户界面。

  在一定程度上突破Web浏览器的限制。例如,在必要时能接收服务器推送来的数据,这意味着打破“浏览器请求、服务器响应”的单调格局。又例如,在必要时能在客户端存储部分数据——这是无与伦比的一次跨越,一旦拥有存储能力,富客户端应用便能在离线状态下继续为用户提供服务。

  JavaScript能为RIA做什么

  接下来,我们从技术方面分析RIA所能选择的实现手段。笔者归纳,致力于富客户端这一技术领域的IT厂商大致可以划分为以下4个阵营。

  微软阵营:鉴于微软是个人计算机操作系统的最大供应商,出于强化个人计算机地位的初衷,一直致力于富客户端应用开发技术的研发,这一点从其新近于.NET Framework 3.0中集成的WPF,伴随着Windows Vista推出的Windows边栏Gadgets,以及Silverlight等概念中便可见一斑。再加上原有的.NET WinForm、Win32 Application、ActiveX等,微软真不愧是乐此不疲的客户端应用开发技术的“高产户”。其中的ActiveX和Silverlight属于Web浏览器插件技术,非常有可能在RIA市场上抢到一些份额。

  Adobe阵营:Adobe紧锣密鼓地推出Apollo计划,在其集成开发环境Flex Builder中,使用ActionScript既能开发运行于Flash Player中的Flash,又能开发运行于桌面的AIR应用。由于Flash已经无处不在,Adobe是非常令人看好的一股力量。

  Sun阵营:提到Sun的大名,自然令人想到Java。没有人奢望JavaFX及SWT/Swing/AWT能撼动微软和Adobe,但是在桌面应用方面形成三足鼎立的局面还是值得期待的。在浏览器应用方面,Applet和Java Web Start已经积累下一些成功案例。

  Google、Mozilla阵营:Google是云计算和SaaS(Software as a Service)的领导厂商;Mozilla则拥有技术领先的Web浏览器。这是唯一没有推出自己的桌面应用开发技术,而把全部的赌注押在Web上的阵营。JavaScript+HTML+CSS的组合,远没有Silverlight和WPF看起来那么光彩照人,也不像Apollo计划那么活力四射。但是,正是这一组合,让微软不由得发出“Silverlight最大的对手是JavaScript”的感慨。也正是凭借着这一组合,Google开发出了GMap、GMail、GTalk等令人大开眼界的应用。出于自信,Google认为,未来RIA的平台标准已经确立了,那就是Web。

  在琳琅满目的实现方式中,JavaScript在其中巧妙地穿针引线,扮演着“黏合剂”的作用。JavaScript与各种浏览器插件技术(Silverlight、ActiveX、Flash、Applet)均拥有互操作能力,无论这种插件技术是主流的、还是生僻的,是传统的、还是现代的。

  JavaScript是唯一不需安装任何插件,便被各大主流Web浏览器支持的动态脚本,可谓拥有天然的跨平台性。未来之RIA,必是以JavaScript为核心!

本书的内容

本书旨在向读者推介以JavaScript为核心的RIA开发。读者将能从本书中发现,JavaScript如何整合各种技术流派,开发出名副其实的RIA:具有复杂用户界面,以Ajax方式异步调度服务端业务逻辑、自行组装所需的用户界面,同时突破Web浏览器的限制,具备长连接和离线能力。

  全书共分30章、1个附录。

如何使用本书  

本书共分为5篇:

  JavaScript基础篇:介绍JavaScript的语法和基础应用。如果不打算深究JavaScript幕后机制的话,运用本篇的知识便能胜任一般的JavaScript开发了。

  JavaScript高级篇:揭示JavaScript的运行机理和高级应用,如面向对象编程、函数式编程和元编程。

  Ajax篇:Ajax是上帝赐予JavaScript的礼物。凭借着Ajax,JavaScript拥有了异步调度服务端业务逻辑的能力。本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。

  Ext篇:能否提供复杂用户界面,是RIA的一个重要判定标准。在本书中,笔者把这一重任交给了Ext。希望读者能够基于Ext开发出不输给桌面程序的Web应用。

  增值篇:增值篇是本书的华彩乐章。在这一篇中,读者们将看到JavaScript如何游刃有余地整合各种技术流派,包括Flash、Applet、Silverlight、ActiveX等,如何开发反向Ajax程序、Comet程序和具备离线能力的程序。

  请读者关注上述的本书内容组织方式,基于这一方式,造成同类知识有时会分散在不同章节中的现象。而造成这一现象的深层次原因,则在于RIA技术选型实在太广泛了。希望读者能够融会贯通。

  例如Function对象。在JavaScript基础篇中仅仅把Function作为JavaScript语法中的一个知识点,而在JavaScript高级篇中则应该将其理解为JavaScript高级编程的精髓所在。

  又例如反向Ajax和Comet模式这一对具有内在联系的概念。在“适用于Java的Ajax框架——DWR”一章中首次引出反向Ajax这一概念;在“Comet(Server Push)模式”一章中再度实践了一次反向Ajax;而在“用JavaScript操作ActiveX插件”和“JavaScript与ActionScript的互操作”两章中,利用ActiveX和Flash技术再次分别实现了Comet模式。

  在RIA和JavaScript开发领域,不存在深奥的理论,有的只是动手实践的快乐。笔者和同事杨先亭是怀着轻松愉悦的心情完成本书的,也祝大家阅读愉快!