RIA技术详解



uRIA


Rich Internet Applications


RIA
可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。通过Rich Client技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序。




无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的机构和采用基于B/S架构的瘦客户端技术部署Web应用系统地机构来说,RIA确实提供了一种廉价的选择。


1
Macromedia Flash/Flex
Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据Macromedia称已经有98%以上的桌面系统的浏览器都安装了 Macromedia Flash Player。这使得以Macromedia Flash Player为客户端的RIA可以支持种类广泛的平台和设备。
Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。

2) Laszlo
Laszlo 是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和Javascript),运行在J2EE 应用服务器上的Laszlo平台会将其编译成SWF格式的文件并传输给客户端展示。从这点上来说,Laszlo的本质和Flex是一样的。Flash是任何浏览器都支持的展示形式,从而一举解决了浏览器之间的移植问题。而且,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。

3) Avalon
Microsoft的Avalon是下一版本的 Windows(代号"Longhorn")的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon定义了一个在 Longhorn中使用的新标记语言,其代号为"XAML"(可扩展应用程序标记语言)。可以使用XAML来定义文本、图像和控件的布局,程序代码可以直接嵌入到XAML中,也可以将它保留在一个单独的文件内。这与Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基于 Avalon的应用程序必须运行在Longhorn环境中,而Flex和Laszlo是不依赖于平台的,仅仅需要装有Flash播放器的浏览器即可。

4) Java SWT
Java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API:一个非常完整且非常复杂的图形API。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)和Java浏览器插件的低市场占有率。

5) XUL
XUL (念作"zool")是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

6) Bindows
Bindow 是用Javascript和DHTML开发的Web窗体框架。Javascript用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。Javascript在客户端的表现力不容置疑,利用Javascript几乎可以实现Windows应用程序所能干的大部分事情,XMLHTTP 一直以来常被用于实现"无刷新"的Web页面,它和 Javascript配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循"用多少去多少"的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行。

5. RIA未来的发展预测
就目前RIA的使用情况来说,离"RIA时代"还有很远的一段距离。今后几年时间内传统的Web应用程序和RIA将会共存。笔者认为真正具有实力担当起普及丰富客户端应用重任的只有基于Flash Player的Flash/Flex应用程序和Microsoft的基于Avalon的应用程序。短期时间内(估计2-3年时间)可能是 Flash/Flex应用程序在新兴的网络应用程序市场上占有主导地位。随着时间的推移,Flash/Flex应用程序的市场占有率可能会慢慢被基于 Avalon的应用程序所蚕食。当然,Flash Player和Flex以后也会不断推出新版本,相对于升级操作系统或安装Avalon运行环境,人们肯定更愿意升级Flash Player。Flash/Flex应用程序也有其本身固有的软肋,Flash Player的执行效率和对本地资源的操作限制是无法和Avalon相比的,相对于浏览器中的插件而言,Avalon的应用程序拥有更加广阔的可操作空间和更高的执行效率。
====================================================


不管我们今天称之为的RIA今后会不会成为主流应用程序,人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。有理由相信,拥有成熟技术和极高市场占有率的Flash客户端将会在RIA道路上越走越远。Microsoft未来的重量级武器:Avalon和Smart Client能否后来者居上让我们拭目以待。


Ria

介绍



 


 


一、定义



    RIA


Rich Internet Applications
的缩写,翻译成中文为丰富互联网应用程序。丰富互联网应用程序是将桌面应用程序的交互的用户体验与传统的
Web
应用的部署灵活性结合起来的网络应用程序。


    RIA

是集桌面应用程序的最佳用户界面功能与
Web
应用程序的普遍采用和快速、低成本布署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。
RIA
中的
Rich Client
(丰富客户端)提供可承载已编译客户端应用程序(以文件形式,用
HTTP
传递)的运行环境,客户端应用程序使用异步客户
/
服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的
Web
服务所驱动。结合了声音、视频和实时对话的综合通信技术使
RIA
具有前所未有的网上用户体验。


下图就是
RIA
的应用程序模型:



 


二、技术特性



  1


RIA

WebTop
)具有的桌面应用程序的特点包括:

    


1
)在消息确认和格式编排方面提供互动用户界面;

    


2
)在无刷新页面之下提供快捷的界面响应时间;

    


3
)提供通用的用户界面特性如拖放式(
drag and drop
)及在线和离线操作能力。


  2


RIA

WebTop
)具有的
Web
应用程序的特点包括:

    


