题外话:
国庆父母来杭,没空更新。国庆后,又碰上台风,kingda.org服务器挂了一天。没来的及赶上更新Flex 3 Beta 2和AIR Beta2相关更新。大家可以去Danger兄博客上看一看相关新闻。这次是回ion的帖子,说说我对Silverlight和Flash RIA的看法
(转载请注明来自www.kingda.org,谢谢)
这两天周末都要忙AS3天地会的门户和相关设置,忙过之后博客更新频率就会恢复正常,说说我对Flex 3的一些小发现,呵呵。平时我经常在AS3天地会上发帖回帖的,有空的兄弟去逛逛。
Flash与Silverlight的区别
简略讲述一下Silvrlight和Flash,XAML和MXML之间的区别。我对Silverlight用的不多,更不要谈深入的开发了。因此,本文只是一个Flash RIA开发者对于Silverlight和XAML的一些印象。如有错漏,回帖指出,好帖则奖励积分。
首先,要明确两点:Silverlight的前身就是WPF/E; WPF/E不是WPF,而是WPF的一个子集。WPF主要开发桌面应用程序,Silverlight主要用于开发Web客户端应用程序,是一个浏览器插件。
Silverlight主要使用XAML语言进行开发,但SilverLight 1.1开始支持JavaScript,C#,VB,Ruby以及Python等多种开发语言。相比Adobe AIR,显然它讨好的开发者群体更加多。但是我个人觉得AIR支持JavaScript, AS3等符合ECMAScript4的语言就可以了,没有必要再去趟更多的混水。虽然有中间语言(IL)的支持,但像微软这样一口气支持这么多的语言还是要花费大量人力的,我除了佩服之外,有着更多的怀疑和关注,看看日后的反映怎样。要知道,Adobe才支持Javascript, AS3,html开发AIR,已经被开发人员戏称为精神分裂症式的开发方式了,呵呵。
XAML和MXML
Silverlight中的XAML是WPF的XAML的一个简化了的子集,功能也要弱很多。 即使如此,也必须说,XAML比MXML要强大很多,它的理念也贯彻的更加彻底。
XAML可以描述画面结构。似乎MXML也是类似的描述界面的标记语言,但实际上XAML走的更远。XAML有点类似Adobe以前的SVG,但又包含着更深层次的含义。XAML是界面设计师和开发人员的共同语言,这是最爽的地方。也就是说,美工人员使用微软的Expression作出的美工设计图也是XAML语言的,那么开发者可以直接从这个代码开始继续开发,省去了大量的转换时间。显然,Adobe也注意到了这一点,这就是为什么最近推出"Thermo"来。Thermo是用于整合设计师和开发者,我们也可以把它理解成MXML版的Expression。这就是推出Thermo深层次原因,真正了解业界动态的人都会特别注意一个产品推出的动因和时机。
实际上,Silverlight和Flash RIA像是两个相互竞争的兄弟,不仅长得像,连实质都很类似。两个人你追我赶,互相取长补短。往往这个人,出了一点什么,另一个人很快赶上。这很好,这才是技术的良性竞争。我对Silverlight技术不抱有任何的恶感,我只是对微软的市场策略有些不爽。
哪个强一些?
Silverlight比Flash强?或者Flash 比Silverlight强?
这个问题没有必要。因为所有的回答都是针对当下的情况,而两个产品都是在不断发展。
前段时间Silverlight正式版刚出,轰轰烈烈宣传自己比Flash有多少多少优点,结果3,4个月不到,基本上这些比较优势都不存在了。
- Silverlight支持高清视频?
不错,是支持,但是只是微软自家的WMV9。众所周知,Flash Player 9 update(MovieStar)已经支持了行业标准的H.264 video和HE-AAC ,一下子将微软抛在后面。
- Silverlight支持GPU?
真正的谣言。Silverlight只是说支持硬件加速辅助系统,从未说支持GPU。WPF支持对GPU的调用,但这并不说明Silverlight(WPF/E)支持啊。估计谣言从这儿来的。相反,黑羽从某些小道消息知道,Flash Player 10(AStro)将会和GPU发生某种暧昧的关系。
- Silverlight是XML DOM型嵌入网页的,而不是二进制文件!
我都不知道这到底是优点呢,还是缺点。优点说,就是以XML形式描述了DOM结构,容易被外部Javascript调用,容易被搜索引擎搜录。那么我来分析分析:将应用程序的内部结构暴露给外部的脚本是否总是好的呢?符合封装的要求吗?被搜索引擎搜录,那也只是嵌在XAML里面的静态内容。RIA程序读取的动态内容还是搜不到啊。嵌在XAML里的静态内容又有多少价值呢?Google现在一样可以搜索到普通Flash swf里面的静态文本内容啊。
最后,二进制swf文件的执行效率从理论上来说肯定要比这样的XAML语言再通过Silverlight执行要快很多。不知现实如何,希望有人测测。
- Silverlight只是windows平台的,比不上AIR?
那是暂时的,目前Silverlight支持windows, 苹果。通过Mono项目,不久之后也会支持Linux平台。AIR的这方面优势只是暂时的。
(未完,将于一天内更新完毕)







Comments (10)
这个评价很客观,谢谢黑羽。呵呵
Posted by 风不惑 | October 13, 2007 8:51 AM
Posted on October 13, 2007 08:51
对了,顺便问一下黑羽,我学as的话,需要as2和as3兼学么,我在flash这边是菜鸟级的
Posted by 风不惑 | October 13, 2007 8:53 AM
Posted on October 13, 2007 08:53
微软的某些令人反感的宣传性文章是他的竞争对手写的
Posted by 86 | October 13, 2007 8:59 AM
Posted on October 13, 2007 08:59
这个问题黑羽在天地会里回答过的,我把地址贴给你吧
http://actionscript3.cn/bbs/thread-25-1-1.html
Posted by 清水 | October 13, 2007 11:30 AM
Posted on October 13, 2007 11:30
Microsoft Active Accessibility 是版权保护?
Posted by Cotton | October 13, 2007 4:18 PM
Posted on October 13, 2007 16:18
to Cotton:
弄错了,已经改正.谢谢.^^
Posted by 黑羽 | October 13, 2007 5:35 PM
Posted on October 13, 2007 17:35
silverlight和AIR比不太合适,和AIR差不多的微软平台应该是WPF,当然现在还不是一个重量级的,Adobe还没有一个类似.net Framework的Framework
Posted by ai829 | October 13, 2007 9:10 PM
Posted on October 13, 2007 21:10
to ai829:
是的,准确的来说应该是silverlight与flash player是一对。AIR和WPF是一对。呵呵,所以将标题取为了Flash RIA,既包括swf,也包括AIR。^^
Posted by 黑羽 | October 13, 2007 9:57 PM
Posted on October 13, 2007 21:57
WPF/E其实不是Silverlight的“前身”,只是过去的代号,就如同Apollo之于AIR一样。
“Silverlight是XML DOM型嵌入网页的,而不是二进制文件!”——Microsoft官方强调的好处是Search Engine Friendly,但我确实觉得这很搞笑。用过Silverlight的人都知道其引入方式,不是好像Flash那样一个然后指定地址,而是通过JavaScript动态加载到某个的,搜索引擎要识别JavaScript暂时而言是不可能的,因此也就不可能获得Silverlight的xaml文件URL,当然更不可能索引里面的问题内容。
至于执行效率,很早就有人做了测试,一个泡泡的碰撞模型,就是一个box里面很多bubble不想碰撞。JavaScript/Flash/Flex/Silverlight1.0/Silverlight1.1都有了,你搜索一下就能找到。Silverlight的xaml性能其实不会比Flash已经编译好的swf差多少,因为Silverlight完全可以好像.NET应用程序使用JIT一样,在运行前一刻才编译为本地代码,编译的版本存储在内存中然后执行,唯一的时间差就在于一开头编译这一刻。
“Silverlight只是windows平台的,比不上AIR?”——还是WPF/E的时候,就说明了Win和OSX都有,只是死对头Linux没有。后来Mono去做了Moonlight,还说21一天就做出了能够运行的原型,当然前提是这次他们得到了Microsoft的官方帮助。
Posted by Cat Chen | November 9, 2007 10:05 AM
Posted on November 9, 2007 10:05
faint...原来留言中的HTML标签不能自动编码并原样(纯文本)显示出来的啊?
上文更正一下:
不是好像Flash那样一个然后指定地址 => 不是好像Flash那样一object个然后指定地址
而是通过JavaScript动态加载到某个的 => 而是通过JavaScript动态加载到某个div的
Posted by Cat Chen | November 9, 2007 10:07 AM
Posted on November 9, 2007 10:07