深入理解RIA

还在远古刀耕火种的年代,当人类意识到鸟能在天空中是因为有双翼,我们的先祖便在石头上为自己刻上了翅膀;从庄子的《逍遥游》到今天的《黑客帝国》、《哈里波特》,我们人类都幻想着能把现实生活放入另一个空间,在那个空间里我们能“水击三千里,抟扶摇而上者九万里”。而计算机和互联网的出现,给了我们发挥的想象力的一个理想的平台,人类的创造力到了极大的激发,鼠标一点,遨游何止九万里!

而理解人类在互联网中的雄心,则是我们今天讨论RIA的前提。从计算机存在开始,人类就一直凭着我们的想象力、用对内在自由的憧憬和灵感不懈的创造,建造出了今天这个神奇的Internet。但毫无疑问,和我们在互联网这个虚拟空间中构建完整的自由的王国的理想相比,今天的一切(物理基础、技术等等)微不足道,只是一个起点。人类的终极目标是在互联网中构建一个容纳所有现实空间,并且能超越现实,承载起我们人类无尽想象力的二进制空间,在这个空间中,我们可以“乘云气,御飞龙,而游乎四海之外”。

一 接口的责任

我们幻想能在互联网上建立壮丽的理想王国,但拥有梦想是一种智力,而实行梦想需要的则是能力,我们需要的是更多的设备、更多的节点、更高效的网络、更优秀的技术。而接口程序,作为人类与网络空间交互的结合点,承担的责任则不仅仅是转换数字流,更需要完成人类对虚拟空间的体验。

接口程序,有如在T台走秀的模特展现出其所着的时装的特质与风情一样,需要拥有把一堆碎布拼接出来的物件变成人类美好感知的这种展现能力。就像我们通过艺术家的作品去理解其本人,通过残存的古迹去触摸古人的生活及思想一样,接口程序是我们感知互联网空间的最重要的途径,它需要做的不仅是实现某种功能,更需要按人类的需求去表现那个隐藏在背后的二进制空间的一切,健壮、灵敏、智能、或简单直接,或华丽堂皇。

二 RIA的概念

RIA 对应的完整的英文是 Rich Internet Application, 按字面翻译就是:丰富的互联网程序。据我所知RIA并没有严格的标准来定义其含义,要理解RIA是什么,我们不妨罗唆一点,从Internet的最主要接口 "WEB"的前世今生来说起。

在互联网开始诞生的时候,人们几乎在网络中“茹毛饮血”的年代,大家都在琢磨怎么把一些信息能通过网络的主动发布出去。就是出于这个共享信息的简单的目的,有个叫Tim Berners-Lee的英国小伙,他创建了一种快速小型超文本语言(HTML)实现信息与信息的连接,当时超文本技术已经有很多种,这个小伙的杰出之处指出在于设计出了用统一资源定位技术(URI)实现信息的精确定位,用新的应用层协议(HTTP)实现分布式的信息共享,这就是WEB的来源,这个当年的小伙几年前也因为他的贡献被英国女王授与了爵士爵位。

然而问题在于虽然历经修改、完善,这个最早之后几十个标签的HTML还是太简单了,无法承担起我们人类在互联网上自由展现想象力的重任。因此,在有了 HTML之后的十几年中,众多的Internet相关的技术纷纷出现,从DHTML、XML到Java Applet、SWT、AJAX、Flash等等,这些技术有些是平行发展,有些是一脉相承,但毫无例外的都是追求共同目标:更加强大高效、反应更加灵敏和更精彩的可视化特性的互联网程序。

技术发展的同时,我们人类对互联网应用与现实空间结合方面也在不断的探索和深化,在经历过2001年的网络经济泡沫的短暂低谷之后,大概从2004年开始 WEB2.0的概念被人们所挖掘和推广。WEB2.0虽然也涉及到了众多的具体技术,但更多是还是一些理念,其中有一条就是“Promises rich user experience”,这也是我们人类明确的把用户体验作为互联网程序的目标(虽然从一开始大家就是这么做的),“体验至上”不再是一个愿望,而成了一项强化的指标。就是说,RIA就是这么一种互联网应用程序:它能满足人们未来的体验,用和过去不同的方式实现功能、展现数据,我们也可以将其理解为下一代互联网的应用程序。

还需要提一下,在互联网程序兴起的过程中,传统的桌面程序逐渐的也迁移到互联网上,这就是上个世纪末开始的盛极一时的软件从C/S到B/S的转变。当时我们把传统的桌面软件叫做富客户端软件,把基于浏览器的程序叫做瘦客户端软件,那么需要澄清的是C/S的那种富客户端程序并不是RIA程序,千万不要把"Rich client"等同于"Rich experience",而RIA的核心则是"Rich experience",这个"Rich experience"不仅仅代表的是界面(UI)体验,这个我们后面还会进行讨论。

三 什么样的RIA?

