flash已经出现很多年了,其应用大多局限在flash广告、flash小游戏和flash视频播放器等方面。在RIA方面的应用却很罕见,鉴于RIA的广阔前景,Adobe推出了Flex技术,希望能够在RIA方面有所作为。不久微软就推出了Silverlight与之抗衡。由于两者在技术上的相似性,所以Flex和Silverlight经常被拿来做比较(当然还有html5),这里仅对二者做简单对比,以便技术路线选择。
Flex优点:
1.Flex出自Adobe之手,而图形图像设计与处理,界面渲染这些都是Adobe的看家本领,自不必说,Flex在界面表现上非常优秀,无人能及。
2.完全实现跨浏览器、跨平台。
3.几乎所有浏览器上都安装了flashPlayer,flashPlayer的普及率是flex的巨大优势,用户基本上不会有安装插件的过程。
Flex缺点:
1.在应用开发领域,Adobe还显得十分陌生。ActionScript作为处理flash动画的脚本语言还是不错的,但是还是很难推动它进入主流程序开发语言,尤其是它及其怪异的语法,完全是Java、C#、Javascript的杂合体,虽然不影响表达逻辑,但真正的相信程序员们都会对此比较困惑。
2.Flex源于Flash技术,Flash在设计上定位于常规html页面的扩展和补充,能够方便的嵌入页面之中,但它对页面的控制能力很低,在系统级Flex开发上,无法支撑与页面及浏览器的交互性需求!也无法支撑多个Flex之间的交互性需求!
3. Flex Framework 本身存在一些设计缺陷,在设计上和实现上均存在不少bug,为开发带来极大困扰,降低开发效率。同时Framework高低版本之间无法完全兼容,控件库不够完善,Framework成熟度有待进一步提高。
4. 由于Flex实质上采用“客户端/服务器端”的通信模式,由于缺乏服务器端技术支撑,所以客户端与服务器端是异构的语言运行环境,因此在数据通信上存在较大局限性,客户端与服务器端在通信协议、数据格式解析上存在较大开销,全异步通信模式,在功能上耦合度较低,在数据格式上耦合较高,开发效率低,维护较为困难!
5.Flex被编译为二进制文件(包括构建界面的mxml),在后期无法对界面做灵活调整,任何修改均需要重新编译部署。
6. Flex开发环境 FlexBuilder基于Eclipse平台,但在代码编辑、语法检查、增量编译等方面均存在不足,致使开发效率较低。
Silverlight优点:
1.Silverlight基于WPF/E技术,界面表现十分出色,虽然比flex稍稍逊色,但已经完全可以满足需要。
2.Silverlight秉承了微软产品家族的一贯风格,编程语言、编辑器、设计器、系统部署调试都提供了集成解决方案,简单易用。
3.Silverlight使用C#作为开发语言,在浏览器中可以与页面上的html和javascript跨语言无缝互操作,实在很让人赞叹!
4.Silverlight可以以二进制或xaml标签的方式发布,维护上更加方便。
5.在服务器端有强大的技术支撑,在客户端-服务器端通信方面十分方便。
Silverlight缺点:
1.Silverlight可以跨浏览器,但是不能直接跨操作系统平台(有了moonlight,跨平台也不是太大问题)。
2.Silverlight普及率低,一般在应用之前需要下载安装插件。
3.推出较晚,大规模应用开发还不是很多。
综上比较可以看出,Flex的优势基本上在界面表现上,而劣势主要集中在应用开发上;而Silverlight的优势在于微软的强大技术支撑,应用开发十分强大,Flex的缺点在Silverlight这里基本上都成了优点,而Silverlight缺点却不十分明显。所以对于程序员来讲,二者高下立分,当然在做选择时也要考虑到已有的技术积累,这也是不可忽略的因素之一。
当然,日后的RIA的主角还是html5,Silverlight会逐渐兴起,并在特定领域广泛应用,flex也会在图形图像渲染展示领域长期存在,至于Flex是否能够续写Flash的辉煌,个人持悲观态度。