基于Flash的RIA开发技术

时间:2022-09-30 07:50:42

基于Flash的RIA开发技术

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

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

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

图1 , 在线的visio

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

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

第五,版本兼容,大家都知道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,因为库都是共用的。

图2 /planer/,在线家居设计软件

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。

图3 基于RIA程序的架构

RIA对互联网投资的影响

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

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

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

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

上一篇:软件度量都该度个啥? 下一篇:服务不只在售后