如果只把RIA看成一种概念,世间一切微言妙语皆是佛法,凡是能实现"Rich User Experience"的Internet程序,都可以看成RIA的程序。但如果真若是这样定义的话,界定什么是RIA什么不是就比较困难了。RIA到底应该是个什么样的,最早提出RIA概念的Macromedia(如今被Adobe收购了)的表述如下:

A rich Internet application (RIA) is an entirely new kind of web experience that is engaging, interactive, lightweight, and flexible. RIAs offer the flexibility and ease of use of an intelligent desktop application, and add the broad reach of traditional web applications.

前一句是针对Web程序本身的,就不多分析了,让我们来看看后一句,直译过来就是“RIAs 提供了一种弹性,客户可以轻松的在大量传统的Web程序上,使用智能的桌面程序”。略有一点抽象, 我罗唆点用直白一点的方式来说一下。到目前为止,传统桌面程序和互联网程序都有比较明显的区别,各有各的地盘。桌面程序往往功能强大、具备良好的交互性,界面丰富、响应时间短;而Web程序的优势在于用户的零部署安装、浏览器连通着的无限的咨询信息;一方面,在经历了C/S转B/S的重新洗牌后,桌面程序和互联网程序二者的分工也逐渐明确;另一方面,桌面程序也在想方设法的去利用互联网,分享互联网带来的好处,比如每日连线升级的杀毒软件,定时从网站上下载新闻的RSS阅读器等等。那么很自然的,我们就希望能有新的开发方式,开发出来的软件能同时拥有桌面软件和WEB软件的优点。这就是RIA的目标:用某种技术开发出一个程序,不需要什么额外的工作,就能在桌面环境里做运行,又能部署到互联网上,这个程序还需要继承桌面软件和WEB软件的现有优点。

简单的说,需要通过RIA去抹掉现有的桌面程序和WEB程序的界限。

我们可以看看Adobe官方提供的两个简单的例子,感受一下基于Flash的RIA是什么样:

http://examples.adobe.com/flex2/inproduct/sdk/restaurant/finder.html
http://examples.adobe.com/flex2/inproduct/sdk/photoviewer/PhotoViewer.html

对于RIA程序应当拥有什么样的具体特性,我还没有发现为大家所一致认可的说法。对一些现有的具体技术实现的程序是不是RIA目前也存在很多争论。所以在这里我也就只列一下提的比较多的RIA的特点,不做过多的介绍,以免说的不对,误导大家。

良好的用户体验, 响应速度快和丰富的用户界面 基于互联网的开放标准进行数据传输 运行时快速高效 能整合多种媒体格式 丰富的组件,基于事件驱动,能进行快速开发 支持联机/离线的数据传输 良好的兼容性,能在多种平台下运行

这里指出需要注意的几条:

1. Macromedia提出并推出用于了实现RIA的开发平台,但RIA不是专指Adobe(Macromedia)的那套开发体系,如果真要那么叫的话,可以称之为 Flash RIA(国外一些人喜欢这么说)。
2. RIA目前在很多地方既指富互联网应用系统,又指富互联网应用系统的开发技术,我们要注意区别。
3. 一般的互联网上的富客户端程序(包括拥有联机升级功能的桌面程序)并不能直接被看成RIA程序,RIA程序应当满足很多Internet运行的特点,比如功能要足够强大、跨平台、统一部署等等。
4. 至少从目前看,RIA一般还不能用某个单一的技术来实现,基本都是一些技术的综合应用,并且其实现的这种"Rich experience"也是基本是相对与过去基于HTML实现的程序而言的;不易把RIA的思想无限扩大,要知道人类对感观的追求可是永无止境的。
我们可以期待在经过一段时间发展和总结之后,人们能对RIA程序的应该拥有的特性达成明确的共识,并能制定统一的标准,这样将来我们能把RIA落实为一个技术词汇,从而明确的界定RIA在人类于互联网中追逐梦想的征途中所处的阶段,评价它起的作用。

四 当前的RIA开发技术简介

正如前面所说,从有WEB的第一天起,我们就在追求用更美更绚丽的方式去展现内容,而RIA应当有些什么硬指标目前也没有定论,所以如今号称能实现RIA的技术的非常的多。主流的RIA开发技术大部分的原理都很相似,基本都是基于XML布局来做UI,通过丰富的组件,同时把更多的UI展现的工作交给客户端,尽可能的减少数据通讯的量来获取更短的响应时间。下面谈谈我对一些有一定影响力的RIA开发技术的看法:

1) Adobe Flash/Flex

Flash就不需要介绍了,互联网中的老资格了,UI展现能力没的说,还一直在与时俱进。Flex是Adobe推出的创建并发布RIA的开发平台,最终是要把程序发布成Flash,从而一举解决了浏览器之间的移植问题。Flex使用MXML进行布局,用它自己的类似Javascript的Actionscript语言控制逻辑,目前是Flex的版本是 3.0。根据我直接的使用,Flex就像当年的VB,非常的不错;此外,Adobe将要推出Apollo的东东,能实现更高层次的RIA开发及运行支持,值得期待。我的感觉Apollo正在做一些当年Java承诺过却没有做到的事情,到底Apollo能不能做到,还需要时间去考验。

