2010-10-07 16:00 by jv9
互联网经历过Web 2.0的洗礼后,网络用户不仅仅局限于简单的交互功能,而对网络产品的体验性要求越来越高,对此RIA(Rich Internet Application)技术随之而来。目前RIA技术的焦点主要集中在微软的Silverlight技术和Adobe的Flash技术,相对来说,Silverlight比Flash晚推出数年,但是其发展势头和发展方向一直和Flash遥相呼应。近些日子,在CSDN论坛和银光中国网专注Silverlight的QQ群,经常会看到一些新人的提问,什么情况下使用Silverlight技术,而什么情况下使用Flash技术呢? 本文将对此进行简单的对比和描述,但是在正文开始前,我想提前说一下,文章中没有对某一门技术进行抨击或者贬低的言语,只是提出个人观点,供大家参考,如果您有不同的看法,欢迎留言讨论。
Flash 10.1 & AIR2
Flash的开发工具,Adobe的Flash开发平台提供开源的Flex SDK,另外提供免费Flex编译器,IDE开发工具是使用基于Eclipse IDE的Flash Builder。其运行环境是基于浏览器的Flash Player和Adobe的AIR,该运行环境支持Windows,Mac和Linux平台,并且支持RIA应用直接安装到桌面,其运行效果和功能与本地应用相同。 另外,Adobe利用其自身强大的设计开发工具背景,提供一系列Flash开发辅助工具,为开发人员或者美工设计人员提供强大的并且专业的交互设计支持,这里值得一提的是Flash Catalyst,该软件快速的设计出专业的Flash用户界面和行为脚本。
按照目前市场占有率分析,Flash仍旧具有较大的用户群,这不仅仅是归功于Flash Player的普及,Flash本身强大的Digital权限管理,流媒体功能,以及Flash Access 2.0数据下载等功能也是功不可没。在远程网络方面,Flash支持SOAP和REST Web Services,另外支持ASP.NET,J2EE,PHP,BlazeDS和ColdFusion等不同语言平台的数据服务。在开发语言上,ActionScript 3从早期的脚本语言发展到现在面向对象,事件驱动的强大的开发语言,也是一个强大的优势。新版的AIR 2发布后,Adobe将重心放在桌面应用开发上,其强大的调用本地代码类库的功能使其应用功能更为强大,AIR2的桌面应用可调用.Net或者Java的已有类库,同时该桌面应用支持UDP,IPv6等网络协议。作为Windows客户端,其强大的DRM控制可以提供流媒体数字版权控制。
Silverlight 4
微软的Silverlight开发平台同样为开发人员提供专用的运行环境和SDK,其IDE开发工具是Visual Studio系列,同样,微软也提供了免费开发工具Visual Web Developer Express版本,Silverlight应用也是基于浏览器Silverlight Runtime,该运行环境直接Windows,Mac和Linux平台,Silverlight 3版本以后,支持Out-of-Browser模式应用,可将Silverlight应用作为桌面应用方式安装到本地运行。不仅如此,微软将F#运行环境同时集成到Silverlight中,这样可以轻松开发出Silverlight和基于Ajax技术的应用。对于辅助设计软件,微软提供了Expression Studio系列产品,该产品包括Blend,Design,Encoder等系列辅助设计工具,用于Silverlight项目布局,素材,动画等设计功能,其中需要特别说明的是Expression Blend,该工具和Flash Catalyst很相似,辅助设计Silverlight项目交互界面,另外Blend和Visual Studio可以实现无缝结合,减轻了开发人员和设计人员的后期项目综合的负担。
对于Silverlight 4的新功能介绍和其优势,这里我不在赘述,大家可以参考这篇文章“Silverlight 4正式版”
在对比过Silverlight和Flash后,大家也许能发现,微软Silverlight中时常会发现许多Flash的影子,而在有了Flash的基础上,似乎更容易为Silverlight做出评估。这里我使用一个简单的表格进行对比:
Silverlight 4 | Flash 10.1/AIR 2 | |
客户端平台支持 | Silverlight 4支持运行在Windows XP SP3,Windows 7/Vista,Windows Server 2003 SP2, | Flash支持运行在Windows XP SP3, Windows 7/Vista, Mac OS X, and Linux (Fedora Core 12, Ubuntu 9.10, OpenSuse 11.2); Flash Player 10.1 for Android. 当前仍旧没有支持64位Windows系统的Flash Player。 |
开发IDE工具 | 主要开发工具是Visual Studio 2010,需要安装Silverlight 4 developer tools 和相关SDK,以及WCF RIA Services 1.0安装包。可使用WCF RIA Services开发模板,创建n-Tier数据存储应用。具有优秀的Debug功能。同时具有强大的Silverlight Toolkit开发工具包支持。 | 主要开发工具Flash Builder可以绑定开发Flash和AIR应用。但是代码转换过程需要另外的辅助工具BlazeDS或者LiveCycle支持。ActionScript的Debug功能相对弱于Visual Studio。 |
UI设计 | 主要设计工具Expression Blend 4,该工具不仅提供UI控制,还可以进行动画设计以及行为代码设计。该工具同时包含Xaml代码设计界面和后台代码设计界面。该工具与Visual Studio2010无缝结合,使设计和代码后期综合变的轻松异常。另外Visual Studio 2010同时支持Silverlight UI设计。 | Flash Catalyst是Flash主要设计工具,与CS5设计工具系列无缝结合,可以轻松导入项目。但是其他设计工具修改文件时,不能在Flash Catalyst中重新打开,作为设计工具,这点略逊与微软设计工具。 |
媒体编码 | 支持音频/视频格式:WMV/WMA, H.264, MP3, AAC。 | 支持音频/视频格式:Sorenson Spark, ON2 VP6, H.264, F4V. ADPCM, MP3, AAC, Speex. |
数字版权(DRM) | 支持Windows Media Digital Rights Management 10 (WMDRM 10)和Microsoft PlayReady DRM加密流媒体。目前暂时不支持Linux客户端。 | Flash Access 2通过Flash或者AIR客户端提供内容保护和设备存取安全控制。相对来说其验证机制和开发规则较为规范。支持HDCP标识。支持Flash Media服务平台和Http动态数据流。 |
这样看来应该更容易帮助大家理解和认识Silverlight和Flash这两个技术的不同和相同点。
那么具体到项目,该如何取舍两门技术呢?
首先我们需要客观的说,Flash在RIA技术中仍旧处于龙头地位,终归Flash Player具有全球浏览器93%的装机量作为支持,为Flash提供了非常广的应用范围。
但是,我们也不得不承认Silverlight发展速度的迅速,从Silverlight 1.0到4.0,我们目睹着Silverlight在一天天的进步,逐渐变的强大,而客户群也在稳定增长当中。终归微软仍旧占据浏览器市场的50%份量,作为浏览器插件Silverlight也是具有相当大的潜在力量。
个人观点,从微软和Adobe两个公司的发展历史来看,微软的产品更注重于开发人员,而Adobe的产品偏向于设计人员。这也就是说,在项目中,如果需要大量的程序编码和数据存取操作,特别是基于Windows平台的应用,Silverlight自然是首选。而如果项目中涉及少量的服务调用,需要展现大量的图形图像效果,或者是说在开发过程中,美工设计部分属于重点,则推荐使用Adobe的Flash,终归Adobe的设计工具在业界一直作为首选。
从目前来看未来Flash和Silverlight的竞争,也许是在移动平台上的表现。Flash刚被苹果解除封杀,目前有望第一步占领iPhone和iPad平台,而Silverlight已经被Windows Phone 7所支持,下周12号Windows Phone 7正式发布,市场占有率还有待观望。不过两者所需抢占的下一个移动平台主战场应该是Android平台,终归Android平台已经被不少手机平台所支持,作为开源平台,同时也被大部分应用开发厂商关注。
最后附上InfoWorld.Com对Flash10.1/AIR2和Silverlight 4各项测试评分表,供大家参考: