RIA, AIR, Apollo, WPF, Silverlight 以及WPF/Silverlight /Flash的比较
RIA - Rich Internet Application,由当年MarcoMedia提出的富客户端概念,优点类似于微软的 SmartClient。
AIR - Adobe Intergrated Runtime ,收购MacroMedia之后,Adobe不能满足Flash现有的用法,设计了一个像.net framework一样,但主要专注于桌面表现与网络交互的平台:Apollo。换句话说,Apollo能够让Flash像Exe一样发布与运行。 Apollo计划与今年3月21日(嘿嘿,我生日)发布后,改名为商品名:AIR。
再说WFP与SilverLight:
微软一直在说,除了B/S架构系统以外,下一代的主流系统结构应该是智能客户端,也就是SmartClient,但是看到RIA的概念更好以后,微软主动抛弃了SmartClient,转向RIAs。很快推出了Avalon,继而转向了WPF,而后推出了WPF/E也就是现在silverlight,使得和Adobe开始了正面的竞争。
WPF和SilverLight均可以在浏览器上运行,但是SilverLight更轻量,它只需要安装一个浏览器插件,并且可以跨平台;而WPF的运行则需要客户端安装.net framework 3.0。
现在,很多人还搞不清楚,到底应该学SilverLight还是AIR,我也不清楚。
但是Adobe一直在应用开发领域跃跃欲试,却从来都是不得志,这次收购mm以后,也许是他厚积薄发的机会。
Silverlight:你需要知道的十件事情
简单的说,Silverlight是一个跨平台跨操作系统的插件,使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。目前发布的版本为 RC版,可用于Windows平台上的IE和Firefox浏览器,以及Mac OS X平台上的Firefox和Safari浏览器。
在公共发布版本来临之际,现在正是了解Silverlight的好时候,本文解释了微软的Silverlight 10个主要特点,希望能够帮助你更多了解Silverlight的好处和局限性。
本文作者Shawn Wildermuth是微软MVP(最有价值专家)(C#),Wildermuth Consulting Services的 创始人,已经从事 软件开发超过20年。目前Shawn正在全美做Silverlight的巡回授课,教人们如何在自己的项目中使用Silverlight。
1、Silverlight是跨平台/浏览器的
对于大部分开发团队,创建一个能够在所有流行的浏览器(包括IE、Firefox、Safari、Opera)上完美运行的Web站点是很具挑战性的事情。这不只是增加代码实现的问题,还要进行大量复杂的测试。
通常面对这个问题的解决方法有两个:仅支持少数最流行的浏览器或者增加质量保证人员的数量。
而Silverlight允许“一次开发,到处运行”,微软已经承诺会支持Windows和Mac上的Opera,而Silverlight的Linux版Moonlight也正在开发中。
2、Silverlight 1.1 才是好戏开场
对于目前的Silverlight 1.0 RC版,仍有很多组织在考虑是否开始在此平台上进行开发。Silverlight 1.0已经有了许多重要有趣的功能,但还有更多的精彩内容仍需到1.1版才会出现。
Silverlight 1.1(目前仍处于Alpha预览)初次开始支持.NET,包括了基本的.NET语言:C#和Visual Basic。而微软说,Silverlight 1.1将会带有.NET对动态语言的支持,例如Ruby、Python、动态VB和托管JScript。等到1.1正式发布,所有.NET语言的支持都会 加入近来,这等于给浏览器添加了.NET编译器。
3、Silverlight 使用开发者们已经掌握的技术
Silverlight由微软现有的一些技术创建而成,如XAML,JavaScript以及.NET技术。如果你已经很熟悉微软.NET和Web开发技术,这些都可以应用在Silverlight的开发中。
你选择开始新项目的Silverlight版本主要基于开发团队的技术方向。如果你的开发团队主要做ASP.NET 服务器端开发(主要是C#和 VB.NET),你就需要等待1.1的正式发布,如果你的团队专攻像JavaScript这类的客户端开发,Silverlight就正适合你。
4、Silverlight的用户界面使用标记语言——就像HTML
Silverlight使用XAML来进行用户界面 设计。你可能已经很熟悉另一种标记语言了:HTML。HTML文件是纯文本的,它只需要告诉浏览器如何渲染网页,XAML也是这样的,只不过,执行文本命令的不再是浏览器,而是Silverlight。
无论开发者在服务器端用什么工具进行怎样的开发,最后你总要创建动态的HTML页面。XAML是标记语言,因此你可以使用服务器端技术动态创建XAML,就像你的开发团队动态创建HTML一样。标记语言有所不同,但技术并未变化。
5、Silverlight和AJAX技术互为补充
网络是不断进化的。回到1990年代,所有人都告诉开发者应该把尽可能多的执行都放在服务器端,技术上没问题,但是这相当影响用户体验。现在AJAX已经广泛流行开来,把代码直接放置在浏览器中就可以有效改善用户体验,这方面最典型的代表就是Google Maps。
Silverlight也参照了这样的模型,允许在浏览器中创造更加丰富的用户界面,而采用AJAX和服务器端交换数据使Silverlight更加强大,结合了Silverlight丰富的用户界面和AJAX的异步数据传输,用户将得到非常舒适的交互体验。
6、Silverlight允许开发者和设计者协同工作
网络要求开发者们必须越来越多地考虑设计和美观问题,对用户的快速响应和直观的界面已经成为开发标准,这需要在开发中同时加入美术设计和用户体验规划。
然而,美术师和程序员使用完全不同的资源和工具。通常情况是,美术师把图片文件或者HTML框架发给开发者以整合应用程序代码,当设计做出更改,整合就没完没了地进行。
Silverlight能提供更好的开发模式。微软提供给Silverlight的工具包是一系列复杂工具的集合,例如Visual Studio,还有连接设计者的工具,成为Expression Studio。
对于Silverlight,主要的设计工具是Expression Blend,它可以按设计者们所熟知的方式创建XAML内容,使用起来和Adobe Illustrator或者Photoshop差不多。但不同之处在于Blend和开发者使用同样的 工程项目文件,XAML和JavaScript文件, 就像在Visual Studio中那样。当设计完成并修整好,不需要进行中间的整合过程,设计者就可以看到开发人员直接将其作为项目素材加入开发项目。这样做有助于设计者和 开发人员更加紧密地协同工作。
7、Silverlight将分包发布
Silverlight会分成多个数据包发送给浏览器,也就是说代码会分成一个或多个包(JavaScript文件,编译文件等等),设计也分成一个或多个包(XAML),以及其他文件(包括图片、字体、视频)。
刚开始习惯了Flash的单文件分发模式的开发者会不大理解为什么这样做。实际上,这是有好处的。分离的包比现在的Flash完整打包更有助于在服 务器端动态地创建内容,并按照标记语言自由组合。Silverlight也提供功能可以使用zip文件把所有XAML代码使用的内容打包给用户下载。
8、Silverlight是崭新的
在写就本文的时候,Silverlight 1.0为RC版,Silverlight 1.1则刚刚发布Alpha版,这项技术与类似的其他公司同类技术(尤其是Adobe的Flash和Flex)相比还不够成熟。Flash目前已经到了 9.0,它花了很长时间才达到现在的普及度,但这不是说Silverlight追不上来,微软在学习他人的经验和教训方面很有一手(可以参考一下Java 和.NET),当然这也不是绝对的。
Silverlight不是Windows Forms、Windows Presentation Foundation(WPF)、Java Applet或者Sharepoint的替代者,简单的说,如果你需要创建丰富的,优秀的,同时具备跨所有平台和操作系统的应用,那么 Silverlight正合适。
9、Silverlight XAML对照WPF XAML
要把XAML吹捧成为微软WPF的特长之处并不难,但是它实际上并没有看起来那么优秀,这一方面是由于WPF较低的采用率,另一方面就是WPF XAML和Silverlight XAML的区别了。
首先,WPF的采用率相对于其他客户端技术而言(例如Visual Basic 6和.NET的Windows Forms)比较低,因此XAML也基本上被荒废了。
第二,Silverlight XAML的语法比WPF XAML要简单一些,当然也会比WPF XAML弱一点,这既是好事也是坏事。Silverlight非常容易上手,但是从WPF转移而来的开发者可能会觉得有点不够用。
按我的感觉,较简洁的语法对于Silverlight实际上是最合适的,因为运行环境对于用户而言越精简越好。Silverlight并不需要把所 有东西都囊括进来,对于一个轻量级客户端而言没有这个必要。当然,要能给Silverlight增加更多的功能肯定不错,但是目前不能仅仅考虑这些,我们 需要谨慎考量加入多少,同时还能保持接口的简洁和高效。
10、Silverlight非常适合学习XAML
就象前一节所说的,Silverlight有着轻量级的XAML语法,这意味着它对于学习XAML的工作方式非常有益,引导那些正在学习XAML的 开发者创建简明清晰的代码,帮助他们快速理解Silverlight的功能特性,当他们开始投向WPF的XAML的时候,就会发现更多的功能和特性已经准 备就绪了。
相反的,如果开发者从WPF开始应用XAML,随后换到Silverlight的话就不得不扔掉许多特性。Silverlight的运行时库目前只有大约4.5MB,.NET 3.0运行时库(第一个支持WPF的)则接近30MB。
Silverlight是一个对公司、消费者、用户都大有裨益的新技术,看了上面这些,现在你可以决定该如何在你的Web战略中应用Silverlight了。
Silverlight与Flash区别
在学习Microsoft Silverlight技术过程中,我认为我们有必要近一步了解和明确相关概念。比如:Flash、ActiveX、Java Apple和Silverlight这些技术,都可以让我们在浏览器上展示出比HTML/CSS javascript的元素更丰富内容,那他们之间有什么本质上的区别呢?
首先,Silverlight是以XAML(扩展程序标记语言)为前台解释代码、然后在服务器端运行托管语言编写的应用程序,最后使用使用浏览器的Silverlght插件解释最终得到的XAML需要展示的内容显示到游览器中。Silverlight是WPF的在WEB应用的子集合,可以说基本上支持WPF大部分表现内容,包括:图片,2D图形,3D图形,动画,特效,文本,音频,视频,基本上包含概了目前所有的多媒体技术。
Adode Flash初期是一种失量动画技术,它是以浏览器为一个“媒介”,把FLASH动画或FLASHAS程序SWF文件整个下载到客户端的TempFiles文件夹中,然后由Flash插件解释运行。
Silverlight与Flash的区别:
从某种角度上看,Silverlight是根据用户发出的POST请求BACK给用户所需要的内容,而FLASH是把所有的内容全部都下载到客户端,但FLASH是以Stream(流)的方式下载,Download一部分就显示出来,这样用户不必等待全部内容下载完才能看到结果,与Silverlight的所需即所求的方式相比,似乎是一种被动的解决方案……,而且从这一点可以看出Silverlight是一种针对Web用户需求而产生的技术,侧重的是需求和供给,而Flash是更侧重展现方面,尽管FLASH可以实现部分下载,而且在ActionScript方面也推出了一个又一个的新版本,但这些技术似乎都是在“弥补”基础技术力量的不足的一种手段。
所以可以说:“Silverlight是以Web为对象而产生的技术,而Flash是以动画为对象而产生的技术”这样大家就清楚了它们的区别了吧。
ActiveX和Java Apple(JAVA小程序)是一种在浏览器中运行的小程序,它也是完全下载到客户端浏览器中的运行,所以存在这样那样的安全性的问题,使我们不能够完全信任的下载和使用,因为在看到运行结果之前,我们没有办法知道“它”要干什么事情,而且如果这个ActiveX或是Java Apple在服务器端更新了新版本的,那我们就必须整个重新下载,再安装新版本才能保证我们的客户端程序正常运行,汗……。
总的来看,目前FLASH和FLEX技术由于产生的时间早,版本更新周期长,所以用户群体相对比较多,而Silverlight还是在发展的初期阶段。但随着微软.NET技术的大力推广,Silverlight必然会成为下一代WEB展现技术的主力军。
本文引用地址:http://www.cyhd.net/document/2008/1201/article_1014.html