1
)用户友好性和交互性:传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于
HTML
页面之上,而
HTML
是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求。
RIA
应用程序展现给用户的界面是像安装在本地桌面系统上的
GUI
程序界面,它有很多的复杂界面交互元素如树、菜单、网格等,用户的友好性和交互性大大增强。

    


2
)跨平台兼容性:
WebTop
客户端支持
flash
的浏览器,解析表示层服务器发来的
Flash
内容。
Flash
客户端


Internet
历史上最普及的软件,它在
98
%的浏览器上运行。目前主流操作系统
Windows

Linux
、苹果的
OS 10
上的浏览器
IE

Firefox

Netscape

Opera
都支持
 Flash
插件。甚至还可以在一些性能良好的网络终端设备,如:
PDA
、智能手机、机顶盒等上使用。

    


3
)一次加载,多次使用:目前的浏览器都用一种缓存机制,即将曾经访问过的网络资源放到硬盘上的缓存文件夹里。在用户下次访问这些网络资源时,浏览器只是向服务器寻问这些资源是否被修改,如果服务器回答没有被修改,那么浏览器会使用本地缓存的文件。在浏览器提供这种技术的背景下,
WebTop
的平台的前端一旦加载过一次,以后将不用从网络上下载。既降低了网络流量,又减轻了服务器的负担。

    


4
)客户端数据缓存功能:
RIA
技术是面向交互的,交互密集的应用意味着虽然用户向网络后台发送的请求的次数很多,但是所需要的数据量却相对较少。传统的网页技术只能将所需处理的数据分散的分布在每个页面中,随着页面的跳转,依次从后台将数据从服务器端取回。在这种情况下,用户即使完成一组简单的功能操作,浏览器端同常也需要向服务器发送多次数据请求,即增加了服务器的负载,又降低了用户的操作效率。
WebTop
平台基于
RIA
技术所赋予的强大客户端处理能力,可以缓存大量的客户端数据,提供了一定程度的离线操作功能。这样,在提高了用户交互效率的同时,还能较大程度的降低服务器的负载。

    


5
)高效的网络数据信息传输:客户端与服务器端主要采取
XML
数据


WebServices
两种方式交互,在这两种方式下,客户端和服务器端仅仅传递必要的数据信息,这与传统
HTML
网页的交互数据和显示信息混在一起传输的方式相比他大大降低了数据通讯量,降低了对网络带宽的要求,下面是两类技术的数据流量状况对比:



    

从上述数据中可以看出基于
RIA
技术的
WebTop
应用对于多次请求的处理情况能够有更平均更稳定的性能表现,而传统的
HTML
应用在业务复杂度提高时表现出极大的限制。

    


6
)多个应用同时工作:利用
WebTopp
平台,我们可以像在
PC
的桌面上一样,打开几个应用程序同时工作而互不干扰,也可以在不同的应用之间进行一些互操作。而在目前基于传统网页技术的应用程序中,如果存在多个应用,则几乎不可能做到这一点。

    


7
)快速的开发和部署:
WebTop
平台提供了一套
API


利用这些
API
可以快速开发基于
WebTop
的网络应用。并且通过配置文件就可以将这些应用部署到
WebTop
平台中,是非常灵活的开发方式。

    


8
)高度的个性化可配置性:传统的基于
web
的应用只能在显示风格上略作配置。然而
WebTop
平台可以最大限度的给予用户个性化的定制空间,用户不仅可以定义显示风格、还可以定义平台上应用的种类、个数、大小。

    


9
)具有通信包括实时互动的声音和图像的特点,充分利用了被广泛采纳的互联网标准。



三、应用价值




对于企业来说,选择
RIA
的好处在于:

  1


RIA
可以继续使用现有的应用程序模型(包括
J2EE

.NET
),因而无需大规模替换现有的
Web
应用程序。通过
Rich Client
技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序。

  2


RIA
可以帮助企业提供多元化的重要业务效益,包括产品提高销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等,具体表现如下:

    


1
)在线上更密切的接触、引导和聆听顾客,有如亲身和顾客打交道一般;以提高忠诚度、改善服务、加深顾客关系、突出公司形象或引导产品开发。

    


2
)利用声音、图像、文本和图形来创造引人入胜的网站,以制造线索、增加销量、简化通信和创造一个值得多次访问的独特在线体验。

    


3
)将一般网上复杂的过程如注册、配置或采购加以简化,以提高线索量、销量、预定、逗留在网站的时间和重复访问次数。

    


4
)将信息以清楚、创新、直觉和有效的方式向雇员、管理层和伙伴表达,以提高生产率、信息共享、决策和竞争优势。

    