2) Laszlo
  
Laszlo 也是一个有多年历史的开源的RIA开发环境了,它就显得更实在一点。Laszlo平台主要目的是在目前主流的一些技术的基础上来实现RIA,它用的是名为LZX的描述语言,LZX整合了XML和Javascript,这样很多程序员都可以用最小的代价去进行RIA开放。Laszlo平台运行在J2EE 应用服务器上,也是把程序发布成SWF格式的文件,从这点上来说,Laszlo的本质和Flex是一样的。Laszlo还打算将LZX编译成Java或.NET本地代码,从而提高效率,跨大覆盖面。

3) Microsoft WPF/Expression
  
Microsoft的Windows Presentation Foundation(WPF)是Vista的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon使用的布局语言是"XAML"(可扩展应用程序标记语言),用C#进行编程。微软去年年末推出了对应的开发工具MS Expression Studio, 一度引起轰动。其实WPF和这与Flex及Laszlo都原理都是如出一辙,不过WPF的程序毫无疑问目前只能在MS的平台上(严格说是只能在Vista上)运行。

4) Java SWT/JSF
 
Java是互联网里的霸主,RIA的这套理念的很多东西Java早就告诉过世人了,可遗憾的是在展现方面Java一直修不成正果,从最早的Servlet到JSP Tag, 几乎一度让人从失望到绝望。Java基础类(JFC/Swing)中的用户界面组件就不用说了,这两年开始流行的SWT工具箱,一样基于XML布局的JDNC,拉上AJAX救火的JSF,也都远没有Flex、WPF这些新锐来的朝气蓬勃; Java固有的复杂性高、效率偏低、开发投入高等问题,都阻碍了Java在RIA中的发展。注意我不是说Java不行,Flex、Laszlo都是要运行在J2EE上的,只不过在展现层Java是日落西山,如果没有重大的技术革新,沦为配角是早晚的事。

5) AJAX:

虽然有部分人认为AJAX这种新瓶装老酒的东西不能划入RIA的开发技术中,我还是要在这里把它列出来,因为有众多的AJAX的支持者都认为AJAX能很好的实现RIA程序,比如《Pragmatic Ajax - A Web 2.0 Primer》的第一章的标题就是《Building Rich Internet Application With Ajax》。

我曾经看到过一篇流传很广的文章,是国外一个没有用AJAX实际做过开发的人写给他们公司的一份调研报告,说的是AJAX是实现RIA的最好方法,原因是AJAX是在现有这些技术基础上做RIA最简便的方法,成本最低。他说的也有一点道理,代表了很多人想法。但事实是不是这样,AJAX真的简单,开发成本低么?我想每个用过AJAX做开发的人都有自己的答案。

对我来说,我相信对RIA来说AJAX不是最好的选择,抛开AJAX开放的复杂度和能实现的效果的局限性不说,在AJAX中Javascript引起的兼容性问题几乎是需要用穷举法去解决的,效果可想而知。举个例子:一块钢铁,原来是做成刀和矛去杀敌,后来加上火药成了枪弹,看上去威力大多了;可你这还是站在用钢铁杀人的思维上,倘若直接用超声波去对付敌人,就直接能杀人于无形,一块铁片都不需要用。HTML就好比这种钢铁,日常打把刀切菜是少不了它,有些时候需要大场面的时候,就需要用用超声波、用气流,甚至是原子弹解决问题,建造超声波武器、原子弹是很难,不过用他们,同样就是按一下按钮的事。

6) XUL
  
XUL(发音发成"zool")扩展用户界面语言。XUL是一个老家伙了,UI基于XML布局的思想就是从它来的,它来自于Mozilla的开放源码项目。XUL是对html的扩展,完全兼容于html,当然也就支持Javascript。XUL实现了完整、强大的图形用户界面设计功能,实际上mazilla整个就是基于XUL的。XUL到底怎么样,有多大影响力,我没有研究过,不敢妄言,好像国外还是比较认可它的。

这里我斗胆点评了一些RIA的开发技术,RIA的开发技术还有很多,大家自己要有看好的可以来补充,此外本人对RIA的认识有限,说的不妥之处还请朋友们不吝赐教。

五 不需要预测的未来

RIA会有将来会成为互联网的主流么?这是一个只有一个答案的问题,那就是“会”。不需要去纠缠那些技术细节,你至少可以相信HTML及其派生出来那些技术不能让对体验效果的追求永无止境、又十分挑剔的我们满意,那么能带给我们耳目一新的感觉的RIA有什么理由不成为主流? Microsoft和Adobe已经磨刀霍霍,准备在RIA的时代里挑大梁了,我们可别光坐着看热闹。

RIA将要取代HTML? 我想我们还在用宋朝就发明了的纸,就能说明回答这个问题,如同我在前面举的例子,如果有一天现代战争不需要用钢铁去杀人了,我们或许还需要用它去切菜。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值