原稿:Rich Internet Applications with Adobe Flex & Java 28-30
章节:Architecture of Rich Internet Applications
作者:Yakov Fain,Dr.Vector Rasputnis,Anatole Tartakovsky
时间:2008-4-27
翻译者:刘锦行(whizen)
修订:
什么是富客户端互联网应用程序?
在软件工业的历史已经发生了惊人的改变.我们从单机时代进入了客户端/服务器端的时代.曾经为客户带来便利和生产力提升的单机系统进入了历史.随着互联网时代的到来,一群梦想家正在改变我们的桌面.计算机销售商和IT公司渴望从复杂的客户端/服务器端的版本管理中解脱出来,而技术人员却需要他们来进行复杂的多层计算.这个时候,客户端/服务器端模式成为了负担.为了以示区别,这种虽然很不错但是显得很传统的桌面应用程序被称为”富客户端”.另外,那些多线程.传递消息.持久甚至简单的玩具都在服务器上运算的,如果我们不去想这些,只知道最后他为用户提供了丰富的体验而且甚至完全不用去部署.这个让我们感觉良好的家伙是新的应用程序类型称之为:瘦客户端.
然后我们遇到了新的挑战,那就是我们进入了富客户端互联网应用程序的年代,这是一种使用颇具怀旧色彩的强力桌面应用程序来代替那些可恶的需要下载的页面.RIA们运行在虚拟机之上,具备马上成为一个全功能桌面程序的潜力.与那些只需要从服务器上下载而来只能显示简单内容的WEB页面不同的是,RIA却是的的确确运行在客户端的.就像在客户端/服务器端那个年代一样,能够在本地的处理很多的数据(例如,排序,分组,过滤),相关的分析师认为在未来的3,4年内将有很多新开发的项目使用RIA技术.
一个RIA结合了使用WEB带来的低成本的部署方案和丰富的用户体验的好处,最少比现在的桌面应用程序要好.而且,因为RIA不需要刷新整个页面来更新其中的数据,所以响应速度也更快而且通讯消耗也更低.有点类似一个部署了整个地球的客户端/服务器端应用程序.
让我们来描述一个购物车的例子,”过时”的WEB页面和RIA之间的区别.不使用RIA技术的WEB应用程序是基于页面的. HTTP协议是个无状态的协议,所以当用户从一个页面移动到另外一个页面的时候,WEB浏览器无法记得用户在上个页面做的操作.为了治疗这个”失忆症”,必须使用HTTP session来在服务器端记录用户的状态.
假设以下是在线购物线程的流程,依次进行以下操作:
1,用户在 页面#1 搜索一个商品
2,服务器会处理这个请求,并且返回一个可能包含(也可能不包含)符合要求商品的页面#2
3,用户将这个物品放入购物车,这个操作也会导致在服务器端也要创造出购物车并且储存用户的商品.随后,服务器将返回一个页面#3,这样用户就能够继续购物(重复2 3步)或者去结帐#4
在结帐操作中,服务器会从session对象中检索被选择的商品,并且返回一个页面#5来告诉用户填写物流信息.这些数据返回到服务器进行保存后,再次返回一个页面#6给客户端,里面包含着支付的相关信息.随后将在页面#7中确认支付信息并且最终完成购物.
这个最简单的在线购物流程却要与服务器之间交互7个来回.这与桌面应用程序有相当大的区别.虽然在WEB应用程序之中,虽然刷新单个的页面很快,而且通常用户都能接受8秒以内的延迟.但是这样能够刺激用户来完成购物呢?在想一下,因为每次你的系统给了用户7次的重新考虑的机会.假设网络和服务器很慢的时候结果又是如何呢?漫长的等待只可能让你的潜在客户离开你的店铺.
对比起瘦客户端来说, RIA程序去除了这些繁杂的应答来回,而且因为大多数处理都是在客户端上执行的,这样而来极大的改善了系统在大量数据处理的时候的性能.另外,RIA程序是可以持有状态的.他能在客户端储存数据,简单的说,RIA不是一些完全靠服务器端控制的页面.他们是确确实实在客户端上运行的程序,只在处理和交互数据的时候和服务器端进行通讯.
RIA程序可谓同时具备用户友好的界面和企业级应用程序的优点.众所周知在用户最后结帐的时候页面却失去了回应而导致不得不取消掉订单这样的事故让一些电子商务网站如在线票务预订系统或者在线零售商蒙受损失.我们有相当多的用户投诉电话,为客服中心和系统本身都产生了不可忽视的成本增长.需要相当之多的雇员来维持系统的运行不得不说对于一个企业的生产力造成了影响.而RIA能够提供比HTML应用程序更好的效率,这将减少操作和构造的成本.最后,我们来介绍一下一些设计优良的RIA用来构造我们的”捕鼠器”(指用来引诱用户上钩)
2002年的时候,MACROMEDIA公司展示了富客户端应用程序的模型,它让所有的”老旧”的WEB 1.0页面颤抖.但是最早的RIA应用程序却是在1995年由JAVA创造出来的.JAVA最初被大家接受的是一个叫做applets的一个可以下载的小程序.applets是使用java AWT(之后是Swing)类库做成的,依靠浏览器上的JVM运行.但是因为相当使用起来相当有技术难度,applets最终并没有怎么流行,反倒是JAVA自身在服务器端和移动平台上风光无限.
2004年的时候,TIM O’REILLY引用了一个新词汇 WEB 2.0.但是WEB 2.0的标准却从来没有被清晰的定义过.对于有些人来说,一些看起来很COOL的网站就可以被称为WEB 2.0.将这些看起来很COOL的网站贴上WEB 2.0的标志似乎很流行.但是通常WEB 2.0是指一些面向公众的网站,人们可以相互的合作和交流并且在这些网站上面建立关于他们自身的页面.WIKI百科上有一片相当长的文章,或许能够为你明白这个词汇的真实意义给予一些帮助.
如今甚至出现了WEB 3.0,指那些semantic(不明)页面……好吧让我们停止玩名字的游戏,回到本书的主题上来:RIA.