5
)为基础网络服务提供一个吸引人兼高度互动的表达层,容许用户在线和离线操作。

    


6
)减少高通信量网站因高度页面刷新率的带宽成本。

    


7
)通过互联网渠道显著提高产品和服务销量。

    


8
)利用比其它网络科技较低的成本建设一个吸引人和高度互动的网站或应用。


 






基于FLASH的RIA技术开发

1、www.gliffy.com,在线的visio

在实现RIA的各种技术手段中,基于Flash的技术在某些方面表现得更加优异。对于一些开发者来说,或许它会更加适合。

目前,RIA技术有两个流派比较流行:Ajax和基于Flash的RIA(后面称为FlashRIA)。两者各有所长,但是在某些方面,FlashRIA表现出比Ajax更优越的特性。

第一、开发便捷性,目前应用比较多的FlashRIA平台有Adobe的Flex和OpenLaszlo,两者的目标都是要成为应用开发平台,所以从一开始就有大量的控件类库和面对对象的开发语言。这样RIA的开发就变得更加快速、容易,也能够开发出非常复杂的RIA程序。

第二、界面美观问题,FlashRIA是运行在Flash虚拟机上的,这就决定了他们天生具有很强的图形能力和动画功能,这一点是Ajax不能与之媲美的。在目前来看Ajax的RIA一般都是比较简洁的,在Ajax的RIA上加载大量的图片,然后又要处理功能逻辑,可能有些困难。相比呢,FlashRIA一般都有比较华丽的界面,可以采用大量的图片,程序绘制的过渡色等等,这些都是利用了Flash虚拟机图形引擎的强大功能。

第三,图形操作能力,还是因为Flash虚拟机,FlashRIA具有矢量图形操作功能,这点是Ajax所不具有的。所以目前拥有图形处理的RIA应用基本上都是采用FlashRIA技术的,比如www.gliffy.com。

第四,多媒体展现,Flash虚拟机还有丰富的媒体能力,可以和音频、视频做到无缝的结合,如医学专业视频网站www.medvv.com,就是采用这种方案,使信息、图片和视频紧密结合,并且能够无缝切换。

第五,版本兼容,大家都知道Ajax有浏览器版本兼容的问题,这个问题解决起来是很麻烦的。反观FlashRIA,因为都是基于Adobe的Flash虚拟机实现的,所以这个问题基本不存在。但是,Flash虚拟机也是有版本的,FlashRIA一般要求Flash版本在7以上,如果是Flash 6的话,就可能显示有问题。

第六,具体的开发细节,FlashRIA也有很大的优势。


跨域请求问题。做过Ajax开发的人都知道,XMLHttpRequest对象是不能做跨域请求的,这可能就会对多个网站组成的平台开发产生影响。但是Flash是可以做到跨域发送XML请求的,所以有些网站,为了做到跨域的请求,会在自己的网页里嵌入一个不能显示的Flash,来获得其它域名下网站的数据。


◆ Flash
文件是二进制的文件,这样就可对程序源代码进行保护,从某种意义上说这是一种安全机制。如果采用Ajax的话,我们就可以从浏览器缓存里得到所有的Ajax源代码。不过,FlashRIA如果要改一点源代码,是需要重新编译的,需要花点时间。


◆ Session
的问题,B/S编程都要考虑到Session问题,比如某些数据需要用户登陆才能拿到,而Session数据一般是放在Cookie里,随HTTP请求一起发送的。但是如果采用FlashRIA,它的HTTP请求是由Flash发送的,默认情况下是不会带Cookie的,所以需要在程序中自己编程设置HTTP请求的Header属性。


何时选择基于Flash的RIA



FlashRIA
应该是解决非常复杂的用户交户的优秀解决方案。从感性上说,如果开发人员用Ajax解决非常困难的话,就应该考虑采用FlashRIA。


从另外的一个可以量化的标准来说,可以看一看单位面积的软件界面的功能点数,如果功能点超过5的界面部分,就应该考虑使用FlashRIA。比如,如果是普通的网页,只有文字内容的话,那么它的单位面积功能点数为0,因为没有交户功能;如果有超级链接的话,功能点数为1,因为只有一个功能,点击后跳转。

但是传统的桌面软件单位面积的功能点是很多的,例如在日历软件中,每个日历方格都会有可点击,添加事件、拖放、显示、动态计算时间、双击时间显示事件详细信息、双击方格显示单日详细日程安排等功能。那么它的单位面积功能点数可能超过15,如果要将这样的软件移植到Web上,就应该采取FlashRIA了。

RIA
开发中的性能问题



1
.程序响应的速度。从Ajax的角度来说,写的不好Ajax程序会有造成延时,严重的会造成浏览器假死。对于FlashRIA来说,Flash虚拟机和浏览器不是运行在一个进程空间里,所以一般不会造成浏览器假死的问题。当然这些也与程序的优劣、浏览器的兼容有关系。


2
.应用程序的大小,这会影响程序加载的速度。Flex和Laszlo,因为要加载一些必须的库,所以即使是最简单的程序也会有几十K。而如果用Ajax的话,简单功能的代码,大小几乎可以忽略不计。但是,随着代码的增多,FlashRIA程序的大小增长却很缓慢。举个例子,用Laszlo分别作一个程序的两个部分,分别编译时都是300多K,最后整合在一起还是300多K,因为库都是共用的。


3
.内存和CPU的占用。还是因为库的问题,在程序比较小的情况下,FlashRIA一般会比Ajax占用更多的内存和CPU资源,在程序逐渐变大的情况下,两者会趋于一致。内存和CPU占用也是一个编程问题,比如控件的创建销毁,还有控件的数量都会影响内存和CPU占用。如果在编程中使用池技术、缓存技术等可以大大提高FlashRIA的性能,所以程序员的素质也是程序性能问题的关键因素。


RIA
对后台程序架构的影响



FlashRIA
基本上是通过XML和后台程序交互数据,和后台程序的实现方式无关。由于采用了RIA 技术,使后台的开发大大简化。


在传统页面开发上,比如采取Spring,strustsMVC架构,为了使界面丰富,必须在action返回一个非常复杂的PageModel,里面包含页面上各个部分要显示的动态数据,而且也要在action里考虑页面的流向问题,这个有时候还是非常复杂的。

采用RIA技术的网站可以将界面上的数据分别作几个请求,这样的话每个请求都很简单,一般只有一个查询。每个请求的发送时机由用户的操作而决定,没有相互间的影响。这样使请求和返回都相当简单。

同时,因为RIA程序在界面上会有比较复杂的业务逻辑,这样在RIA程序内部也会需要一个MVC的架构,我在这里称这种架构为双MVC架构。即在服务器端,领域模型及其关系POJO是Model,而为RIA程序产生的XML是View,Controller是Spring MVC的Controller。而在RIA程序内部,从服务器端得到的XML成为了数据Model,而这种数据不同的展现方式,比如图表或数据表格就成了View,中间控制这种数据显示转换的控制器就成为了Controller,如图3。

RIA
对互联网投资的影响



在为客户提供咨询的过程中,客户经常会问到使用RIA技术会造成Page View值下降,没法提高alexa 排名,然后会影响投资等等问题。这里就是对网站经营者面临的一个选择问题,是要做一个用户体验好的网站,还是追求几个没有实际意义的指标。从长期看,网站的价值还是要回归到真正用户价值才有意义,融资是手段不是目的,盈利才应是互联网经营者追求的目标。好的用户体验,才是吸引和留住用户的法宝。

可喜的是,互联网投资界也认识到了RIA对网站流量会产生影响。前几天,美国知名的互联网市场调查统计公司尼尔森表示,将放弃传统的按照点击量衡量网站广告价值的做法,全面转向用户停留时间这一标准。

RIA开发平台赋予你巨大的开发能力的时候,你会时常感觉到创意和设计能力的缺乏。目前国内的界面设计者,因为做过大量的网站设计,所以容易形成思维定势,所做的RIA设计总是有网页的痕迹,没有把RIA的优势能够发挥出来。反比国外优秀的RIA网站,对RIA的潜力挖掘的就透彻的多。

界面开发绝对不是一个简单的问题,那些软件界面做得好公司,对于界面有着很深的理解和投入。界面开发是要结合技术、算法、美工、设计、创意、经验、用户体验理解等多种元素的工程,现在一个能给广大用户用的软件的界面设计工作量可能要占到整个设计工作量70%。即使采用Flex或者Laszlo这种强大的FlashRIA开发平台,做界面编程依旧是需要艰苦努力的。就好像毛主席说的:“决定战争胜利的决不是一两件先进武器”。



2、www.coolinker.com/planer/,在线家居设计软件



3 基于RIA程序的架构

QQ:952920593   电话:13824374919


级别:新来的

积分:32

加好友 站内留言

看我还写了啥?

sHVDoZYfNal


游客

71.202.234.*






相关帖子

有问题 找小编